내부 계정과 혼합된 AWS S3 버킷 교차 계정 정책

내부 계정과 혼합된 AWS S3 버킷 교차 계정 정책

우리는 두 회사 간에 파일을 공유하기 위해 s3 버킷을 사용합니다. 프라이빗 S3 버킷을 생성했으며 이 버킷을 사용하는 애플리케이션 전용 사용자가 있습니다(aws_key 및 aws_secret 사용). getObject에 대한 액세스 권한이 없다는 것을 알았지만 PutObject를 버킷에 성공적으로 추가했습니다.

또한 이 버킷에 대한 권한이 있는 역할을 생성하고 이를 application_user에 할당했지만 문제가 해결되지 않았습니다.

따라서 주요 목표는 외부 계정과 내부 IAM 사용자의 동일한 S3 버킷에 대한 읽기, 나열, 액세스 권한을 갖는 것입니다. 이 정책을 통해 지금 당장 외부 회사가 이에 액세스할 수 있다는 점을 지적하겠습니다. 외부 AWS 계정에 액세스할 수 없습니다.

아래에는 s3에 대한 리소스 정책이 있습니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "SharedS3Bucket",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::199999999999:root",    <--- external account 
                    "arn:aws:iam::111111111111:user/application_user" <-- our application user
                ]
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketAcl",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:DeleteObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::shared-bucket",
                "arn:aws:s3:::shared-bucket/*"
            ]
        }
    ]
}

답변1

S3 권한은 다음과 같은 권한이 있기 때문에 약간 복잡합니다.버킷 권한걱정할 것도 있지만 각각물체업로드하는 콘텐츠에는 자체 권한이 있습니다.

당신의버킷 정책위의 경우 두 회사 모두 개체를 업로드할 수 있으며 보시다시피 작동합니다. 그러나 외부 회사가 개체를 업로드하는 경우 이는 기본 권한입니다.작성자만 읽을 수 있도록 허용, 즉 외부 회사에 의해. 들어 있다고 해도당신의기본적으로 버킷다른 사람이 업로드한 경우에는 읽을 수 없습니다. 그것은 다소 반직관적입니다.

해결 방법은 업로드된 개체에 두 계정 모두에서 읽기를 허용하는 ACL이 있는지 확인하는 것입니다.

S3 업로드 대화 상자

s3:PutObjectAcl또한 이 기능이 작동하려면 버킷 정책 권한 목록에 추가해야 합니다 .

마찬가지로 명령줄에서 업로드하는 경우 를 사용하여 업로드한 후 객체 acl을 수정할 수 있습니다 aws s3api put-object-acl.

도움이 되었기를 바랍니다 :)

관련 정보