控制對多區域金鑰的存取 - 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 政策來控制多區域金鑰的存取,僅當金鑰政策允許時。IAM 政策預設會套用至所有 AWS 區域。不過,您可以使用諸如 aws: RequestedRegion 之類的條件金鑰來限制特定區域的許可。

    若要建立主要金鑰和複本金鑰,委託人必須在 IAM 政策中具有 kms:CreateKey 許可,該許可會套用至建立金鑰的區域。

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

  • 金鑰 ARN – 每個多區域金鑰都有唯一金鑰 ARN。相關多區域金鑰的金鑰 ARN 具有相同的分割區、帳戶和金鑰 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 KMS 會在 AWS 帳戶 中建立服務連結角色。(如果角色存在,AWS KMS 會重新建立角色,這沒有任何有害的影響。) 角色在所有區域都有效。若AWS KMS要允許建立 (或重新建立) 服務連結角色,建立多區域主要索引鍵的主體必須具有 iam: 權限。CreateServiceLinkedRole

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

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

  • kms:CreateKey

  • kms:ReplicateKey

  • kms:UpdatePrimaryRegion

  • iam:CreateServiceLinkedRole

建立主要金鑰

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

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 政策陳述式會使用具有 kms:MultiRegion 條件索引鍵的 Deny 動作,以防止委託人建立多區域金鑰。

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

複寫金鑰

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

  • kms:主鍵的密鑰策略中的ReplicateKey權限。

  • kms:在複本金鑰區域中有效的 IAM 政策中的CreateKey權限。

允許這些許可時請小心謹慎。其允許委託人建立 KMS 金鑰,以及授權其使用的金鑰政策。kms:ReplicateKey 許可還授權在 AWS KMS 範圍內跨區域邊界傳輸金鑰材料。

若要限制可複寫多區域金鑰的項目,請使用 kms: ReplicaRegion 條件金鑰。AWS 區域它只限制 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" ] } } }

更新主要區域

授權的委託人可以將複本金鑰轉換為主要金鑰,這會將先前的主要金鑰變更為複本。這個動作稱為更新主要區域。若要更新主要區域,主體需要兩個區域的 kms: 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 條件金鑰僅允許單一區域金鑰或僅允許多區域金鑰。或者使用 kms: 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 提供其所需的許可,以同步共用屬性。您可以檢視記錄在SynchronizeMultiRegionKey CloudTrail 記錄AWS CloudTrail檔中AWS KMS同步處理共用屬性的事件。

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

服務連結角色是 IAM 角色,提供許可給一個 AWS 服務代表您呼叫其他 AWS 服務。目的是讓您輕鬆使用多個整合的 AWS 服務的功能,而不需要建立和維護複雜的 IAM 政策。

對於多區域金鑰,請使用原則AWS KMS建立AWSServiceRoleForKeyManagementServiceMultiRegionKeys服務連結角色。AWSKeyManagementServiceMultiRegionKeysServiceRolePolicy此政策為角色提供 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不會刪除您的AWSServiceRoleForKeyManagementServiceMultiRegionKeys服務連結角色AWS 帳戶,也無法將其刪除。但是,除非您的AWS 帳戶和區域中有多區域金鑰,否則不AWS KMS會擔任該AWSServiceRoleForKeyManagementServiceMultiRegionKeys角色或使用其任何權限。