AWS S3 中的跨账户文件访问

Cross account file access in AWS S3

目前我的应用程序配置为使用 AWS 帐户 AWS Payments

我们有一个新的要求,需要将文件上传到不同帐户中的 S3 AWS 订单

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

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

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

要解决此问题,您需要在 AWS Orders 中创建一个 IAM 用户,该用户可以访问 AWS Payments S3 Bucket。然后,复制 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 订单的存储桶策略中

{
            "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 存储桶策略,然后进行更改。

希望对您有所帮助! :)

啊,旧的跨账户 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