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

上次更新时间:2021 年 8 月 26 日

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

简短描述

IAM 委托人必须具有 GetKeyPolicy API 操作权限才能读取密钥策略,具有 PutKeyPolicy API 操作权限才能更新策略。这些权限可以直接通过密钥策略授予,也可以通过密钥策略和 IAM 策略的组合授予。有关更多信息,请参阅管理对 AWS KMS 密钥的访问

原定设置的 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 实体有权读取和更新类似于以下 IAM 策略的 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 控制台,然后选择 Event history(事件历史记录)。

2.    选择 Lookup attributes(查找属性)下拉列表,然后选择 Event name(事件名称)。

3.    在搜索窗口中,输入 PutKeyPolicy

4.    打开最近的 PutKeyPolicy 事件。

5.    在 Event record(事件记录)中,复制策略,然后将其粘贴到您惯用的文本编辑器中。

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 日志?


这篇文章对您有帮助吗?


您是否需要账单或技术支持?