Amazon S3는 다양한 서비스와 통합되어 데이터를 저장하고 관리할 수 있으며, 액세스 제어를 통해 안전하게 보호할 수 있습니다. 보안은 사용자 기반과 리소스 기반 보안으로 나눌 수 있습니다.
1. S3 보안
1. 사용자 기반 보안(IAM Policies)
- IAM 정책을 사용하여 특정 API 호출을 허용하거나 거부할 수 있습니다.
- 권한은
Allow
또는 Deny
로 설정하고, 특정 사용자에 대해 적용됩니다.
2. 리소스 기반 보안
- 버킷 정책: 버킷과 객체에 대한 액세스를 제어하는 JSON 기반 정책입니다. 예를 들어, 다른 - 계정에 대한 액세스 허용, 객체 암호화 강제 등을 설정할 수 있습니다.
- 객체 ACL: 객체에 대해 세밀한 권한 설정이 가능하지만, 비활성화할 수 있습니다.
- 버킷 ACL: 덜 사용되며, 버킷 전체에 대한 액세스를 제어합니다.
3. 액세스 조건
IAM 권한이나 리소스 정책이 Allow 하거나, Deny가 없는 경우에만 액세스가 가능합니다.
4. 데이터 암호화
S3는 객체를 암호화할 수 있으며, 암호화 키를 사용해 데이터를 보호할 수 있습니다. 버킷 정책을 통해 암호화 여부를 강제할 수 있습니다.
2. S3 버킷 정책
S3 버킷 정책은 JSON 형식으로 작성되며, 특정 리소스에 대한 액세스를 제어하는 데 사용됩니다. 주요 구성 요소는 다음과 같습니다
다음 사진은 JSON 형식의 버킷정책 예시입니다.

- 리소스: 정책이 적용되는 리소스는 버킷과 객체입니다.
- Effect:
Allow
또는 Deny
로 액세스를 허용하거나 거부합니다.
- Actions: 허용하거나 거부할 API 호출을 설정합니다.
- Principal: 정책이 적용될 계정 또는 사용자를 지정합니다.
S3 버킷 정책 활용 사례
- 공용 액세스 허용: 버킷에 대해 공개 액세스를 허용할 수 있습니다.
- 업로드 시 객체 암호화 강제: 객체 업로드 시 반드시 암호화되도록 강제할 수 있습니다.
- 다른 계정에 대한 액세스 허용: 크로스 계정 액세스를 설정하여 다른 AWS 계정에 액세스를 허용할 수 있습니다.