【问题标题】:Can I grant access to objects owned by another account in AWS S3 using bucket policies?我可以使用存储桶策略授予对 AWS S3 中另一个账户拥有的对象的访问权限吗?
【发布时间】:2017-11-15 15:49:31
【问题描述】:

我想控制对由另一个 AWS 账户创建的对象的访问。我可以通过存储桶策略做到这一点吗? 换句话说,存储桶策略是否适用于其他帐户拥有的对象?

我没有 2 个 AWS 账户,因此无法实际测试此案例。

【问题讨论】:

标签: amazon-web-services amazon-s3


【解决方案1】:

没有。

只能通过拥有存储桶/对象的账户来授予对对象的访问权限。

如果您考虑一下,这是有道理的——您不会希望我授予对您对象的访问权限。只有拥有存储桶/对象的帐户才能执行此操作。

【讨论】:

    【解决方案2】:

    是的,您可以通过创建策略来实现。请在下面找到示例政策,

    {
       "Version": "2012-10-17",
       "Statement": [
          {
             "Sid": "Example permissions",
             "Effect": "Allow",
             "Principal": {
                "AWS": "arn:aws:iam::AccountB-ID:root"
             },
             "Action": [
                "s3:GetBucketLocation",
                "s3:ListBucket"
             ],
             "Resource": [
                "arn:aws:s3:::examplebucket"
             ]
          }
       ]
    }

    您可以通过 AWS 控制台、CLI 或 API 执行此操作。请在下面找到 CLI 示例,

    aws s3 ls s3://examplebucket --profile AccountBadmin
    aws s3api get-bucket-location --bucket examplebucket --profile AccountBadmin
    

    请阅读文档here了解更多详情

    【讨论】:

    • 桶级权限(例如 ListBucket),是的,但对象级权限(例如 GetObjects),否。您的示例有效,但只是问题的一半。当对象由账户 C 上传时,存储桶的所有者账户 A 无法授予账户 B 的对象访问权限,因为对象不属于账户 A。可能的例外是对象是使用 x-amz-acl: bucket-owner-full-control 或等效的非标准 ACL 赋予账户 A(存储桶所有者)对对象的完全控制权。
    • 即使对象是使用罐装 acl 'bucket-owner-full-control' 上传的,所有者保持不变(上传者)并且存储桶所有者无法使用存储桶策略控制访问。
    • @Schleir AWS 目前支持通过存储桶策略更改所有权,该策略使用创建对象时提供的“bucket-owner-full-control”预设 ACL。这是一个称为 S3 对象所有权的新功能:docs.aws.amazon.com/AmazonS3/latest/dev/…
    猜你喜欢
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    相关资源
    最近更新 更多