

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

# 控制對外部金鑰存放區的存取
<a name="authorize-xks-key-store"></a>

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

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

**Topics**
+ [授權外部金鑰存放區管理器](#authorize-xks-managers)
+ [授權外部金鑰存放區中 KMS 金鑰的使用者](#authorize-xks-users)
+ [授權 與您的外部金鑰存放區代理 AWS KMS 通訊](#allowlist-kms-xks)
+ [外部金鑰存放區代理授權 (選用)](#xks-proxy-authorization)
+ [mTLS 身分驗證 （已棄用）](#xks-mtls)

## 授權外部金鑰存放區管理器
<a name="authorize-xks-managers"></a>

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

若要使用 [Amazon VPC 端點服務連線](choose-xks-connectivity.md#xks-vpc-connectivity)建立外部金鑰存放區，且 VPC 端點服務由不同的 擁有 AWS 帳戶，您還需要下列許可：
+ `ec2:DescribeVPCEndpointServices`

建立外部金鑰存放區的主體需要許可，才能建立及設定外部金鑰存放區元件。主體只能在自己的帳戶中建立外部金鑰存放區。若要建立具有 [VPC 端點服務連接](choose-xks-connectivity.md#xks-vpc-connectivity)的外部金鑰存放區，主體必須具有建立下列元件的許可：
+ Amazon VPC
+ 公有和私有子網路
+ 網路負載平衡器和目標群組
+ Amazon VPC 端點服務

如需詳細資訊，請參閱 [Amazon VPC 的身分和存取管理](https://docs.aws.amazon.com/vpc/latest/userguide/security-iam.html)、[VPC 端點和 VPC 端點服務的身分和存取管理](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-iam.html)以及 [Elastic Load Balancing API 許可](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/elb-api-permissions.html)。

## 授權外部金鑰存放區中 KMS 金鑰的使用者
<a name="authorize-xks-users"></a>

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

將自訂金鑰存放區中的 KMS 金鑰用於[密碼編譯操作](manage-cmk-keystore.md#use-cmk-keystore)的委託人，需要許可對 KMS 金鑰執行密碼編譯操作，例如 [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)。您可以在 IAM 或金鑰政策中提供這些許可。但是，他們使用自訂金鑰存放區中的 KMS 金鑰並不需要任何額外的許可。

若要設定僅適用於外部金鑰存放區中 KMS 金鑰的許可，請使用值為 `EXTERNAL_KEY_STORE` 的 [`kms:KeyOrigin`](conditions-kms.md#conditions-kms-key-origin) 政策條件。您可以使用此條件來限制 [kms:CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 許可或 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 通訊
<a name="allowlist-kms-xks"></a>

AWS KMS 只會透過您提供的[外部金鑰存放區代理](keystore-external.md#concept-xks-proxy)與您的外部金鑰管理器通訊。 AWS KMS 會使用 [Signature 第 4 版 (SigV4) 程序](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)與您指定的[外部金鑰存放區代理身分驗證憑證](keystore-external.md#concept-xks-credential)簽署請求，以驗證您的代理。如果您為外部金鑰存放區代理使用[公有端點連線](choose-xks-connectivity.md#xks-connectivity-public-endpoint)， AWS KMS 不需要任何其他許可。

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

若要允許 AWS KMS 建立介面端點，請使用 [Amazon VPC 主控台](https://docs.aws.amazon.com/vpc/latest/privatelink/configure-endpoint-service.html#add-remove-permissions)或 [ModifyVpcEndpointServicePermissions](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyVpcEndpointServicePermissions.html) 操作。允許下列主體的許可：`cks.kms.{{<region>}}.amazonaws.com`。

如果您的 Amazon VPC 端點服務是由 AWS 帳戶 與 AWS 帳戶 擁有外部金鑰存放區 (XKS) 不同的 所擁有，您也需要允許 XKS 存取 VPC 端點服務。若要這麼做，[請允許將 XKS AWS 帳戶 ID 列為 Amazon VPC 端點服務的主體](https://docs.aws.amazon.com/vpc/latest/privatelink/configure-endpoint-service.html#add-remove-permissions)。

------
#### [ Same AWS 帳戶 ]

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

下列範例使用 [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-vpc-endpoint-service-permissions.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-vpc-endpoint-service-permissions.html) 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 主控台](https://docs.aws.amazon.com/vpc/latest/privatelink/configure-endpoint-service.html#add-remove-permissions)或具有 `RemoveAllowedPrincipals` 參數的 [ModifyVpcEndpointServicePermissions](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyVpcEndpointServicePermissions.html)。

------
#### [ Cross AWS 帳戶 ]

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

下列範例使用 [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-vpc-endpoint-service-permissions.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-vpc-endpoint-service-permissions.html) 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 主控台](https://docs.aws.amazon.com/vpc/latest/privatelink/configure-endpoint-service.html#add-remove-permissions)或具有 `RemoveAllowedPrincipals` 參數的 [ModifyVpcEndpointServicePermissions](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyVpcEndpointServicePermissions.html)。

------

## 外部金鑰存放區代理授權 (選用)
<a name="xks-proxy-authorization"></a>

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

Proxy 授權獨立於所有外部金鑰存放區代理 AWS KMS 所需的 [SigV4-based代理身分驗證](keystore-external.md#concept-xks-credential)。其也獨立於金鑰政策、IAM 政策和授予，其可授權存取會影響外部金鑰存放區或其 KMS 金鑰的操作。

若要啟用外部金鑰存放區代理的授權， 會在每個[代理 API 請求](keystore-external.md#concept-proxy-apis)中 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 操作會失敗，並顯示說明錯誤的訊息。如需詳細資訊，請參閱 [代理授權問題](xks-troubleshooting.md#fix-xks-authorization)。

## mTLS 身分驗證 （已棄用）
<a name="xks-mtls"></a>

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

不過，[Chrome 根計劃政策 （第 4.2.2 節） 的變更](https://googlechrome.github.io/chromerootprogram/policy-archive/policy-version-1-7/#422-pki-hierarchies-included-in-the-chrome-root-store)禁止 Chrome 根存放區中包含的公開信任根 CAs 在 2026 年 6 月 15 日之後使用 clientAuth 延伸金鑰使用 (EKU) 延伸發行憑證。因此， AWS KMS 無法再從 [Amazon Trust Services](https://www.amazontrust.com/repository/) 取得適用於 mTLS 的用戶端憑證。2026 年 3 月 16 日 AWS KMS 之後，用於在 中建立新的外部金鑰存放區的任何 XKS 代理都不需要 mTLS。2026 年 6 月 15 日之後，任何設定為需要 mTLS 的 XKS 代理將無法與 通訊 AWS KMS。客戶必須依賴 SigV4 身分驗證來驗證請求是否來自 AWS KMS。如需詳細資訊，請參閱[外部金鑰存放區代理身分驗證憑證](keystore-external.md#concept-xks-credential)。