控制對多區域金鑰的存取 - AWS Key Management Service

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

控制對多區域金鑰的存取

您可以在合規、災難復原和備份案例中使用多區域金鑰,而單一區域金鑰會比較複雜。不過,由於多區域金鑰的安全屬性與單一區域金鑰的安全屬性有很大的不同,所以建議在授權建立、管理和使用多區域金鑰時謹慎使用。

注意

Resource 欄位中具有萬用字元的現有IAM政策陳述式現在同時適用於單一區域和多區域金鑰。若要將它們限制為單一區域KMS金鑰或多區域金鑰,請使用 kms:MultiRegion 條件金鑰。

使用您的授權工具來防止在任何單一區域足夠的情況下建立和使用多區域金鑰。允許委託人僅複寫多區域金鑰至需要它們 AWS 區域 的 。只將多區域金鑰的許可授予需要這些金鑰的委託人,並且僅為需要這些金鑰的任務授予。

您可以使用金鑰政策、IAM政策和授予,讓IAM主體在 中管理和使用多區域金鑰 AWS 帳戶。每個多區域金鑰都是具有唯一金鑰ARN和金鑰政策的獨立資源。您需要為每個金鑰建立和維護金鑰政策,並確保新的和現有的IAM政策實作您的授權策略。

多區域金鑰的授權基礎知識

為多區域金鑰設計金鑰政策和IAM政策時,請考慮下列原則。

  • 金鑰政策 — 每個多區域金鑰都是獨立的KMS金鑰資源,具有自己的金鑰政策 。您可以將相同或不同的金鑰政策套用至相關多區域金鑰集合中的每個金鑰。金鑰政策不是多區域金鑰的共用屬性。 AWS KMS 不會在相關的多區域金鑰之間複製或同步金鑰政策。

    當您在 AWS KMS 主控台中建立複本金鑰時,主控台會顯示主金鑰的目前金鑰政策,以方便使用。您可以使用此金鑰政策,加以編輯,或刪除並取代。但即使您接受主金鑰政策不變, AWS KMS 也不會同步政策。例如,如果您變更主要金鑰的金鑰政策,複本金鑰的金鑰政策會保持不變。

  • 預設金鑰政策 — 當您使用 CreateKeyReplicateKey操作建立多區域金鑰時,除非您在請求中指定金鑰政策,否則會套用預設金鑰政策。這與套用至單一區域金鑰的預設金鑰政策相同。

  • IAM 政策 — 如同所有KMS金鑰,您只能在金鑰IAM政策允許時,使用政策來控制對多區域金鑰的存取。 允許存取 AWS 帳戶 並啟用IAM政策IAM 政策 AWS 區域 預設會套用至所有 。不過,您可以使用條件金鑰,例如 aws:RequestedRegion 來限制特定區域的許可。

    若要建立主要金鑰和複本金鑰,主體必須在套用至建立金鑰的區域IAM的政策中擁有kms:CreateKey許可。

  • 授予 - AWS KMS 授予是區域性的。每次授予都允許一個KMS金鑰的許可。您可以使用授予來允許多區域主要金鑰或複本金鑰的許可。但您無法使用單一授予來允許多個KMS金鑰的許可,即使它們是相關的多區域金鑰。

  • 金鑰 ARN — 每個多區域金鑰都有唯一的金鑰 ARN。相關多區域金鑰ARNs的金鑰具有相同的分割區、帳戶和金鑰 ID,但區域不同。

    若要將IAM政策陳述式套用至特定多區域金鑰,請使用其金鑰ARN或包含 區域的金鑰ARN模式。若要將IAM政策陳述式套用至所有相關多區域金鑰,請在 的區域元素中使用萬用字元 (*)ARN,如下列範例所示。

    { "Effect": "Allow", "Action": [ "kms:Describe*", "kms:List*" ], "Resource": { "arn:aws:kms:*::111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab" } }

    若要將政策陳述式套用至 中的所有多區域金鑰 AWS 帳戶,您可以使用 kms:MultiRegion政策條件或包含獨特mrk-字首的金鑰 ID 模式。

  • 服務連結角色 — 建立多區域主金鑰的主體必須具有 iam:CreateServiceLinkedRole 許可。

    若要同步相關多區域金鑰的共用屬性, AWS KMS 會擔任IAM服務連結角色 。每當您建立多區域主金鑰時, 會在 AWS 帳戶 中 AWS KMS 建立服務連結角色。(如果角色存在, AWS KMS 會重新建立角色,這沒有任何有害的影響。) 角色在所有區域都有效。若要允許 AWS KMS 建立 (或重新建立) 服務連結角色,建立多區域主金鑰的主體必須具有 iam:CreateServiceLinkedRole 許可。

