代码之家  ›  专栏  ›  技术社区  ›  Emad Dehnavi

使用assumerule在3个AWS帐户之间进行跨帐户访问

  •  0
  • Emad Dehnavi  · 技术社区  · 7 年前

    我们有一项服务 AWS-Account-A 它会复制一些文件 ACL: 'bucket-owner-full-control' 到S3桶 AWS-Account-B . 现在有一个 AWS-Account-C 已经有了一个来自AWS-ACCOUNT-B的assumerule(其中附加了一个S3 read access策略),并且S3 bucket策略已经授予了对AWS-ACCOUNT-C规则的读访问权,所以问题是,AWS-ACCOUNT-C: Can't 阅读从AWS-ACCOUNT-A上传的文件 CAN 读取使用AWS-ACCOUNT-B本身上载的文件。

    我知道这是一个真正的同谋,但据我所知,这是一个所有权问题。bucket策略只适用于bucket所有者拥有的对象,因此 X 拥有一些文件,他把它复制到 Y 现在 Z 无法从 Y 因为它不属于 Y .

    如果以前有人遇到过这种塞卡里奥斯,并且有解决办法的话,我真的很感激你能给我一些指导。

    1 回复  |  直到 6 年前
        1
  •  3
  •   John Hanley    7 年前

    您的问题是,您使用account-a将文件复制到account-b拥有的bucket中,但现在复制的文件归account-a所有。这就是account-c无法访问这些文件的原因。帐户C没有所需的权限。

    正确的过程是在account-b中创建一个由account-a承担的角色,然后在account-a将文件复制到account-b中的bucket之前,它承担account-b角色。现在复制到bucket的文件将归account-b所有。

    对于当前在account-b bucket中的文件,在使用account-b的凭据时执行就地复制。这将把所有权转换为账户B。

    这是一个就地复制的例子。注意:S3中没有数据通过互联网传输,因此它执行速度很快。

    aws s3 cp s3://mybucket/mykey s3://mybucket/mykey --storage-class STANDARD
    

    要应用于键的整个文件夹的“--recursive”参数。

    警告:

    1)所有自定义元数据和现有权限都将丢失。

    2)确保在执行这样的命令之前备份了数据。

    推荐文章