AWS/S3

S3 버킷 정책 vs IAM 무슨 차이일까?

hee_story 2022. 8. 23. 15:11

IAM(Identity and Access Management) 란?    -아이덴티티 기반 정책 활용

- 접근 제어 관리 서비스

- 주 단위는 정책(리소스에 allow/deny 되는 정책 정의)

- 정책에 정의되는 리소스는 S3 버킷, 람다 함수, DynamoDB 테이블 등 AWS 내에 생성하는 리소스

- 정책에 정의 형식은 json 형식

- 정책은 사용자, 역할 또는 그룹에 부여

- 정책에는 암묵적 deny(allow 권한이 없을 경우 deny), 명시적 deny(정의한 사용자, 역할 또는 그룹에 대해 deny 적용) 

 **명시적 deny 정책이 무조건 우선함

 

S3 버킷 정책이란?    -리소스 기반 정책 활용

- S3 버킷 및 객체에 붙는 정책

- principal(사람/어플리케이션)에 적용되는 권한이 정의됨

- S3에 사용되는 접근 제어 기능인 ACL(레거시 기능)도 있지만 버킷 정책으로 충분하다 

  **AWS 문서에도 ACL보다는 버킷 정책 사용 장려 중. 아직 지원하지만 대체제인 버킷 정책이 훨씬 좋음

 

알면 좋은 포인트

- IAM 과 버킷 정책 혼합 사용 가능   

   예) 어드민 권한이 필요한 사용자에게 IAM(AdministratorAccess) 필요 정책 부여,

         특정 S3 버킷 접근 못하도록 해당 버킷 정책에 해당 사용자 deny 정책 정의

- S3 버킷 정책은 cross-account(타 계정 간) 접근 제어 관리에 유용

  **타 계정 간 접근을 추가하려면 S3 버킷 정책에는 라인 몇개만 추가로 가능, IAM의 경우 역할 생성 -> 해당 리소스 권한 부여 -> 신뢰 관계 정의 -> 해당 타 계정에 S3 사용 권한 추가 등 복잡해짐

- S3 버킷 정책 사이즈 20KB까지 가능, IAM 정책은 4KB까지만 가능

 

 

 

참고 영상 URL : https://www.youtube.com/watch?v=gWAwqY76JQs