授權多區域主要管理員和使用者

建立和管理多區域金鑰的委託人需要在主要區域和複本區域中的下列許可:

  • kms:CreateKey

  • kms:ReplicateKey

  • kms:UpdatePrimaryRegion

  • iam:CreateServiceLinkedRole

建立主要金鑰

若要建立多區域主金鑰 ,主體需要原則中的 kms:CreateKeyiam:CreateServiceLinkedRole 許可,該IAM政策在主金鑰的 區域中有效。擁有這些許可的委託人可以建立單一區域和多區域金鑰,除非您限制其許可。

iam:CreateServiceLinkedRole 許可允許 AWS KMS 建立AWSServiceRoleForKeyManagementServiceMultiRegionKeys角色,以同步相關多區域金鑰的共用屬性

例如,此IAM政策允許主體建立任何類型的KMS金鑰。

{ "Version": "2012-10-17", "Statement":{ "Action": [ "kms:CreateKey", "iam:CreateServiceLinkedRole" ], "Effect":"Allow", "Resource":"*" } }

若要允許或拒絕建立多區域主金鑰的許可,請使用 kms:MultiRegion 條件金鑰。有效值為 true (多區域金鑰) 或 false (單一區域金鑰)。例如,下列IAM政策陳述式使用 Deny動作搭配 kms:MultiRegion 條件索引鍵,以防止主體建立多區域索引鍵。

{ "Version": "2012-10-17", "Statement":{ "Action":"kms:CreateKey", "Effect":"Deny", "Resource":"*", "Condition": { "Bool": "kms:MultiRegion": true } } }

複寫金鑰

若要建立多區域複本金鑰,則委託人需要下列許可:

允許這些許可時請小心謹慎。它們允許主體建立授權其使用的KMS金鑰和金鑰政策。kms:ReplicateKey 許可還授權在 AWS KMS範圍內跨區域邊界傳輸金鑰材料。

若要限制可複寫多區域金鑰 AWS 區域 的 ,請使用 kms:ReplicaRegion 條件金鑰。它只限制 kms:ReplicateKey 許可。否則,它沒有影響。例如,下列金鑰政策允許委託人複寫該主要金鑰,但僅限於指定區域中。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/Administrator" }, "Action": "kms:ReplicateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ReplicaRegion": [ "us-east-1", "eu-west-3", "ap-southeast-2" ] } } }

更新主要區域

授權的委託人可以將複本金鑰轉換為主要金鑰,這會將先前的主要金鑰變更為複本。這個動作稱為更新主要區域。若要更新主要區域,主體需要 公里:UpdatePrimaryRegion兩個區域中的許可。您可以在金鑰政策中提供這些許可IAM。

  • 主要金鑰上的 kms:UpdatePrimaryRegion。此許可必須在主要金鑰區域有效。

  • 複本金鑰上的 kms:UpdatePrimaryRegion。此許可必須在複本金鑰區域中生效。

例如,下列金鑰政策提供可擔任管理員角色的使用者更新KMS金鑰主要區域的權限。此KMS金鑰可以是此操作中的主要金鑰或複本金鑰。

{ "Effect": "Allow", "Resource": "*", "Principal": { "AWS": "arn:aws:iam::111122223333:role/Administrator" }, "Action": "kms:UpdatePrimaryRegion" }

若要限制 AWS 區域 可託管主金鑰的 ,請使用 kms:PrimaryRegion 條件金鑰。例如,下列IAM政策陳述式允許主體更新 中多區域金鑰的主要區域 AWS 帳戶,但僅當新的主要區域是指定區域之一時。

