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

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

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

您搭配標準KMS金鑰使用的所有 AWS KMS 存取控制功能 — 金鑰政策 IAM 、 授予 — 對外部金鑰存放區中的KMS金鑰使用的方式相同。您可以使用 IAM 政策來控制對建立和管理外部金鑰存放區的API操作的存取。您可以使用IAM政策和金鑰政策來控制對外部金鑰存放區 AWS KMS keys 中 的存取。您也可以針對您的 AWS 組織和端點政策使用服務控制政策來控制對外部KMS金鑰存放區中金鑰的存取。 VPC

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

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

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

  • kms:CreateCustomKeyStore

  • kms:DescribeCustomKeyStores

  • kms:ConnectCustomKeyStore

  • kms:DisconnectCustomKeyStore

  • kms:UpdateCustomKeyStore

  • kms:DeleteCustomKeyStore

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

  • Amazon VPC

  • 公有和私有子網路

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

  • Amazon VPC端點服務

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

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

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

使用自訂KMS金鑰存放區中金鑰進行密碼編譯操作的主體需要許可,才能使用KMS金鑰執行密碼編譯操作,例如 kms:Decrypt 。您可以在 IAM或 金鑰政策中提供這些許可。但是,它們不需要任何額外的許可,即可在自訂KMS金鑰存放區中使用金鑰。

若要設定僅適用於外部KMS金鑰存放區中金鑰的許可,請使用值為 kms:KeyOrigin的政策條件EXTERNAL_KEY_STORE。您可以使用此條件來限制 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

例如,下列 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主控台ModifyVpcEndpointServicePermissions搭配 RemoveAllowedPrincipals 參數。

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

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

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

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

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

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

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

mTLS 身分驗證 (選用)

若要讓您的外部金鑰存放區代理能夠驗證來自 的請求 AWS KMS, AWS KMS 會使用外部金鑰存放區的 Signature V4 (SigV4) 代理身分驗證憑證,將所有請求簽署至您的外部金鑰存放區代理。

為了提供額外的保證,您的外部金鑰存放區代理僅回應 AWS KMS 請求,某些外部金鑰代理支援相互傳輸層安全 (m TLS),其中交易的雙方會使用憑證來互相驗證。mTLS 會將用戶端身分驗證 — 其中外部金鑰存放區代理伺服器驗證 AWS KMS 用戶端 — 新增至標準TLS提供的伺服器端身分驗證。在極少數情況下,您的代理身分驗證憑證遭到入侵,mTLS 會阻止第三方向外部金鑰存放區代理提出成功的API請求。

若要實作 m TLS,請將外部金鑰存放區代理設定為僅接受具有下列屬性的用戶端TLS憑證:

  • TLS 憑證上的主旨一般名稱必須是 cks.kms.<Region>.amazonaws.com,例如 cks.kms.eu-west-3.amazonaws.com

  • 憑證必須鏈結至與 Amazon Trust Services 相關聯的憑證授權機構。