【问题标题】:How can I use AssumeRole from another AWS account in a CloudFormation template?如何在 CloudFormation 模板中使用来自另一个 AWS 账户的 AssumeRole?
【发布时间】:2015-08-22 18:05:06
【问题描述】:

我正在尝试制定 AWS CloudFormation 模板的逻辑流程,该模板将承担一个 IAM 角色,该角色可以从另一个 AWS 账户的 S3 存储桶中提取文件。

到目前为止我所拥有的是:

  1. accountA 有一个角色A
  2. roleA 的策略允许 sts:AssumeRole 用于 accountB 中的角色:arn:aws:iam::11122233444:role/AllowPullS3
  3. accountB 的角色 (AllowPullS3) 具有
  4. 策略允许:s3 listBucket + 获取、放置、删除
  5. accountA 的信任关系:Action:"sts:AssumeRole"

如果我使用 IAM:roleA 手动创建 EC2 实例,然后使用 CLI 获取承担角色凭据,我可以按预期从其他账户的 S3 存储桶中提取文件。

但是我需要在我的 accountA CF 模板中的什么位置放置以允许 EC2 实例承担角色 B 并从 accountB S3 存储桶中提取文件作为形成的一部分?

我尝试了很多教程,例如this cfn-iam:init tutorial,但仍然无法完全掌握其中的内容。

感谢您的建议。

艺术

【问题讨论】:

  • 你必须使用 AssumeRole 吗?存储桶策略是否足够,或者您是否试图避免这种情况?如果您已在 accountA 中手动创建角色,并已使用 IamInstanceProfile 属性将其附加到 EC2 实例,您可以将 accountA 中的角色 ARN 添加到 accountB 中 s3 存储桶的存储桶策略中,如果您愿意这样做的话。这比搞乱跨帐户角色要简单。

标签: amazon-web-services amazon-ec2 amazon-cloudformation amazon-iam


【解决方案1】:

无法让 CloudFormation 承担另一个角色。

但是,如果您有适用于 Amazon EC2 实例的 CLI 脚本/命令,则只需将该脚本作为用户数据传递。该脚本将在您的实例启动时运行。用户数据可以在定义 EC2 实例的 CloudFormation 模板中传递。

见:Running Commands on Your Linux Instance at Launch

【讨论】:

    猜你喜欢
    • 2018-08-09
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 2020-03-27
    • 2020-06-10
    相关资源
    最近更新 更多