如何使用EC2 IAM角色主体与自动扩展在SecretsManager资源策略中共同使用。

0

【以下的问题经过翻译处理】 我有一个名为example-role的角色,它附加到一个EC2实例上,并且具有对SecretsManager的完全访问权限。该实例的ID是i-1234123431。

另一方面,我有一个受资源策略保护的秘密,该策略仅应授予具有example-role分配的EC2实例对秘密的访问权限。我在秘密上使用了以下资源策略。

最终,我想将该机制用作安全组。

问题1:我注意到如果我省略#1或#2,它将无法工作,我需要两个都。为什么都需要?

问题2:因为我需要使用#2,如何才能在ID不断更改的自动缩放组中使用此功能?我尝试使用\ *,但看起来NotPrincipal不支持它。我该如何解决这个问题?

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "secretsmanager:GetSecretValue",
      "NotPrincipal": {
          "AWS": [
              "arn:aws:iam::123456789:root",
              "arn:aws:iam::123456789:role/example-role", #1
              "arn:aws:sts::123456789:assumed-role/example-role/i-1234123431" #2
              ]
      },
      "Resource": "*"
    }
  ]
}

profile picture
专家
已提问 5 个月前25 查看次数
1 回答
0

【以下的回答经过翻译处理】 请查看aws:PrincipalArnaws:userId条件密钥。

带有PrincipalArn的策略如下所示:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "secretsmanager:GetSecretValue",
      "Principal": {
          "AWS": "*"
      },
      "Resource": "*",
      "Condition": {
          "ArnNotEquals": {
              "aws:PrincipalArn": "arn:aws:iam::123456789:role/example-role"
          }
      }
    }
  ]
}

带有aws:userId的策略如下所示:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "secretsmanager:GetSecretValue",
      "Principal": {
          "AWS": "*"
      },
      "Resource": "*",
      "Condition": {
          "StringNotLike": {
              "aws:userId": "AROAABCDEFGHIJ:*"         #这将是角色的唯一标识符
          }
      }
    }
  ]
}

这两个策略避免了需要指定假设角色负责人的情况。不同之处在于aws:PrincipalArn将策略与角色名称绑定,而aws:userId将策略与角色的唯一标识符绑定。这意味着,如果要删除并重新创建该角色,PrincipalArn策略仍将按预期正常工作。如果使用相同的名称但具有不同唯一 ID 重新创建角色,则aws:userId策略将停止工作。

如果您删除角色并不重新创建它,属于该帐户的其他人可以创建具有相同名称的角色。

参考这篇关于aws:userid的文章,了解有关获取角色的唯一 ID 的更多信息。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则