控制對外部金鑰存放區的存取 - AWS Key Management Service

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

控制對外部金鑰存放區的存取

與標準 KMS 金鑰搭配使用的所有 AWS KMS 存取控制功能 — 金鑰政策IAM 政策和授權 — 對外部金鑰存放區中的 KMS 金鑰的運作方式相同。您可以使用 IAM 政策來控制對建立和管理外部金鑰存放區之 API 操作的存取。您可以使用 IAM 政策和金鑰政策來控制對外部金鑰存放區 AWS KMS keys 中 的存取。您也可以為 AWS 組織和 VPC 端點政策使用服務控制政策,以控制對外部金鑰存放區中 KMS 金鑰的存取。 https://docs.aws.amazon.com/vpc/latest/privatelink/interface-endpoints.html#edit-vpc-endpoint-policy

建議您僅向使用者和角色提供執行任務所需的許可。

授權外部金鑰存放區管理器

建立及管理外部金鑰存放區的主體需要自訂金鑰存放區操作許可。以下清單說明了外部金鑰存放區管理器所需的最低許可。由於自訂金鑰存放區不是 AWS 資源,因此您無法為其他 中的主體提供外部金鑰存放區的許可 AWS 帳戶。

  • kms:CreateCustomKeyStore

  • kms:DescribeCustomKeyStores

  • kms:ConnectCustomKeyStore

  • kms:DisconnectCustomKeyStore

  • kms:UpdateCustomKeyStore

  • kms:DeleteCustomKeyStore

若要使用 Amazon VPC 端點服務連線建立外部金鑰存放區,且 VPC 端點服務由不同的 擁有 AWS 帳戶,您還需要下列許可:

  • ec2:DescribeVPCEndpointServices

建立外部金鑰存放區的主體需要許可,才能建立及設定外部金鑰存放區元件。主體只能在自己的帳戶中建立外部金鑰存放區。若要建立具有 VPC 端點服務連接的外部金鑰存放區,主體必須具有建立下列元件的許可:

  • Amazon VPC

  • 公有和私有子網路

  • 網路負載平衡器和目標群組

  • Amazon VPC 端點服務

如需詳細資訊,請參閱 Amazon VPC 的身分和存取管理VPC 端點和 VPC 端點服務的身分和存取管理以及 Elastic Load Balancing API 許可

授權外部金鑰存放區中 KMS 金鑰的使用者

在外部金鑰存放區 AWS KMS keys 中建立和管理的委託人需要與建立和管理任何 KMS 金鑰的委託人相同的許可 AWS KMS。外部金鑰存放區中 KMS 金鑰的預設金鑰政策與 AWS KMS中 KMS 金鑰的預設金鑰政策完全相同。屬性型存取控制 (ABAC) 使用標籤和別名來控制對 KMS 金鑰的存取,對外部金鑰存放區中的 KMS 金鑰也有效。

將自訂金鑰存放區中的 KMS 金鑰用於密碼編譯操作的委託人,需要許可對 KMS 金鑰執行密碼編譯操作,例如 kms:Decrypt。您可以在 IAM 或金鑰政策中提供這些許可。但是,他們使用自訂金鑰存放區中的 KMS 金鑰並不需要任何額外的許可。

若要設定僅適用於外部金鑰存放區中 KMS 金鑰的許可,請使用值為 EXTERNAL_KEY_STOREkms:KeyOrigin 政策條件。您可以使用此條件來限制 kms:CreateKey 許可或 KMS 金鑰資源專屬的任何許可。例如,下列 IAM 政策允許其所連接的身分,以便對帳戶中的所有 KMS 金鑰呼叫指定的操作,前提是 KMS 金鑰位於外部金鑰存放區中。請注意,您可以將許可限制為外部金鑰存放區中的 KMS 金鑰,以及 中的 KMS 金鑰 AWS 帳戶,但不能限制為帳戶中的任何特定外部金鑰存放區。

