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

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

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

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

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 政策可能會為 中的所有KMS金鑰提供別名許可 AWS 帳戶。例如, AWSKeyManagementServicePowerUser 受管政策允許主體建立、刪除和列出所有KMS金鑰的別名,但不更新它們。

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

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

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

公里:RequestAlias

允許或拒絕根據識別請求中KMS金鑰的別名存取KMS金鑰。您可以在金鑰政策中使用 km:RequestAlias 條件索引鍵IAM。它適用於使用別名來識別請求中KMS金鑰的操作,即密碼編譯操作 DescribeKeyGetPublicKey。它不適用於別名操作,例如 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政策可讓委託人呼叫兩個 中KMS金鑰的指定操作 AWS 帳戶。不過, 許可僅適用於與以 開頭的別名相關聯的KMS金鑰restricted

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AliasBasedIAMPolicy", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey*", "kms:DescribeKey" ], "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"