계정A 에 cross-access-bucket
을 이름으로 갖는 버킷이 만들어져있고,
계정B 에서 access-test
라는 이름을 갖는 사용자(IAM User)가 있다.
access-test
사용자는 계정A에 있는 cross-access-bucket
에 접근해서 파일을 업로드하고, 버킷안의 객체들을 확인하고, 삭제하고 싶다. 어떻게하면 사용자의 요구를 충족시킬 수 있을까?
계정B에 이미 만들어진 사용자 access-test
의 정책을 수정 또는 추가한다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::cross-access-bucket"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::cross-access-bucket/*"
}
]
}
계정A 에 이미 만들어 둔, cross-access-bucket의 정책을 수정한다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::000000000000:user/access-test"
},
"Action": [
"s3:GetObject",
"s3:GetObjectAcl",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:ListBucket",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::cross-access-bucket",
"arn:aws:s3:::cross-access-bucket/*"
]
}
]
}
0000000000
이 부분은 계정B의 계정ID 숫자 12자리를 입력한다.계정A의 cross-access-bucket
에서 Permissions(권한) 탭에서 Access control list(ACL)을 수정한다.
Access for other AWS accounts 부분의 Add Grantee
를 이용해서 새로운 사용자를 추가한다.
이 부분에 계정B의 Canonicial ID를 적고 Objects와 BucketACL 의 모든 권한을 주면된다.
콘솔에서 계정B로 로그인을 한 뒤, S3에 접속한다.
S3 아무 버킷이나 하나 만들어서 그 버킷의 Permissions(권한)탭을 들어간다. 하단에 ACL 부분을 보면 Bucket owner 이라고 해서 Canonicial ID가 있는데 그걸 복사해서 위에 계정A 에 붙여넣으면 된다!
https://aws.amazon.com/ko/premiumsupport/knowledge-center/cross-account-access-s3/