ACL (Access Control List) 

📌 네트워크 리소스나 데이터에 대한 접근 권한을 제어하는 규칙의 목록입니다.

  • AWS에서 ACL은 S3와 VPC를 중심으로 사용되며, 각각 다른 역할을 수행합니다.

AWS에서의 ACL 종류

  1. S3 ACL
    • S3 버킷 및 객체에 대한 접근 권한을 설정.
    • 리소스 수준에서 권한을 제어.
  2. 네트워크 ACL (NACL, Network ACL)
    • VPC 내 서브넷의 네트워크 트래픽을 허용하거나 거부하는 규칙.

S3 ACL (Access Control List)

S3 ACL의 역할

  • S3 버킷이나 객체(파일)에 대한 읽기/쓰기 권한을 설정.
  • 특정 사용자나 그룹(예: AWS 계정, 익명 사용자)에게 권한 부여.

S3 ACL의 주요 특징

  1. 리소스 수준에서 동작
    • ACL은 S3 버킷 전체 또는 개별 객체에 대해 설정 가능.
  2. 권한 부여 대상 (Grantee)
    • 특정 AWS 계정.
    • 익명 사용자(인터넷에 공개).
    • AWS 서비스 (예: CloudFront).
  3. 권한 유형
    • READ: 읽기 권한 (예: 객체 다운로드).
    • WRITE: 쓰기 권한 (예: 객체 업로드).
    • FULL_CONTROL: 전체 권한.

예시

  • S3 버킷의 모든 객체를 익명 사용자에게 읽기 권한 부여:
    {
      "Grantee": {
        "Type": "Group",
        "URI": "http://acs.amazonaws.com/groups/global/AllUsers"
      },
      "Permission": "READ"
    }
    

S3 ACL과 버킷 정책의 비교

특징 S3 ACL 버킷 정책
설정 수준 버킷 및 개별 객체 버킷 수준에서 설정 가능
사용 목적 간단한 권한 제어 복잡하고 세부적인 권한 제어
주로 사용 대상 개별 객체 권한 관리 특정 사용자 또는 그룹에 대한 정책 설정

네트워크 ACL (NACL)

NACL의 역할

  • VPC 내 서브넷에 출입하는 **네트워크 트래픽(인바운드/아웃바운드)**을 제어.
  • 허용/거부 규칙을 설정하여 특정 트래픽을 차단하거나 허용.

NACL의 주요 특징

  1. 서브넷 수준에서 동작
    • NACL은 VPC 내에서 특정 서브넷에 대해 트래픽 제어를 수행.
  2. 규칙 번호에 따른 순서
    • 각 규칙은 번호로 정의되며, 번호가 낮은 규칙부터 우선 적용.
  3. 기본 동작
    • 새로 생성된 NACL은 모든 트래픽을 명시적으로 차단.
  4. 스테이트리스(Stateless)
    • 스테이트리스: 요청 트래픽과 응답 트래픽을 개별적으로 처리.
    • 예: 인바운드 규칙에 허용하더라도, 아웃바운드 규칙에 허용하지 않으면 응답이 차단됨.

NACL 규칙 구성 요소

구성 요소 설명
Rule Number 규칙의 우선순위를 결정 (숫자가 낮을수록 우선 적용).
Protocol 트래픽의 프로토콜 지정 (예: TCP, UDP, ICMP).
Port Range 허용하거나 거부할 포트 범위 (예: 80, 443).
Source/Destination 트래픽의 출발지 또는 목적지 IP 주소.
Allow/Deny 트래픽을 허용(ALLOW)하거나 거부(DENY).

예시

  • 모든 IP 주소에서 서브넷으로 오는 HTTP(포트 80) 트래픽 허용:
    Rule #100 | Protocol: TCP | Port Range: 80 | Source: 0.0.0.0/0 | Action: ALLOW
    

NACL과 보안 그룹의 비교

특징  네트워크 ACL 보안 그룹
적용 범위 서브넷 수준 인스턴스 수준
트래픽 방향 인바운드/아웃바운드 개별 설정 상태 기반(Stateful), 요청-응답 자동 허용
동작 방식 스테이트리스 (Stateless) 상태 기반(Stateful)
우선순위 규칙 번호 순서대로 처리 모든 규칙 평가 후 허용 트래픽만 통과

ACL의 주요 사용 사례

  1. S3 ACL
    • 정적 웹사이트 호스팅: 특정 버킷의 모든 객체를 공개하여 읽기 가능하도록 설정.
    • 버킷 내 특정 객체 보호: 특정 사용자만 읽거나 쓸 수 있도록 제한.
  2. 네트워크 ACL
    • 서브넷 보호: 서브넷으로 들어오는 비정상적인 트래픽 차단.
    • IP 차단: 특정 IP 주소나 범위에서의 접근을 거부.

쉽게 이해하기

  • S3 ACL:
    S3에 저장된 파일에 대해 누가 읽고, 쓸 수 있는지를 정하는 권한 설정.
    예: 특정 사용자는 파일 읽기만 가능, 다른 사용자는 파일 수정 가능.
  • 네트워크 ACL:
    네트워크를 출입하는 트래픽을 통과시킬지, 차단할지를 정하는 규칙.
    예: 서브넷에 특정 IP에서만 접근 허용, 나머지는 차단.

 

+ Recent posts