AWS S3 中的跨账户文件访问



目前,我的应用程序配置为将 AWS 与账户AWS 付款一起使用。

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

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

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

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

啊,旧的跨账户 S3 在没有将权限返回给存储桶拥有者的情况下放置。简而言之,您可以拥有存储桶,但没有文件权限。 要在跨账户放置对象时解决此问题,您需要授予存储桶拥有者访问权限。

有关授予放置对象的跨账户权限,同时确保存储桶拥有者仍具有完全控制权的文档。

您可以确保存储桶拥有者始终有权为跨账户放置创建拒绝语句,该语句不向拥有者授予完全控制权。

要修复已经放置的对象,请从放置对象的用户那里

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

要解决此问题,您需要在 AWS 订单中创建一个有权访问 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 订单

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

希望这有帮助! :)

相关内容

  • 没有找到相关文章

最新更新