仅授予对 Amazon 别名密钥的访问权限的 IAM 策略

tkw*_*rgs 2 amazon-web-services amazon-iam aws-kms amazon-kms

KMS 中有亚马逊别名密钥(例如/alias/aws/s3)和客户主密钥(CMK)。

对于每个开发团队,我都有一些带有别名的 CMK(例如/alias/team1/default/alias/team1/confidential

我想允许访问所有 IAM 用户/组/角色的 aws 别名密钥,但提供对团队级别密钥的团队级别访问权限

尝试允许访问 aws 托管密钥时出现了我的问题

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "NotAction": [
        "iam:*",
        "kms:*"
      ],
      "Resource": "*",
      "Condition": {
        "Null": {
          "aws:MultiFactorAuthAge": "false"
        }
      }
    },
    {
      "Effect": "Allow",
      "Resource": "arn:aws:kms:us-east-1:111111111111:alias/aws/*",
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
      ],
      "Condition": {
        "Null": {
          "aws:MultiFactorAuthAge": "false"
        }
      }  
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

为了提供隐含的拒绝iam:*kms:*,但允许访问AWS化名键

使用 IAM 策略模拟器时,我似乎必须提供对完整密钥 arn ( arn:aws:kms:us-east-1:111111111111:key/abcd123-acbd-1234-abcd-acbcd1234abcd) 而不是别名 ( arn:aws:kms:us-east-1:111111111111:alias/aws/*) 的访问权限

有没有更好的方法来管理这个?

我知道我可以使用密钥策略管理对 CMK 的访问,但不允许从 IAM 访问,但您不能Principal在 KMS 密钥策略中使用组

Suj*_*abu 9

虽然我知道问题已解决,但我很想从最佳来源发布此内容。
不能在策略中使用别名 请参阅https://d1.awsstatic.com/whitepapers/aws-kms-best-practices.pdf 中的以下段落

请注意,不能在策略中使用 CMK 别名。这是因为可以在策略之外操作别名到键的映射,这将允许特权升级。因此,必须在 KMS 密钥策略、IAM 策略和 KMS 授权中使用密钥 ID


sud*_*udo 6

您可以使用密钥别名作为 API 的资源,这些 API 用于控制对自身作用于别名的 API 的访问(例如创建/删除别名),并且别名不能用作 ARN 代替密钥 ID 来控制对访问的访问底层密钥。您可以参考以下 URL 中的表格,该表格解释了要与 KMS API 一起使用的资源/ARN。

http://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html

您可以考虑这种方法:允许 IAM 组承担 IAM 角色并允许 CMK 的密钥策略中的 IAM 角色。

来源:https : //forums.aws.amazon.com/thread.jspa?threadID=173540