다른 계정의 AWS Identity and Access Management(IAM) 사용자에게 내 Amazon S3(Amazon Simple Storage Service) 버킷에 대한 액세스 권한을 부여하려고 합니다. 사용자는 내 Amazon S3 버킷에 객체를 업로드하려고 합니다. 이 계정 간 액세스 권한은 어떻게 부여합니까?
해결 방법
계정 A의 IAM 사용자에게 계정 B의 S3 버킷에 객체를 업로드할 수 있는 액세스 권한을 부여하려면 다음 단계를 따릅니다.
1. 계정 A에서 IAM 사용자에게 정책을 연결합니다. 정책에서는 사용자가 계정 B의 버킷에서 s3:PutObject 및 s3:PutObjectAcl 작업을 실행할 수 있도록 허용해야 합니다.
예를 들어 다음과 같습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
]
}
]
}
참고: 업로드 중에 객체 ACL(액세스 제어 목록)을 지정해야 하는 사용자에게는 s3:PutObjectAcl 권한이 필요합니다. 사용자에게 이 권한이 없으면 bucket-owner-full 제어 ACL과 같은 ACL이 있는 객체를 업로드할 때 액세스 거부 오류가 발생합니다.
2. 계정 A에서 IAM 사용자의 Amazon 리소스 이름(ARN)을 확인합니다.
3. 계정 B에서, 계정 A의 IAM 사용자에게 s3:PutObject 및 s3:PutObjectAcl 작업을 실행할 수 있는 권한을 부여하는 버킷 정책을 연결합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DelegateS3Access",
"Effect": "Allow",
"Principal": {"AWS": "arn:aws:iam::999999999999:user/UploadData"},
"Action": ["s3:PutObject", "s3:PutObjectAcl"],
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
]
}
]
}
중요: Principal의 값으로는 계정 A에 있는 IAM 사용자의 ARN을 입력해야 합니다.
계정 A에서 IAM 사용자 정책을 설정하고 계정 B에서 버킷 정책을 설정하고 나면 IAM 사용자가 Amazon S3에 객체를 업로드할 수 있습니다.
관련 정보
예제 2: 버킷 소유자가 교차 계정 버킷 권한 부여