AWS S3中的跨账户文件访问

时间:2019-09-24 00:40:27

标签: amazon-s3 amazon-iam aws-kms

当前,我的应用程序配置为通过帐户 AWS Payments 使用AWS。

我们有一个新要求,即将文件上传到S3中的其他帐户 AWS订单

我已经在AWS Orders帐户中创建了一个S3存储桶,并添加了另一个AWS使用规范帐户 AWS Payments

使用我的应用程序,我可以将文件上传到 AWS订单

使用 AWS订单登录控制台时,我无法下载或查看文件。因为它是由帐户创建的付款?我们需要添加存储桶策略吗?

2 个答案:

答案 0 :(得分:1)

啊,原来的交叉帐户S3在没有将权限授予存储桶所有者的情况下放了。简而言之,您可以拥有存储桶,但没有文件权限。要在跨对象放置对象时解决此问题,需要授予存储桶所有者访问权限。

granting cross-account permissions to put objects while ensuring the bucket owner still has full control.上的文档

您可以确保存储区所有者始终具有访问权限,可以为交叉帐户放置权创建拒绝对所有者没有完全控制权的声明。

要修复已放置的对象,请放置对象的用户

aws s3api put-object-acl --acle bucket-owner-full-control --bucket BUCKET --key KEY 

答案 1 :(得分:0)

要解决此问题,您需要在AWS Orders中创建一个可以访问AWS Payments S3存储桶的IAM用户。然后,复制S3存储桶并运行S3同步。

IAM权限-

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:ListBucket",
                "s3:GetObject",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-name/*",
                "arn:aws:s3:::bucket-name"
            ]
        }
    ]
}

然后,将其添加到AWS Orders的存储桶策略中

{
            "Sid": "Permissions for AWS Payments account",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::AWS-Payments-Account-ID:root"
            },
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-name",
                "arn:aws:s3:::bucket-name/*"
            ]
        }

S3跨帐户复制-https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-walkthrough-2.html

S3同步-https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

头脑中的熊-如果父存储桶没有读/写权限,则子存储桶将复制包括权限在内的所有内容。因此,在尝试此操作之前,请确保AWS Payments存储桶策略,然后进行更改。

希望这会有所帮助! :)