S3 버킷 정책
IAM 정책(Policy)의 종류
- Identity-based policies(자격 증명 기반 정책)
- 자격증명(IAM 유저, 그룹, 역할)에 부여하는 정책
- 해당 자격증명이 무엇을 할 수 있는 지 허용
- ex) 내가 키를 갖고 문을 연다
- Resource-based policies(리소스 기반 정책)
- 리소스(예: S3, SQS, VPC Endpoint, KMS 등)에 부여하는 정책
- 해당 리소스에 누가 무엇을 할 수 있는지 허용 가능
- 예: SQS 대기열에 Lambda Service가 접근 가능
- ex) 문이 나를 인식해서 문이 열린다
S3 버킷 정책
- 버킷 단위로 부여되는 리소스 기반 정책
- 해당 버킷 데이터에 “언제 어디서 누가 어떻게 무엇을” 할 수 있는지 정의 가능
- 리소스의 계층 구조에 따라 권한 조절 가능
- ex) resource: “arn:aws:s3:::my-bucket/images/*” → my-bucket의 images/로 시작하는 모든 객체에 대해서…
- 다른 계정에 엔티티에 대해 권한 설정 가능
- 익명 사용자(Anonymous)에 대해 권한 설정 가능
- 기본적으로 모든 버킷은 Private ⇒ 접근 불가능
S3의 계층 구조
- AWS 콘솔에서는 S3의 디렉토리(폴더)를 생성 가능하고 확인 가능
- S3 내부적으로는 계층구조가 존재하지 않음
- 키 이름에 포함된 “/”로 계층 구조를 표현
- 예:
- s3://mybucket/world/southkorea/seoul/guro/map.json
- 버킷명: mybucket
- 키: world/southkorea/seoul/guro/map.json (단일 스트링)
S3 버킷 관리 방법의 선택
- Identity-based policies(자격 증명 기반 정책)
- 같은 계정의 IAM 엔티티의 S3 권한 관리할 때
- S3이외에 다른 AWS 서비스와 같이 권한 관리할 때
- Resource-based policies(리소스 기반 정책)
- 익명 사용자 혹은 다른 계정의 엔티티의 S3 이용 권한을 관리할 때
- S3만의 권한을 관리할 때
S3 Access Control List(ACL)
- 버킷 혹은 객체 단위로 읽기, 쓰기의 권한을 부여
- S3에서 설정을 통해 ACL를 활성화 시킨 후에 적용 가능
- 파일 업로드 시 설정 가능
- 간단하고 단순한 권한 관리만 가능
- 점점 사용하지 않는 추세
⇒ 웬만하면 쓸 필요가 없으니, 쓰지 말라고 AWS에서도 얘기하고 있음.