为什么我无法在 AWS KMS 中读取或更新 AWS KMS 密钥策略?

2 分钟阅读
0

我想更新 AWS Key Management Service (AWS KMS) 中的 AWS KMS 密钥策略。我已验证自己的 AWS Identity and Access Management (IAM) 身份(用户、群组和角色)拥有管理员权限。但是,我无法读取或更新 KMS 密钥策略。

简短描述

IAM 主体必须拥有 API 操作权限 GetKeyPolicy 才能读取密钥策略,拥有 PutKeyPolicy 权限才能更新策略。这些权限可以直接通过密钥策略授予,也可以组合使用密钥和 IAM 策略来授予。有关更多信息,请参阅 AWS Key Management Service

默认 AWS KMS 密钥 IAM 策略包含类似于以下内容的语句:

{  "Sid": "Enable IAM User Permissions",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:root"
  },
  "Action": "kms:*",
  "Resource": "*"
}

AWS 账户 111122223333 的 IAM 实体可以执行附加策略中允许的任何 AWS KMS 操作。有时,即使实体的附加策略拥有权限,也无法执行诸如 GetKeyPolicyPutKeyPolicy 之类的 API 操作。要解决此错误,请检查“Enable IAM User Permissions”语句是否已更改。

解决方法

检查 IAM 策略权限

确保您的 IAM 实体有权读取和更新与以下 IAM 策略类似的 AWS KMS 密钥:

{  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:Create*",
        "kms:Describe*",
        "kms:Enable*",
        "kms:List*",
        "kms:Put*",
        "kms:Update*",
        "kms:Revoke*",
        "kms:Disable*",
        "kms:Get*",
        "kms:Delete*",
        "kms:TagResource",
        "kms:UntagResource",
        "kms:ScheduleKeyDeletion",
        "kms:CancelKeyDeletion"
      ],
      "Resource": "arn:aws:kms:*:111122223333:key/*"
    }
  ]
}

使用 CloudTrail 事件历史记录

  1. 打开 AWS CloudTrail 控制台,然后选择事件历史记录
  2. 选择查找属性下拉列表,然后选择事件名称
  3. 在搜索窗口中,输入 PutKeyPolicy
  4. 打开最近的 PutKeyPolicy 事件。
  5. 事件记录中,复制策略并将其粘贴到常用的文本编辑器中。
  6. 将策略解析为可读格式。
  7. 在 IAM 策略 Sid “Allow access for Key Administrators” 中,记下与以下内容类似的 IAM 身份管理员:
{  "Sid": "Allow access for Key Administrators",
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "arn:aws:iam::111122223333:role/Administrator"
    ]
   },

之后可以使用密钥管理员来重新获得对密钥的访问权限。

使用 Athena 查询

如果 CloudTrail 事件历史记录事件已过去 90 天,您可以使用 Amazon Athena 搜索 CloudTrail 日志。有关说明,请参阅使用 CloudTrail 控制台为 CloudTrail 日志创建 Athena 表

有关更多信息,请参阅如何在 Athena 中自动创建表以搜索 CloudTrail 日志?

相关信息

Secure access keys

AWS KMS concepts

AWS 官方
AWS 官方已更新 1 年前