1. 개요
특정 Amazon S3 버킷에 대한 접근 권한을 부여하는 IAM 정책 예시이다. 아래 예시에서 [버킷명]은 실제 버킷 이름으로 변경해서 사용한다.
S3 권한은 버킷 자체에 적용되는 권한과 버킷 안의 객체에 적용되는 권한이 구분된다. 그래서 일반적으로 arn:aws:s3:::[버킷명]과 arn:aws:s3:::[버킷명]/*를 함께 지정한다.
2. 내용
2-1. 모든 권한
해당 버킷과 버킷 내 객체에 대해 S3의 모든 작업을 허용하는 정책이다. 운영 환경에서는 필요한 작업만 최소한으로 허용하는 것이 권장된다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1507866767000",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::[버킷명]",
"arn:aws:s3:::[버킷명]/*"
]
}
]
}
2-2. Read/Write 권한
객체 조회, 객체 업로드와 S3의 List 계열 작업을 함께 허용하는 예시이다. s3:GetObject와 s3:PutObject는 객체 리소스에 적용되는 대표적인 작업이며, s3:List*는 여러 List 계열 액션을 포함하므로 실제 필요한 목록 조회 작업에 맞춰 액션과 리소스를 구체화하는 것이 좋다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1507866767000",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:List*",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::[버킷명]",
"arn:aws:s3:::[버킷명]/*"
]
}
]
}
3. 적용 전 확인 사항
- IAM 사용자, 그룹, 역할 중 어디에 정책을 연결할지 먼저 결정한다.
- 버킷 이름을 잘못 입력하면 권한이 적용되지 않으므로 ARN의
[버킷명]을 실제 이름으로 정확히 바꾼다. - 읽기만 필요하다면
s3:PutObject를 제외하는 등 최소 권한 원칙에 맞게 조정한다. - 정책 적용 후 AWS Management Console, AWS CLI, 애플리케이션 등 실제 사용 경로에서 목록 조회, 다운로드, 업로드가 정상 동작하는지 확인한다.