

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

# 連接外部金鑰存放區
<a name="about-xks-connecting"></a>

外部金鑰存放區連接到其外部金鑰存放區代理時，您可以[在外部金鑰存放區中建立 KMS 金鑰](create-cmk-keystore.md)，並在[密碼編譯操作](manage-cmk-keystore.md#use-cmk-keystore)中使用其現有的 KMS 金鑰。

將外部金鑰存放區連接至其外部金鑰存放區代理的程序會有所不同，這取決於外部金鑰存放區的連接。
+ 使用[公有端點連接](keystore-external.md#concept-xks-connectivity)來連接外部金鑰存放區時， AWS KMS 會將 [GetHealthStatus 請求](keystore-external.md#concept-proxy-apis)傳送至外部金鑰存放區代理，以驗證[代理 URI 端點](create-xks-keystore.md#require-endpoint)、[代理 URI 路徑](create-xks-keystore.md#require-path)和[代理身分驗證憑證](keystore-external.md#concept-xks-credential)。來自代理的成功回應可確認[代理 URI 端點](create-xks-keystore.md#require-endpoint)和[代理 URI 路徑](create-xks-keystore.md#require-path)是正確且可存取的，而且代理驗證了使用外部金鑰存放區之[代理身分驗證憑證](keystore-external.md#concept-xks-credential)所簽署的請求。
+ 當您將具有 [VPC 端點服務的外部金鑰存放區](choose-xks-connectivity.md#xks-vpc-connectivity)連線至其外部金鑰存放區代理時， 會 AWS KMS 執行下列動作：
  + 確認在[代理 URI 端點](create-xks-keystore.md#require-endpoint)中指定之私有 DNS 名稱的網域[已經過驗證](vpc-connectivity.md#xks-private-dns)。
  + 建立從 AWS KMS VPC 到 VPC 端點服務的介面端點。
  + 為代理 URI 端點中指定的私有 DNS 名稱建立私有託管區域
  + 將 [GetHealthStatus 請求](keystore-external.md#concept-proxy-apis)傳送至外部金鑰存放區代理。來自代理的成功回應可確認[代理 URI 端點](create-xks-keystore.md#require-endpoint)和[代理 URI 路徑](create-xks-keystore.md#require-path)是正確且可存取的，而且代理驗證了使用外部金鑰存放區之[代理身分驗證憑證](keystore-external.md#concept-xks-credential)所簽署的請求。

連接操作開始了連接自訂金鑰存放區的過程，但將外部金鑰存放區連接到其外部代理大約需要五分鐘。來自連接操作的成功回應並不表示外部金鑰存放區已連接。若要確認連線成功，請使用 AWS KMS 主控台或 [DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/DescribeCustomKeyStores.html) 操作來檢視金鑰存放區外部的[連線狀態](xks-connect-disconnect.md#xks-connection-state)。

當連線狀態為 時`FAILED`，連線錯誤代碼會顯示在 AWS KMS 主控台中，並新增至`DescribeCustomKeyStore`回應。如需有關解譯連接錯誤代碼的說明，請參閱 [外部金鑰存放區的連接錯誤代碼](xks-troubleshooting.md#xks-connection-error-codes)。

## 連接並重新連線至您的外部金鑰存放區
<a name="connect-xks"></a>

您可以在 AWS KMS 主控台或使用 [ConnectCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_ConnectCustomKeyStore.html) 操作來連接或重新連接外部金鑰存放區。

### 使用 AWS KMS 主控台
<a name="connect-xks-console"></a>

您可以使用 AWS KMS 主控台將外部金鑰存放區連接到其外部金鑰存放區代理。

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms) 的 AWS Key Management Service (AWS KMS) 主控台。

1. 若要變更 AWS 區域，請使用頁面右上角的區域選擇器。

1. 在導覽窗格中，依次選擇 **Custom key stores** (自訂金鑰存放區)、**External key stores** (外部金鑰存放區)。

1. 選擇您想要連接的外部金鑰存放區資料列。

   如果外部金鑰存放區的[連接狀態](xks-connect-disconnect.md#xks-connection-state)為 **FAILED** (失敗)，則在連接之前，必須[中斷連接外部金鑰存放區](disconnect-keystore.md#disconnect-keystore-console)。

1. 從 **Key store actions** (金鑰存放區動作) 選單中，選擇 **Connect** (連接)。

連接程序通常需要大約五分鐘才能完成。操作完成時，[連接狀態](xks-connect-disconnect.md#xks-connection-state)會變更為 **CONNECTED** (已連接)。

如果連接狀態為 **Failed** (失敗)，則請將滑鼠游標移至連接狀態上，以查看*連接錯誤代碼*，其中會說明錯誤原因。如需有關回應連接錯誤代碼的說明，請參閱 [外部金鑰存放區的連接錯誤代碼](xks-troubleshooting.md#xks-connection-error-codes)。若要連接具有 **Failed** (失敗) 連接狀態的外部金鑰存放區，您必須先[中斷連接自訂金鑰存放區](disconnect-keystore.md#disconnect-keystore-console)。

### 使用 AWS KMS API
<a name="connect-xks-api"></a>

若要連接已中斷連接的外部金鑰存放區，請使用 [ConnectCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_ConnectCustomKeyStore.html) 操作。

在連接之前，外部金鑰存放區的[連接狀態](xks-connect-disconnect.md#xks-connection-state)必須為 `DISCONNECTED`。如果當前連接狀態為 `FAILED`，則請[中斷連接外部金鑰存放區](about-xks-disconnecting.md#disconnect-xks-api)，然後將其連接。

連接程序需要大約五分鐘才能完成。除非它快速失敗，否則 `ConnectCustomKeyStore` 會傳回 HTTP 200 回應和不帶屬性的 JSON 物件。不過，這個初始回應並不表示連接已成功。若要判斷外部金鑰存放區是否已連接，請參閱 [DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) 回應中的連接狀態。

本節中的範例使用 [AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/)，但您可以使用任何支援的程式設計語言。

若要識別外部金鑰存放區，請使用其自訂金鑰存放區 ID。您可以在主控台的**Custom key stores (自訂金鑰存放區)** 頁面或使用 [DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) 操作來找到 ID。執行此範例之前，請將範例 ID 以有效的 ID 取代。

```
$ aws kms connect-custom-key-store --custom-key-store-id cks-1234567890abcdef0
```

`ConnectCustomKeyStore` 操作不會傳回其回應中的 `ConnectionState`。若要驗證已連接外部金鑰存放區，請使用 [DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) 操作。在預設情況下，此操作會傳回您帳戶和區域中的所有自訂金鑰存放區。但是，您可以使用 `CustomKeyStoreId` 或 `CustomKeyStoreName` 參數 (但不能同時使用) 來限制對特定自訂金鑰存放區的回應。`CONNECTED` 的 `ConnectionState` 值表示外部金鑰存放區已連接至其外部金鑰存放區代理。

```
$ aws kms describe-custom-key-stores --custom-key-store-name ExampleXksVpc
{
    "CustomKeyStores": [
    {
      "CustomKeyStoreId": "cks-9876543210fedcba9",
      "CustomKeyStoreName": "ExampleXksVpc",
      "ConnectionState": "CONNECTED",
      "CreationDate": "2022-12-13T18:34:10.675000+00:00",
      "CustomKeyStoreType": "EXTERNAL_KEY_STORE",
      "XksProxyConfiguration": { 
        "AccessKeyId": "ABCDE98765432EXAMPLE",
        "Connectivity": "VPC_ENDPOINT_SERVICE",
        "UriEndpoint": "https://example-proxy-uri-endpoint-vpc",
        "UriPath": "/example/prefix/kms/xks/v1",
        "VpcEndpointServiceName": "com.amazonaws.vpce.us-east-1.vpce-svc-example"
      }
    }
  ]
}
```

如果 `DescribeCustomKeyStores` 回應中的 `ConnectionState` 值為 `FAILED`，則 `ConnectionErrorCode` 元素會指出失敗的原因。

在下列範例中， `XKS_VPC_ENDPOINT_SERVICE_NOT_FOUND`的值`ConnectionErrorCode`表示 AWS KMS 找不到用於與外部金鑰存放區代理通訊的 VPC 端點服務。確認 `XksProxyVpcEndpointServiceName` 正確、 AWS KMS 服務主體是 Amazon VPC 端點服務上允許的主體，而且 VPC 端點服務不需要接受連線請求。如需回應連接錯誤代碼的說明，請參閱 [外部金鑰存放區的連接錯誤代碼](xks-troubleshooting.md#xks-connection-error-codes)。

```
$ aws kms describe-custom-key-stores --custom-key-store-name ExampleXksVpc
{
    "CustomKeyStores": [
    {
      "CustomKeyStoreId": "cks-9876543210fedcba9",
      "CustomKeyStoreName": "ExampleXksVpc",
      "ConnectionState": "FAILED",
      "ConnectionErrorCode": "XKS_VPC_ENDPOINT_SERVICE_NOT_FOUND",
      "CreationDate": "2022-12-13T18:34:10.675000+00:00",
      "CustomKeyStoreType": "EXTERNAL_KEY_STORE",
      "XksProxyConfiguration": { 
        "AccessKeyId": "ABCDE98765432EXAMPLE",
        "Connectivity": "VPC_ENDPOINT_SERVICE",
        "UriEndpoint": "https://example-proxy-uri-endpoint-vpc",
        "UriPath": "/example/prefix/kms/xks/v1",
        "VpcEndpointServiceName": "com.amazonaws.vpce.us-east-1.vpce-svc-example"
      }
    }
  ]
}
```