本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用標籤控制對KMS金鑰的存取
您可以 AWS KMS keys 根據KMS金鑰上的標籤控制對 的存取。例如,您可以撰寫IAM政策,允許主體僅啟用和停用具有特定標籤的KMS金鑰。或者,您可以使用 IAM政策來防止主體在密碼編譯操作中使用KMS金鑰,除非KMS金鑰具有特定的標籤。
此功能是屬性型存取控制 () AWS KMS 支援的一部分ABAC。如需使用標籤控制資源存取 AWS 的資訊,請參閱 使用者指南 中的什麼ABAC是 AWS? 和使用資源標籤控制 AWS 資源存取。 IAM 如需解決 相關存取問題的協助ABAC,請參閱 ABAC 故障診斷 AWS KMS。
注意
標籤和別名變更最多可能需要五分鐘才能影響KMS金鑰授權。在影響授權之前,API操作中可能會看到最近的變更。
AWS KMS 支援 aws:ResourceTag/tag-key 全域條件內容金鑰 ,可讓您根據KMS金鑰上的標籤控制KMS對金鑰的存取。由於多個KMS金鑰可以具有相同的標籤,此功能可讓您將許可套用至一組選取的KMS金鑰。您也可以透過變更金鑰標籤,輕鬆變更 集中的KMS金鑰。
在 中 AWS KMS,aws:ResourceTag/tag-key
條件索引鍵僅支援 IAM政策。金鑰政策不支援此功能,僅適用於一個KMS金鑰,或不使用特定KMS金鑰的操作,例如 ListKeys或 ListAliases操作。
使用標籤控制存取可提供一種簡單、可擴展且靈活的方式來管理許可。不過,如果未正確設計和管理,可能會不慎允許或拒絕存取您的KMS金鑰。如果您使用標籤來控制存取,請考慮下列實務。
-
使用標籤來強化最低權限存取的最佳實務。僅提供IAM委託人必須使用或管理的KMS金鑰所需的許可。例如,使用標籤來標記專案所使用的KMS金鑰。然後授予專案團隊許可,以僅使用具有專案標籤的KMS金鑰。
-
要謹慎地授予主體
kms:TagResource
和kms:UntagResource
許可,讓其新增、編輯和刪除別名。當您使用標籤來控制對KMS金鑰的存取時,變更標籤可以授予主體許可,以使用他們原本沒有使用許可的KMS金鑰。它也可以拒絕存取其他主體執行其任務所需的KMS金鑰。沒有變更金鑰政策或建立授予許可的金鑰管理員,如果他們擁有管理標籤的許可,則可以控制對KMS金鑰的存取。盡可能使用政策條件,例如
aws:RequestTag/tag-key
或aws:TagKeys
,將主體的標記許可限制為特定標籤或特定KMS金鑰上的標籤模式。 -
檢閱您 中目前具有標記和取消標記許可 AWS 帳戶 的主體,並視需要進行調整。例如,金鑰管理員的主控台預設金鑰政策包含該KMS金鑰的
kms:TagResource
和kms:UntagResource
許可。IAM 政策可能會允許在所有KMS金鑰上標記和取消標記許可。例如,AWSKeyManagementServicePowerUser受管政策允許主體在所有KMS金鑰上標記、取消標記和列出標籤。 -
在設定取決於標籤的政策之前,請檢閱 中KMS金鑰上的標籤 AWS 帳戶。請確定您的政策僅適用於您想要包含的標籤。使用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" } } } ] }