Access control list(ACL) 개요
Access control list(ACL) 개요
Access control list(ACL)는 버킷과 객체에 대한 접근을 관리하는 리소스 기반 접근 제어 옵션 중 하나예요. ACL을 사용해 다른 AWS 계정에게 기본 읽기/쓰기 권한을 부여할 수 있어요. 다만 ACL로 권한을 관리하는 데는 몇 가지 한계가 있어요.
- ACL은 다른 AWS 계정에만 권한을 부여할 수 있어요. 내 계정 안의 사용자에게는 권한을 부여할 수 없어요.
- 조건부 권한을 부여할 수 없어요.
- 명시적으로 권한을 거부할 수 없어요.
이런 이유로 ACL은 특정 시나리오에 적합해요. 예를 들어 버킷 소유자가 다른 AWS 계정이 객체를 업로드하도록 허용했다면, 이 객체들에 대한 권한은 객체를 소유한 AWS 계정만 객체 ACL로 관리할 수 있어요. 대부분의 최신 사용 사례에는 ACL보다 버킷 정책이나 IAM 정책을 사용하는 것을 권장해요.
S3 Object Ownership은 Amazon S3 버킷 수준 설정으로, 버킷에 업로드되는 객체의 소유권을 제어하고 ACL을 비활성화하거나 활성화하는 데 사용할 수 있어요. 기본적으로 Object Ownership은 Bucket owner enforced 설정으로 되어 있고 모든 ACL이 비활성화돼요. 자세한 내용은 버킷의 객체 소유권 제어 및 ACL 비활성화를 참고하세요.
ACL이 작동하는 방식
버킷과 객체는 각각 하나의 ACL을 가질 수 있어요. ACL은 권한을 보안 주체(Grantee) 에게 부여하는 목록이에요.
권한(Permissions)
ACL은 버킷과 객체에 대해 다음 권한을 지원해요.
- READ – 객체의 내용을 읽거나 객체를 나열할 수 있는 권한. 버킷에서는 객체 나열(ListBucket), 객체에서는 객체 데이터 읽기(GetObject).
- WRITE – 객체를 쓰거나 삭제할 수 있는 권한. 버킷에서는 객체 생성/삭제, 객체에서는 객체 덮어쓰기.
- READ_ACP – ACL을 읽을 수 있는 권한.
- WRITE_ACP – ACL을 수정할 수 있는 권한.
- FULL_CONTROL – READ, WRITE, READ_ACP, WRITE_ACP를 모두 포함하는 권한.
객체 ACL에는 WRITE 권한이 없어요. (객체를 삭제하려면 버킷에 대한 WRITE 권한이 필요해요.)
보안 주체(Grantees)
ACL이 권한을 부여할 수 있는 보안 주체는 다음과 같아요.
- 정식 사용자 ID(Canonical user ID) – AWS 계정을 식별하는 고유한 ID.
- AWS 계정 – 전체 AWS 계정(해당 계정의 모든 IAM 사용자 포함)에 권한을 부여.
- 사전 정의된 그룹(Predefined groups) – 모든 AWS 계정을 대표하는 그룹.
AllUsers– 공개 그룹. 인터넷의 모든 사람을 나타냄.AuthenticatedUsers– 인증된 모든 AWS 계정.LogDelivery– 로그 배달을 위해 사용.
Canned ACL
AWS는 미리 정의된 권한 조합인 canned ACL을 제공해요.
private– 객체 소유자만 FULL_CONTROL.public-read– 소유자 FULL_CONTROL, AllUsers 그룹 READ.public-read-write– 소유자 FULL_CONTROL, AllUsers 그룹 READ·WRITE.aws-exec-read– Amazon EC2에서 사용.authenticated-read– 소유자 FULL_CONTROL, AuthenticatedUsers 그룹 READ.bucket-owner-read– 객체 소유자 FULL_CONTROL, 버킷 소유자 READ.bucket-owner-full-control– 객체 소유자와 버킷 소유자 모두 FULL_CONTROL.log-delivery-write– LogDelivery 그룹에 WRITE·READ_ACP 부여.
기본 ACL
버킷이나 객체를 만들 때 특별히 ACL을 지정하지 않으면 기본 ACL이 적용돼요. 버킷 기본 ACL은 버킷 소유자에게 FULL_CONTROL을 부여하고, 객체 기본 ACL은 객체를 업로드한 계정(객체 작성자)에게 FULL_CONTROL을 부여해요.
ACL 평가
요청한 보안 주체가 버킷 또는 객체 ACL에서 필요한 권한을 가지고 있는지 확인해 접근을 허용해요. ACL과 정책은 함께 평가되며, 어떤 정책(신원 기반, 버킷 정책, ACL 등)이든 명시적 거부는 허용보다 우선하고, 허용은 결합될 수 있어요.
출처: 문서
본문
ACL fundamentals (ACL 기본)
ACL의 구성 요소 — 권한(Permissions), 보안 주체(Grantees), canned ACL, 기본 ACL, 평가 규칙 — 을 설명했어요. 버킷과 객체는 각각 하나의 ACL을 가지며, 어떤 AWS 계정에 어떤 수준의 접근 권한을 부여할지 정의해요.