Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 想从其他帐户使用EC2实例配置文件访问S3吗_Amazon Web Services_Amazon S3_Amazon Ec2 - Fatal编程技术网

Amazon web services 想从其他帐户使用EC2实例配置文件访问S3吗

Amazon web services 想从其他帐户使用EC2实例配置文件访问S3吗,amazon-web-services,amazon-s3,amazon-ec2,Amazon Web Services,Amazon S3,Amazon Ec2,假设您有两个帐户(A、B) 在帐户A中,您已经创建了一个S3存储桶 在帐户B中,您已经创建了一个EC2实例 如何从帐户B中的EC2实例访问帐户A中的S3存储桶?因此,情况是: 账户A有亚马逊S3存储桶A 帐户B有一个Amazon EC2实例B 您希望从实例B访问Bucket A 最佳实践是通过将IAM角色与EC2实例关联,将凭据分配给Amazon EC2实例。然后,实例上运行的任何应用程序都可以自动访问这些凭据 但是,在这种情况下,还有一个额外的要求,因为帐户B无法分配访问帐户A中资源的权限

假设您有两个帐户(A、B)

在帐户A中,您已经创建了一个S3存储桶

在帐户B中,您已经创建了一个EC2实例

如何从帐户B中的EC2实例访问帐户A中的S3存储桶?

因此,情况是:

  • 账户A有亚马逊S3存储桶A
  • 帐户B有一个Amazon EC2实例B
  • 您希望从实例B访问Bucket A
最佳实践是通过将IAM角色与EC2实例关联,将凭据分配给Amazon EC2实例。然后,实例上运行的任何应用程序都可以自动访问这些凭据

但是,在这种情况下,还有一个额外的要求,因为帐户B无法分配访问帐户A中资源的权限。因此,所需的步骤是:

  • 在帐户B中创建一个IAM角色,并将其与实例B关联(正常)
  • 将一个Bucket策略添加到向帐户B中的角色授予访问权限(例如
    GetObject
    )的Bucket a中
下面是一个示例bucket策略:

{
  "Id": "CrossAccountAccess",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AccessFromRole",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::bucket-a",
      "Principal": {
        "AWS": [
          "arn:aws:iam::123456789012:role/role-in-account-b"
        ]
      }
    }
  ]
}
此策略允许帐户B(
主体
)中的角色访问帐户A(
资源
)中的存储桶


这样,帐户B中使用指定角色启动的任何EC2实例都将被允许从Bucket A获取对象。

谢谢您的帮助。但是角色附加到用户而不是ec2实例您提到的“实例配置文件”,它是IAM角色的容器,在启动时传递给ec2实例。这是向EC2实例提供凭据的“正确”方法。除此之外,您可以从帐户B中的IAM凭据设置对帐户A的bucket的跨帐户访问。请参阅前面的链接或。好的,因此我必须将此bucket策略附加到我的bucket。但我应该在附加到实例b的帐户b的角色中包含什么策略?角色b不需要任何权限。事实上,它无法为差异帐户中的资源授予权限。它只是作为向实例B提供凭据的一种方式,并提供ARN(Amazon资源名称),以便Bucket a上的Bucket策略可以引用该角色。这样想吧:我告诉大楼前门的保安(A先生)让B太太进入大楼,保安让她进去。B太太没有这幢大楼的钥匙。相反,建筑警卫(A先生)准许她进入。B太太所需要的只是一个身份证来证明她是谁。