다른 AWS 계정의 사용자에게 내 Amazon S3 버킷에 객체를 업로드할 수 있는 액세스 권한을 부여하려면 어떻게 해야 합니까?
최종 업데이트 날짜: 2020년 11월 2일
다른 AWS 계정의 AWS Identity and Access Management(IAM) 사용자가 내 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 또는 public-read ACL과 같은 ACL이 있는 객체를 업로드할 때 액세스 거부 오류가 발생합니다.
2. 계정 A에서 IAM 사용자의 Amazon 리소스 이름(ARN)을 확인합니다.3. 계정 B에서, 계정 A의 IAM 사용자에게 s3:PutObject 및 s3:PutObjectAcl 작업을 실행하는 권한을 부여하는 버킷 정책을 연결합니다. 이 정책은 다음과 유사합니다.
중요: Principal의 값으로는 계정 A에 있는 IAM 사용자의 ARN을 입력해야 합니다.
{
"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 사용자 정책을 설정하고 계정 B에서 버킷 정책을 설정하고 나면 IAM 사용자가 버킷에 객체를 업로드할 수 있습니다.