ACL (Access Control List)
📌 네트워크 리소스나 데이터에 대한 접근 권한을 제어하는 규칙의 목록입니다.
- AWS에서 ACL은 S3와 VPC를 중심으로 사용되며, 각각 다른 역할을 수행합니다.
AWS에서의 ACL 종류
- S3 ACL
- S3 버킷 및 객체에 대한 접근 권한을 설정.
- 리소스 수준에서 권한을 제어.
- 네트워크 ACL (NACL, Network ACL)
- VPC 내 서브넷의 네트워크 트래픽을 허용하거나 거부하는 규칙.
S3 ACL (Access Control List)
S3 ACL의 역할
- S3 버킷이나 객체(파일)에 대한 읽기/쓰기 권한을 설정.
- 특정 사용자나 그룹(예: AWS 계정, 익명 사용자)에게 권한 부여.
S3 ACL의 주요 특징
- 리소스 수준에서 동작
- ACL은 S3 버킷 전체 또는 개별 객체에 대해 설정 가능.
- 권한 부여 대상 (Grantee)
- 특정 AWS 계정.
- 익명 사용자(인터넷에 공개).
- AWS 서비스 (예: CloudFront).
- 권한 유형
- READ: 읽기 권한 (예: 객체 다운로드).
- WRITE: 쓰기 권한 (예: 객체 업로드).
- FULL_CONTROL: 전체 권한.
예시
S3 ACL과 버킷 정책의 비교
특징 |
S3 ACL |
버킷 정책 |
설정 수준 |
버킷 및 개별 객체 |
버킷 수준에서 설정 가능 |
사용 목적 |
간단한 권한 제어 |
복잡하고 세부적인 권한 제어 |
주로 사용 대상 |
개별 객체 권한 관리 |
특정 사용자 또는 그룹에 대한 정책 설정 |
네트워크 ACL (NACL)
NACL의 역할
- VPC 내 서브넷에 출입하는 **네트워크 트래픽(인바운드/아웃바운드)**을 제어.
- 허용/거부 규칙을 설정하여 특정 트래픽을 차단하거나 허용.
NACL의 주요 특징
- 서브넷 수준에서 동작
- NACL은 VPC 내에서 특정 서브넷에 대해 트래픽 제어를 수행.
- 규칙 번호에 따른 순서
- 각 규칙은 번호로 정의되며, 번호가 낮은 규칙부터 우선 적용.
- 기본 동작
- 새로 생성된 NACL은 모든 트래픽을 명시적으로 차단.
- 스테이트리스(Stateless)
- 스테이트리스: 요청 트래픽과 응답 트래픽을 개별적으로 처리.
- 예: 인바운드 규칙에 허용하더라도, 아웃바운드 규칙에 허용하지 않으면 응답이 차단됨.
NACL 규칙 구성 요소
구성 요소 |
설명 |
Rule Number |
규칙의 우선순위를 결정 (숫자가 낮을수록 우선 적용). |
Protocol |
트래픽의 프로토콜 지정 (예: TCP, UDP, ICMP). |
Port Range |
허용하거나 거부할 포트 범위 (예: 80, 443). |
Source/Destination |
트래픽의 출발지 또는 목적지 IP 주소. |
Allow/Deny |
트래픽을 허용(ALLOW)하거나 거부(DENY). |
예시
NACL과 보안 그룹의 비교
특징 |
네트워크 |
ACL 보안 그룹 |
적용 범위 |
서브넷 수준 |
인스턴스 수준 |
트래픽 방향 |
인바운드/아웃바운드 개별 설정 |
상태 기반(Stateful), 요청-응답 자동 허용 |
동작 방식 |
스테이트리스 (Stateless) |
상태 기반(Stateful) |
우선순위 |
규칙 번호 순서대로 처리 |
모든 규칙 평가 후 허용 트래픽만 통과 |
ACL의 주요 사용 사례
- S3 ACL
- 정적 웹사이트 호스팅: 특정 버킷의 모든 객체를 공개하여 읽기 가능하도록 설정.
- 버킷 내 특정 객체 보호: 특정 사용자만 읽거나 쓸 수 있도록 제한.
- 네트워크 ACL
- 서브넷 보호: 서브넷으로 들어오는 비정상적인 트래픽 차단.
- IP 차단: 특정 IP 주소나 범위에서의 접근을 거부.
쉽게 이해하기
- S3 ACL:
S3에 저장된 파일에 대해 누가 읽고, 쓸 수 있는지를 정하는 권한 설정.
예: 특정 사용자는 파일 읽기만 가능, 다른 사용자는 파일 수정 가능.
- 네트워크 ACL:
네트워크를 출입하는 트래픽을 통과시킬지, 차단할지를 정하는 규칙.
예: 서브넷에 특정 IP에서만 접근 허용, 나머지는 차단.