本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
控制對外部金鑰存放區的存取
您搭配標準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 的身分和存取管理VPC、VPC端點和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.rproxy.goskope.comcks.kms.
。eu-west-3
.amazonaws.com -
憑證必須鏈結至與 Amazon Trust Services
相關聯的憑證授權機構。