使用標籤來控制對 KMS 金鑰的存取 - AWS Key Management Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用標籤來控制對 KMS 金鑰的存取

您可以根據 KMS 金鑰上的標籤控制對 AWS KMS keys 的存取。例如,您可以撰寫 IAM 政策,允許主體僅啟用和停用具有特定標籤的 KMS 金鑰。或者,您可以使用 IAM 政策來防止主體在密碼編譯操作中使用 KMS 金鑰,除非 KMS 金鑰有特定的標籤。

這項功能是對屬性型存取控制 (ABAC) 的 AWS KMS 支援。如需使用標籤以控制對 AWS 資源之存取的資訊,請參閱《IAM 使用者指南》中的什麼是適用於 AWS 的 ABAC?使用資源標籤控制對 AWS 資源的存取。如需解決與 ABAC 相關之存取問題的說明,請參閱 對適用於 AWS KMS 的 ABAC 進行故障診斷

注意

可能最多需要五分鐘才能將標籤和別名變更體現在 KMS 金鑰授權上。最近的變更可能會在 API 操作中可見,然後才會影響授權。

AWS KMS支援 aws:ResourceTag/tag-key 全域條件內容金鑰,可讓您根據 KMS 金鑰上的標籤控制對 KMS 金鑰的存取。由於多個 KMS 金鑰可以具有相同的標籤,所以此功能可讓您將許可套用至一組精選 KMS 金鑰。您也可以透過變更其標籤,輕鬆變更集合中的 KMS 金鑰。

在 AWS KMS 中,僅在 IAM 政策中支援 aws:ResourceTag/tag-key 條件索引鍵。金鑰原則不支援,這些原則僅適用於一個 KMS 金鑰,或不使用特定 KMS 金鑰的作業 (例如ListKeysListAliases作業)。

使用標籤控制存取可提供一種簡單、可擴展且靈活的方式來管理許可。不過,如果沒有正確設計和管理,它可能會意外允許或拒絕存取您的 KMS 金鑰。如果您使用標籤來控制存取,請考慮下列實務。

  • 使用標籤來強化最低權限存取的最佳實務。僅為 IAM 主體提供他們必須使用或管理之 KMS 金鑰所需的許可。例如,使用標籤來標註專案所使用的 KMS 金鑰。然後授予專案小組僅將 KMS 金鑰與專案標籤搭配使用的許可。

  • 要謹慎地授予主體 kms:TagResourcekms:UntagResource 許可,讓其新增、編輯和刪除別名。當您使用標籤來控制對 KMS 金鑰的存取時,變更標籤可授予主體使用 KMS 金鑰 (否則其沒有使用的許可) 的許可。它也可以拒絕存取其他主體執行任務所需的 KMS 金鑰。如果他們有管理標籤的許可,則沒有變更主要政策或建立授予之許可的金鑰管理員可以控制對 KMS 金鑰的存取。

    如果可能,請使用政策條件,例如 aws:RequestTag/tag-keyaws:TagKeys,將主體的標記許可限制為特定 KMS 金鑰上的特定標籤或標籤模式。

  • 檢閱您 AWS 帳戶 中目前具有標記和取消標記許可的主體,並視需要進行調整。例如,主控台金鑰管理員的預設金鑰政策包含該 KMS 金鑰的 kms:TagResourcekms:UntagResource 許可。IAM 政策可能允許所有 KMS 金鑰的標記和取消標記許可。例如,AWSKeyManagementServicePowerUser受管理的政策允許主體在所有 KMS 金鑰上標記、取消標記和列出標記。

  • 在設定依賴於標籤的政策之前,請先檢閱您 AWS 帳戶 中 KMS 金鑰上的標籤。請確定您的政策僅適用於您想要包含的標籤。使用CloudTrail 記錄CloudWatch 警示來提醒您標記可能會影響 KMS 金鑰存取權的變更。

  • 標籤型政策條件使用模式比對;其不會繫結至標籤的特定執行個體。使用標籤型條件索引鍵的政策會影響所有符合模式的新標籤和現有標籤。如果您刪除並重新建立符合政策條件的標籤,則條件會套用至新標籤,就像舊標籤一樣。

例如,請考慮以下 IAM 政策。它允許主體僅對您帳戶中屬於亞太區域 (新加坡) 區域GenerateDataKeyWithoutPlaintext且具有"Project"="Alpha"標籤的 KMS 金鑰呼叫和解密作業。您可以將此政策連接至 Alpha 專案範例中的角色。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPolicyWithResourceTag", "Effect": "Allow", "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:Decrypt" ], "Resource": "arn:aws:kms:ap-southeast-1:111122223333:key/*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": "Alpha" } } } ] }

以下 IAM 政策範例允許主體使用帳戶中的任何 KMS 金鑰來進行密碼編譯操作。但其禁止主體針對具有 "Type"="Reserved" 標籤或不具有 "Type" 標籤的 KMS 金鑰使用這些密碼編譯操作。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMAllowCryptographicOperations", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:GenerateDataKey*", "kms:Decrypt", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:*:111122223333:key/*" }, { "Sid": "IAMDenyOnTag", "Effect": "Deny", "Action": [ "kms:Encrypt", "kms:GenerateDataKey*", "kms:Decrypt", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "StringEquals": { "aws:ResourceTag/Type": "Reserved" } } }, { "Sid": "IAMDenyNoTag", "Effect": "Deny", "Action": [ "kms:Encrypt", "kms:GenerateDataKey*", "kms:Decrypt", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "Null": { "aws:ResourceTag/Type": "true" } } } ] }