💻 CSP/AWS

[AWS] S3 버킷의 권한 정책과 객체 소유권(Object Ownership)

heywantodo 2025. 2. 3. 16:34
728x90
반응형

[AWS] S3 버킷의 권한 정책과 객체 소유권(Object Ownership)

AWS S3는 객체 기반의 스토리지 서비스로, 다양한 계정과 사용자들이 데이터를 저장하고 관리할 수 있도록 설계되었다.

S3는 다중 계정 환경에서도 자주 쓰이는데, 이 때 ACL권한과 객체소유권이 중요한 역할을 한다.

 

ACL은 이전 포스팅에서 간략하게 소개한 적이 있다. 

 

[AWS] S3의 ACL 구성

[AWS] S3의 ACL 구성S3 버킷에 대한 액세스 권한을 관리할 때, ACL(액세스 제어 목록)을 사용할 수 있다.콘솔 ,aws cli, SDK를 사용하면 리소스에 대해 권한 부여를 추가할 수 있다. 버킷 및 객체 권한

heywantodo.tistory.com

이번 포스팅에서는 S3의 객체 소유권(Object Ownership)ACL(Access Control List)의 개념에 대해 상세히 알아보고자 한다.

 

AWS S3의 기본 권한 개념

AWS S3에서 버킷과 객체는 서로 다른 소유권을 가질 수 있다.

기본적으로 버킷을 소유한 AWS 계정과 객체를 업로드한 계정이 다를 경우, 객체의 소유권은 업로드한 계정에 귀속된다.

이는 협업 환경에서 권한 충돌을 일으킬 수 있는 요소이기 때문에, S3는 이를 해결하기 위한 설정을 제공한다.

 

S3 ACL(Access Control List)

ACL(Access Control List, 액세스 제어 목록)S3 버킷 및 객체에 대한 세부적인 접근 권한을 설정하는 방식이다.

ACL을 사용하면 특정 AWS 계정이나 퍼블릭(모든 사용자)에게 읽기 또는 쓰기 권한을 부여할 수 있다.

 

ACL은 두가지의 유형이 있다. 다음은 두가지의 유형과 권한에 대해 설명한다.

  • 버킷 ACL : 버킷 자체에 대한 권한을 설정
  • 객체 ACL : 특정 객체에 대한 권한을 설정
권한 유형 설명
FULL_CONTROL 모든 권한 (읽기, 쓰기, 삭제 등)
READ 객체 또는 버킷 목록 읽기 권한
WRITE 버킷에 객체 쓰기 권한
READ_ACP ACL 읽기 권한
WRITE_ACP ACL 수정 권한

 

S3 객체 소유권 (Object Ownership)

객체 소유권(Object Ownership)은 업로드된 객체의 소유권을 어떻게 관리할지 결정하는 설정이다.

AWS S3에서는 기본적으로 객체를 업로드한 AWS 계정이 객체의 소유권을 가지지만, 객체 소유권 설정을 통해 버킷 소유자가 객체 소유권을 가지도록 강제할 수 있다.

 

S3에서는 2가지 객체 소유권 옵션을 제공한다.

객체 소유권 옵션 ACL 설명
Bucket owner enforced
(버킷 소유자 적용)
비활성화 ACL을 비활성화하고, 모든 객체의 소유권을 버킷 소유자로 설정
Bucket owner preferred
(버킷 소유자 선호)
활성화 객체가 bucket-owner-full-control 삽입 ACL을 지정하는 경우 버킷소유자가 소유, 그렇지 않은 경우에 객체 라이터가 소유
Object Writer
(객체 라이터)
활성화 디폴트, 객체를 업로드 한 계정이 소유권을 유지
💡 bucket-owner-full-control ACL?
다중 계정 환경에서 S3 버킷 소유자가 객체를 제어할 수 있도록 하기위해 해당 옵션을 적용할 수 있다.
해당 ACL을 적용하면, 업로드한 객체에 대해 버킷 소요자가 FULL_CONTROL을 가지도록 설정할 수 있다.

 

AWS에서는 보안 강화를 위해 Bucket owner enforced (버킷 소유자 적용) 옵션 설정을 권장한다.

이 옵션을 사용하면 ACL이 완전히 비활성화되고, 버킷 소유자가 모든 객체를 자동으로 소유한다.

💡 AWS가 S3 ACL을 권장하지 않는 이유가 무엇일까?
AWS는 ACL 사용을 지양하고 대신 S3 버킷 정책 및 IAM 정책을 사용하길 권장한다.
ACL은 개별 객체마다 별도로 설정할 수 있어 대규모 환경에서 관리가 어려우며 일관된 보안 정책을 유지하기가 어렵다.
또한, 여러 계정에서 동일한 버킷을 사용할 경우 권한 충돌로 인해 기본 동작이 문제를 일으킬 수 있다.

 

결론

  ACL (Access Control List) 객체 소유권 (Object Ownership)
역할 개별 객체 및 버킷에 대한 접근 권한 관리 객체의 소유권을 결정
보안 권장 사항 비권장  Bucket owner enforced 사용을 권장
적용 대상 버킷 및 객체 객체 자체의 소유권
주 사용 사례 특정 사용자 또는 퍼블릭 접근 허용이 필요할 때 다중 계정 환경에서 객체 소유권을 일관되게 유지할 때 

객체 소유권과 ACL은 보안과 접근 제어를 위한 중요한 요소지만, AWS는 보안 모범사례로 ACL을 지양하고 버킷 정책을 사용할 것을 권장한다.

728x90
반응형