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

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

使用別名來控制對 KMS 金鑰的存取

您可以根據與 KMS 金鑰相關聯的別名來控制對 KMS 金鑰的存取。若要這麼做,請使用 kms: RequestAliaskms: ResourceAliases 條件金鑰。這項功能是對屬性型存取控制 (ABAC) 的 AWS KMS 支援。

kms:RequestAlias 條件索引鍵允許或拒絕根據請求中的別名存取 KMS 金鑰。kms:ResourceAliases 條件索引鍵會根據與 KMS 金鑰相關聯的別名,允許或拒絕存取 KMS 金鑰。

這些功能不允許您使用政策陳述式中 resource 元素的別名來識別 KMS 金鑰。當別名是 resource 元素的值時,政策會套用至別名資源,而不會套用至可能與其相關聯的任何 KMS 金鑰。

注意

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

使用別名控制 KMS 金鑰的存取時,請考慮下列事項:

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

  • 要謹慎地授予委託人 kms:CreateAliaskms:UpdateAliaskms:DeleteAlias 許可,讓其新增、編輯和刪除別名。當您使用別名來控制對 KMS 金鑰的存取時,變更別名可授予委託人使用 KMS 金鑰 (否則其沒有使用的許可) 的許可。它也可以拒絕存取其他委託人執行任務所需的 KMS 金鑰。

  • 檢閱您 AWS 帳戶 的委託人,目前具有管理別名和調整許可的許可 (如有必要)。沒有變更主要政策或建立授權之許可的重要管理員可以控制 KMS 金鑰的存取,如果他們擁有管理別名的許可。

    例如,重要管理員的主控台預設重要政策會包括 kms:CreateAliaskms:DeleteAliaskms:UpdateAlias 許可。IAM 政策可能會為您的 AWS 帳戶 中的所有 KMS 金鑰提供別名許可。例如,AWSKeyManagementServicePowerUser受管理的原則允許主體建立、刪除和列出所有 KMS 金鑰的別名,但不更新它們。

  • 在設定取決於別名的政策之前,請先檢閱 AWS 帳戶 中 KMS 金鑰的別名。請確定您的政策僅適用於您想要包含的別名。使用CloudTrail 記錄CloudWatch 警示來警示您可能會影響 KMS 金鑰存取的別名變更。此外,ListAliases回應還包括每個別名的建立日期和上次更新日期。

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

kms:RequestAlias 條件索引鍵依賴於操作請求中明確指定的別名。kms:ResourceAliases 條件索引鍵取決於與 KMS 金鑰相關聯的別名,即使其並沒有出現在請求中。

公里:RequestAlias

根據識別請求中 KMS 金鑰的別名,允許或拒絕存取 KMS 金鑰。您可以在金鑰政策或 IAM 政策中使用 kms: RequestAlias 條件金鑰。它適用於在請求中使用別名來識別 KMS 金鑰的作業,也就是密碼編譯作業GetPublicKey. DescribeKey 它對別名作業無效,例如CreateAliasDeleteAlias

在條件索引鍵中,指定別名名稱或別名名稱模式。您不能指定別名 ARN

例如,下列金鑰政策陳述式可讓委託人對 KMS 金鑰使用指定的操作。僅在請求使用包含 alpha 來識別 KMS 金鑰的別名時,許可才有效。

{ "Sid": "Key policy using a request alias condition", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/alpha-developer" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringLike": { "kms:RequestAlias": "alias/*alpha*" } } }

下列授權委託人提出的範例請求將滿足條件。不過,使用金鑰 ID 的請求、金鑰 ARN,或者不同的別名將無法滿足條件,即使這些值識別了相同的 KMS 索引鍵。

$ aws kms describe-key --key-id "arn:aws:kms:us-west-2:111122223333:alias/project-alpha"

公里:ResourceAliases

根據與 KMS 金鑰相關聯的別名允許或拒絕存取 KMS 金鑰,即使請求中未使用別名。kms: ResourceAliases 條件金鑰可讓您指定別名或別名模式,例如alias/test*,您可以在 IAM 政策中使用它來控制對相同區域中數個 KMS 金鑰的存取。它適用於使用 KMS 金鑰的任何 AWS KMS 操作。

例如,下列 IAM 政策可讓委託人管理兩個 AWS 帳戶 中 KMS 金鑰的自動金鑰輪換。不過,此許可僅適用於與開頭為 restricted 之別名關聯的 KMS 金鑰。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AliasBasedIAMPolicy", "Effect": "Allow", "Action": [ "kms:EnableKeyRotation", "kms:DisableKeyRotation", "kms:GetKeyRotationStatus" ], "Resource": [ "arn:aws:kms:*:111122223333:key/*", "arn:aws:kms:*:444455556666:key/*" ], "Condition": { "ForAnyValue:StringLike": { "kms:ResourceAliases": "alias/restricted*" } } } ] }

kms:ResourceAliases 條件是資源的條件,而不是請求。因此,未指定別名的請求仍然可以滿足條件。

下列範例請求 (指定相符別名) 會滿足條件。

$ aws kms enable-key-rotation --key-id "alias/restricted-project"

不過,下列範例請求也符合條件,前提是指定的 KMS 金鑰具有以 restricted 開頭的別名,即使別名未在請求中使用。

$ aws kms enable-key-rotation --key-id "1234abcd-12ab-34cd-56ef-1234567890ab"