首页 > 解决方案 > AWS 服务委托人是否在策略文档中隐含了账户范围?

问题描述

考虑为 accountA 中的 IAM 角色配置的以下信任关系:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudformation.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

这是否隐含地将访问范围缩小到在帐户 A 中运行的 cloudformation,或者任何其他帐户(B、C、D 等)中的 cloudformation 堆栈可以承担此角色?

我以前使用 sourceArn 条件来避免代理攻击,如下所示:

"Condition": {
        "ArnLike": {
          "aws:SourceArn": [
            "xxxx"
           ]
        }
 }

这是必要的,还是初始策略足以将信任关系缩小到 accountA?

标签: amazon-web-servicesaws-policies

解决方案


此策略允许 CloudFormation 服务代入您账户中的角色。

默认情况下,这也适用于您的帐户,即只有您帐户中的 CloudFormation 可以担任该角色,而不是其他帐户的 CloudFormation。您必须显式添加具有另一个帐户 ID 的 Principal 以允许从另一个帐户中的 CloudFormation 进行跨帐户访问 - 如下所示:

"Principal": {
    "AWS": "123456789012"
    "Service": "cloudformation.amazonaws.com"
},

需要明确的是,用户需要具有以下权限才能将角色传递给服务。

  • “我:GetRole”
  • “我:密码角色”

如果您的 IAM 角色 Arn 没有这些权限,他们无法将其传递给 CloudFormation 服务以允许代入。

因此,简而言之,除了能够承担角色的服务之外,用户/角色还需要传递 IAM 角色 arn 的权限。

授予用户权限以将角色传递给 AWS 服务文档中提供了更多信息。


推荐阅读