{ "Effect": "Allow", "Action": "kms:UpdatePrimaryRegion", "Resource": { "arn:aws:kms:*:111122223333:key/*" }, "Condition": { "StringEquals": { "kms:PrimaryRegion": [ "us-west-2", "sa-east-1", "ap-southeast-1" ] } } }

使用和管理多區域金鑰

根據預設,具有在 和 AWS 帳戶 區域中使用和管理KMS金鑰許可的主體也具有使用和管理多區域金鑰的許可。不過,您可以使用 kms:MultiRegion 條件索引鍵來僅允許單一區域索引鍵或多區域索引鍵。或使用 km:MultiRegionKeyType 條件索引鍵,以僅允許多區域主索引鍵或複本索引鍵。兩個條件金鑰都會控制對CreateKey操作的存取,以及對使用現有KMS金鑰的任何操作的存取,例如 EncryptEnableKey

下列範例IAM政策陳述式使用 kms:MultiRegion 條件金鑰,以防止主體使用或管理任何多區域金鑰。

{ "Effect": "Deny", "Action": "kms:*", "Resource": "*", "Condition": { "Bool": "kms:MultiRegion": true } }

此範例IAM政策陳述式使用 kms:MultiRegionKeyType條件,允許主體排程和取消金鑰刪除,但僅限於多區域複本金鑰。

{ "Effect": "Allow", "Action": [ "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": { "arn:aws:kms:us-west-2:111122223333:key/*" }, "Condition": { "StringEquals": "kms:MultiRegionKeyType": "REPLICA" } }

授權 AWS KMS 同步多區域金鑰

若要支援多區域金鑰 , AWS KMS 會使用IAM服務連結角色。此角色提供同步共用屬性 所需的 AWS KMS 許可。您可以在日誌 AWS CloudTrail 中檢視記錄 AWS KMS 同步共用屬性SynchronizeMultiRegionKey CloudTrail 的事件。

關於多區域金鑰的服務連結角色

服務連結角色是授予一個 AWS 服務許可,以 AWS 代表您呼叫其他服務IAM的角色。它旨在讓您更輕鬆地使用多個整合 AWS 服務的功能,而無需建立和維護複雜的IAM政策。

對於多區域金鑰, 會使用 AWSKeyManagementServiceMultiRegionKeysServiceRolePolicy政策 AWS KMS 建立AWSServiceRoleForKeyManagementServiceMultiRegionKeys服務連結角色。此政策為角色提供 kms:SynchronizeMultiRegionKey 許可,允許其同步多區域金鑰的共用屬性。

由於AWSServiceRoleForKeyManagementServiceMultiRegionKeys服務連結角色僅信任 mrk.kms.amazonaws.com, AWS KMS 因此只能擔任此服務連結角色。此角色僅限於 AWS KMS 需要同步多區域共用屬性的操作。它不會授予 AWS KMS 任何其他許可。例如, AWS KMS 沒有建立、複寫或刪除任何KMS金鑰的許可。

如需 AWS 服務如何使用服務連結角色的詳細資訊,請參閱 IAM 使用者指南中的使用服務連結角色

建立服務連結角色

AWS KMS 如果角色不存在,當您建立多區域金鑰 AWS 帳戶 時, 會自動在 中建立AWSServiceRoleForKeyManagementServiceMultiRegionKeys服務連結角色。您無法直接建立或重新建立此服務連結角色。

編輯服務連結角色描述

您無法在AWSServiceRoleForKeyManagementServiceMultiRegionKeys服務連結角色中編輯角色名稱或政策陳述式,但您可以編輯角色描述。如需指示,請參閱 IAM 使用者指南 中的編輯服務連結角色

刪除服務連結角色

AWS KMS 不會從 AWS 帳戶 中刪除AWSServiceRoleForKeyManagementServiceMultiRegionKeys服務連結角色,而且您無法刪除它。但是,除非您的 AWS 帳戶 和 區域中有多區域金鑰,否則 AWS KMS 不會擔任該AWSServiceRoleForKeyManagementServiceMultiRegionKeys角色或使用其任何許可。