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



在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"
        }
      }  
    }
  ]
}

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 进行访问,但您不能将组用作 KMS 密钥策略中的Principal

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

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

您可以将密钥别名用作 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

相关内容

  • 没有找到相关文章

最新更新