다른 계정의 AWS ID 및 액세스 관리 (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 권한이 있어야 합니다. 그렇지 않은 경우, 버킷 소유자 전체 제어 ACL 등의 ACL이 있는 객체를 업로드할 때 액세스 거부 오류가 발생합니다.
-
계정 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/*"
]
}
]
}
**중요:**Principal 값에는 계정 A에 존재하는 IAM 사용자의 ARN을 입력해야 합니다.
이제 IAM 사용자는 Amazon S3에 객체를 업로드할 수 있습니다.
관련 정보
예시 2: 버킷 소유자가 계정 간 버킷 권한 부여