【问题标题】:AWS trusted entity with multiple principal types and condition具有多种委托人类型和条件的 AWS 可信实体
【发布时间】:2022-07-26 18:37:38
【问题描述】:

我有一个 Terraform 代码,它生成一个这样的受信任实体,该实体附加到一个角色以进行跨账户访问:

{
    \"Version\": \"2012-10-17\",
    \"Statement\": [
        {
            \"Sid\": \"\",
            \"Effect\": \"Allow\",
            \"Principal\": {
                \"AWS\": \"arn:aws:iam::444555666:root\",
                \"Service\": \"backup.amazonaws.com\"
            },
            \"Action\": \"sts:AssumeRole\",
            \"Condition\": {
                \"StringEquals\": {
                    \"sts:ExternalId\": \"444-555-666-777-888\"
                }
            }
        }
    ]
}

如果我打算允许具有 externalId 的 AWS 账户担任该角色,并且我还希望 AWS 备份服务采用该角色,那么生成的资源策略是否正确? 我不知道策略引擎是否会选择条件并尝试将其应用于帐户和服务,这是不希望的。

有谁知道这是否正确? AWS记录了这些更复杂的规则吗?,我只找到了关于更简单规则的信息

我想确保正确性的一种方法是将两种需求分成不同的语句,但这是 Terraform 从提供的 HCL 生成的。

谢谢

    标签: amazon-iam terraform-provider-aws aws-policies aws-roles


    【解决方案1】:

    根据AWS condition documentation,在满足条件之前,该语句不会生效。

    您将需要另一个信任声明,例如下面的示例。

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "backup.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            },
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "backup.amazonaws.com"
                },
                "Action": "sts:AssumeRole",
                "Condition": {
                    "StringEquals": {
                        "sts:ExternalId": "444-555-666-777-888"
                    }
                }
            }
        ]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-20
      • 2022-01-10
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多