【问题标题】:S3 Cross account accessS3 跨账户访问
【发布时间】:2021-06-21 07:35:16
【问题描述】:

我在以下示例中给出了一个场景:Example 4: Bucket owner granting cross-account permission to objects it does not own

我可以按照这个例子让它工作。 为此,他们创建了一个用户并这样做了:

aws sts assume-role --role-arn arn:aws:iam::accountA-ID:role/examplerole \
--profile AccountCDave --role-session-name test

创建会话。现在我有以下问题。

  • 我们真的需要像本例中那样创建用户并承担角色吗?
  • 如何使用 root 用户进行操作?
  • 我们可以假设它扮演像 EMR_DefaultRole 这样的角色吗?如果是,那么它将如何工作?
  • 它会自动为 EMR 作业工作还是我需要在 EMR 作业中创建会话?

【问题讨论】:

  • 您的实际用例是什么?听起来您希望在 Amazon EMR 上运行的作业能够访问不同账户中的存储桶——对吗?
  • 正确。那是我的用例。我有具有不同存储桶的通知。所以我不想在不同存储桶的代码中扮演角色。有没有一种方法可以让我进行预配置,我很高兴。
  • “具有不同存储桶的通知”是什么意思?是 EMR 上的脚本访问该数据,还是您希望这些存储桶触发某些事情?
  • 这就像我有许多不同的桶,我必须从中阅读。我想从这些桶中获取对象。整个事情都在 EMR 上运行

标签: amazon-web-services amazon-s3 amazon-iam amazon-emr


【解决方案1】:

最简单的方法是:

  • EMR_DefaultRole(或 EMR 使用的任何角色)中,授予足够的访问权限以访问其他账户中的 S3 存储桶。例如,在所有存储桶上授予 s3:GetObject。虽然这不足以实现此类访问,但仍然需要它。
  • 在其他账户的每个存储桶中,添加一个存储桶策略,授予 EMR 角色(由 ARN 引用)访问存储桶的权限。它可能需要GetObjectListBucket 权限。

这样,无需承担任何角色。相反,EMR 使用的角色被授予访问每个存储桶的权限。

见:Bucket policy examples - Amazon Simple Storage Service

【讨论】:

  • 感谢 John 的回答,但是正如我提到的示例 4 场景一样,存储桶对象归某个其他帐户(我无权访问)所有。
猜你喜欢
  • 2018-12-20
  • 2018-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-14
  • 2018-11-26
  • 1970-01-01
  • 2021-01-01
相关资源
最近更新 更多