다른 계정의 AWS Identity and Access Management(IAM) 사용자에게 내 Amazon Simple Storage Service(S3) 버킷 액세스 권한을 부여하려고 합니다. 또한 해당 사용자가 내 Amazon S3 버킷에 객체를 업로드할 수 있도록 계정 간 액세스 권한을 부여하고 싶습니다.
해결 방법
계정 A의 IAM 사용자에게 액세스 권한을 부여해 계정 B의 S3 버킷에 개체를 업로드하려면 다음 단계를 따르세요.
-
계정 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 control ACL과 같은 ACL이 있는 개체를 업로드할 때 Access Denied 오류가 발생합니다.
-
계정 A에서 IAM 사용자의 Amazon 리소스 이름(ARN)을 가져옵니다.
-
계정 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/*"
]
}
]
}
중요: 주요 값의 경우 계정 A에 IAM 사용자의 ARN을 입력해야 합니다.
이제 IAM 사용자가 Amazon S3에 개체를 업로드할 수 있습니다.
관련 정보
예 2: 버킷 소유자가 계정 간 버킷 권한 부여