{ "Sid": "AllowKeysInExternalKeyStores", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringEquals": { "kms:KeyOrigin": "EXTERNAL_KEY_STORE" } } }

授權 與您的外部金鑰存放區代理 AWS KMS 通訊

AWS KMS 只會透過您提供的外部金鑰存放區代理與您的外部金鑰管理器通訊。 AWS KMS 會使用 Signature 第 4 版 (SigV4) 程序與您指定的外部金鑰存放區代理身分驗證憑證簽署請求,以驗證您的代理。如果您為外部金鑰存放區代理使用公有端點連線, AWS KMS 不需要任何其他許可。

不過,如果您使用的是 VPC 端點服務連線,您必須授予 AWS KMS 許可,才能建立 Amazon VPC 端點服務的介面端點。無論外部金鑰存放區代理位於您的 VPC 中,還是外部金鑰存放區代理位於其他地方,但使用 VPC 端點服務與 通訊,都需要此許可 AWS KMS。

若要允許 AWS KMS 建立介面端點,請使用 Amazon VPC 主控台ModifyVpcEndpointServicePermissions 操作。允許下列主體的許可:cks.kms.<region>.amazonaws.com

如果您的 Amazon VPC 端點服務是由 AWS 帳戶 與 AWS 帳戶 擁有外部金鑰存放區 (XKS) 不同的 所擁有,您也需要允許 XKS 存取 VPC 端點服務。若要這麼做,請允許將 XKS AWS 帳戶 ID 列為 Amazon VPC 端點服務的主體

Same AWS 帳戶

當您的 VPC 端點服務擁有 AWS 帳戶 與外部金鑰存放區相同的 時,您必須 AWS KMS 將 新增至 VPC 端點服務的允許委託人清單。

下列範例使用 modify-vpc-endpoint-service-permissions AWS CLI 命令, AWS KMS 允許 連線到美國西部 (奧勒岡) (us-west-2) 區域中指定的 VPC 端點服務。使用此命令之前,請將 Amazon VPC 服務 ID 和 AWS 區域 取代為您的組態的有效值。

modify-vpc-endpoint-service-permissions --service-id vpce-svc-12abc34567def0987 --add-allowed-principals '["cks.kms.us-west-2.amazonaws.com"]'

若要移除此許可,請使用 Amazon VPC 主控台或具有 RemoveAllowedPrincipals 參數的 ModifyVpcEndpointServicePermissions

Cross AWS 帳戶

當另一個 VPC 端點服務擁有時 AWS 帳戶,您必須將 AWS KMS 和外部金鑰存放區新增至 VPC 端點服務的允許主體清單。

下列範例使用 modify-vpc-endpoint-service-permissions AWS CLI 命令來允許 AWS KMS 和外部金鑰存放區 (XKS) 連線到美國西部 (奧勒岡) (us-west-2) 區域中指定的 VPC 端點服務。使用此命令之前,請將 Amazon VPC 服務 ID、 AWS 區域和 IAM 主體 ARN 取代為您的組態的有效值。IAM 主體應該替換為 XKS 擁有者中的主體 AWS 帳戶。

在此範例中, arn:aws:iam::123456789012:role/cks_role是 XKS 擁有者帳戶中的 IAM 主體,用於建立、更新或連接 XKS 到您的 VPC 端點服務。如果您想要允許 XKS 擁有者帳戶中的所有主體存取您的 VPC 端點服務,您可以指定 arn:aws:iam::123456789012:root

modify-vpc-endpoint-service-permissions --service-id vpce-svc-12abc34567def0987 --add-allowed-principals '["cks.kms.us-west-2.amazonaws.com", "arn:aws:iam::123456789012:role/cks_role"]'

若要移除此許可,請使用 Amazon VPC 主控台或具有 RemoveAllowedPrincipals 參數的 ModifyVpcEndpointServicePermissions

外部金鑰存放區代理授權 (選用)

某些外部金鑰存放區代理會實作使用其外部金鑰的授權需求。允許外部金鑰存放區代理 (但不是必需的) 來設計和實作授權方案,該方案允許特定使用者僅在特定條件下請求特定操作。例如,代理可能會設定為允許使用者 A 使用特定的外部金鑰進行加密,但無法使用其進行解密。

Proxy 授權獨立於所有外部金鑰存放區代理 AWS KMS 所需的 SigV4-based代理身分驗證。其也獨立於金鑰政策、IAM 政策和授予,其可授權存取會影響外部金鑰存放區或其 KMS 金鑰的操作。

若要啟用外部金鑰存放區代理的授權, 會在每個代理 API 請求中 AWS KMS 包含中繼資料,包括發起人、KMS 金鑰、 AWS KMS 操作、 AWS 服務 (如果有的話)。外部金鑰代理 API 第 1 版 (v1) 的請求中繼資料如下所示。

"requestMetadata": { "awsPrincipalArn": string, "awsSourceVpc": string, // optional "awsSourceVpce": string, // optional "kmsKeyArn": string, "kmsOperation": string, "kmsRequestId": string, "kmsViaService": string // optional }

例如,您可以設定代理以允許來自特定委託人 (awsPrincipalArn) 的請求,但僅限於由特定 AWS 服務 () 代表委託人提出請求時kmsViaService

如果代理授權失敗,相關 AWS KMS 操作會失敗,並顯示說明錯誤的訊息。如需詳細資訊,請參閱 代理授權問題

mTLS 身分驗證 (已棄用)

本指南的先前版本提及交互 Transport Layer Security (mTLS) 做為驗證請求的選用次要身分驗證機制 AWS KMS。透過 mTLS,雙方 (AWS KMS 做為用戶端和 XKS 代理做為伺服器) 透過 TLS 頻道進行通訊會使用憑證彼此驗證。

不過,Chrome 根計劃政策 (第 4.2.2 節) 的變更禁止 Chrome 根存放區中包含的公開信任根 CAs 在 2026 年 6 月 15 日之後使用 clientAuth 延伸金鑰使用 (EKU) 延伸發行憑證。因此, AWS KMS 無法再從 Amazon Trust Services 取得適用於 mTLS 的用戶端憑證。2026 年 3 月 16 日 AWS KMS 之後,用於在 中建立新的外部金鑰存放區的任何 XKS 代理都不需要 mTLS。2026 年 6 月 15 日之後,任何設定為需要 mTLS 的 XKS 代理將無法與 通訊 AWS KMS。客戶必須依賴 SigV4 身分驗證來驗證請求是否來自 AWS KMS。如需詳細資訊,請參閱外部金鑰存放區代理身分驗證憑證