為何我無法在 AWS KMS 中讀取或更新 KMS 金鑰政策?

上次更新日期︰2021 年 8 月 26 日

我想要在 AWS Key Management Service (AWS KMS) 中更新 AWS KMS 金鑰政策。我確認我擁有 AWS Identity and Access Management (IAM) 身分 (使用者、群組和角色) 的管理員許可,但我無法讀取或更新 KMS 金鑰政策。

簡短描述

IAM 委託人 必須具有 API 動作許可 GetKeyPolicy 才能讀取金鑰政策,以及具有 PutKeyPolicy 才能更新政策。可直接透過金鑰政策,或是金鑰和 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 動作。如果實體無法執行 API 動作 (例如 GetKeyPolicyPutKeyPolicy),即使在其連接政策中允許各項許可,「啟用 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 (事件記錄) 中,複製 policy (政策),然後將其貼至您最愛的文字編輯器中。

6.    將政策解析為可讀格式。

7.    在 IAM 政策 Sid「允許金鑰管理員存取」中,請注意類似下列內容的 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 日誌?


此文章是否有幫助?


您是否需要帳單或技術支援?