

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 连接和断开外部密钥存储
<a name="xks-connect-disconnect"></a>

新外部密钥存储未连接。要在外部密钥存储库 AWS KMS keys 中创建和使用，您需要将外部密钥存储库连接到其[外部密钥存储代理服务器](keystore-external.md#concept-xks-proxy)。您可以随时连接和断开外部密钥存储，并[查看其连接状态](view-xks-keystore.md)。

当您的外部密钥存储断开连接时， AWS KMS 无法与您的外部密钥存储代理进行通信。因此，您可以查看和管理外部密钥存储及其现有 KMS 密钥。不过，您不能在外部密钥存储中创建 KMS 密钥，也不能在加密操作中使用其 KMS 密钥。您可能需要在某些时候断开外部密钥存储的连接，例如编辑外部密钥存储的属性时，但要进行相应计划。断开密钥存储库的连接可能会中断使用其 KMS 密钥的 AWS 服务的运行。

您无需连接外部密钥存储。您可以将外部密钥存储保持在无限期断开的状态并且仅在您需要使用它时进行连接。但是，您可能希望定期测试连接以验证设置是否正确以及自定义密钥存储是否可以连接。

当您断开自定义密钥存储时，密钥存储中的 KMS 密钥立即变得不可用（视最终一致性而定）。不过，在再次使用 KMS 密钥（例如解密数据密钥）之前，使用受 KMS 密钥保护的[数据密钥](data-keys.md)加密的资源不会受到影响。此问题会影响 AWS 服务，因为许多服务使用数据密钥来保护您的资源。有关更多信息，请参阅 [不可用的 KMS 密钥如何影响数据密钥](unusable-kms-keys.md)。

**注意**  
仅当密钥存储从未连接或您明确断开密钥存储连接时，外部密钥存储才会具有 `DISCONNECTED` 状态。`CONNECTED` 状态并不表示外部密钥存储或其支持组件正在高效运行。有关外部密钥存储组件性能的信息，请参阅每个外部密钥存储详细信息页面 **Monitoring**（监控）部分中的图表。有关更多信息，请参阅 [监控外部密钥存储](xks-monitoring.md)。  
您的外部密钥管理器可能会提供其他方法来停止和重新启动 AWS KMS 外部密钥存储与外部密钥存储代理之间或外部密钥存储代理与外部密钥管理器之间的通信。有关详细信息，请参阅外部密钥管理器的文档。

**Topics**
+ [连接状态](#xks-connection-state)
+ [连接外部密钥存储](about-xks-connecting.md)
+ [断开外部密钥存储](about-xks-disconnecting.md)

## 连接状态
<a name="xks-connection-state"></a>

连接和断开会改变自定义密钥存储的*连接状态*。 AWS CloudHSM 密钥存储库和外部密钥存储库的连接状态值相同。

要查看自定义密钥库的连接状态，请使用[DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/DescribeCustomKeyStores.html)操作或 AWS KMS 控制台。**连接状态**显示在每个自定义密钥存储表中、每个自定义密钥存储详细信息页面的 **General configuration**（常规配置）部分中，以及自定义密钥存储中 KMS 密钥 **Cryptographic configuration**（加密配置）选项卡上。有关详细信息，请参阅 [查看密 AWS CloudHSM 钥库](view-keystore.md) 和 [查看外部密钥存储](view-xks-keystore.md)。

自定义密钥存储可能具有以下连接状态之一：
+ `CONNECTED`：自定义密钥存储已连接到其备用密钥存储。您可以在自定义密钥存储中创建和使用 KMS 密钥。

  *密钥库的备*用 AWS CloudHSM 密钥存储区是其关联的 AWS CloudHSM 集群。外部密钥存储的*备用密钥存储*是外部密钥存储代理及其支持的外部密钥管理器。

  CONNECTED（已连接）状态表示连接成功且自定义密钥存储未被故意断开。但该状态并不表示连接运行正常。有关与您的 AWS CloudHSM 密钥库关联的 AWS CloudHSM 集群状态的信息，请参阅 AWS CloudHSM 用户指南 AWS CloudHSM中的[获取 CloudWatch 指标](https://docs.aws.amazon.com/cloudhsm/latest/userguide/hsm-metrics-cw.html)。有关外部密钥存储的状态和操作的信息，请参阅每个外部密钥存储详细信息页面 **Monitoring**（监控）部分的图表。有关更多信息，请参阅 [监控外部密钥存储](xks-monitoring.md)。
+ `CONNECTING`：连接自定义密钥存储的过程正在进行。这是一种暂时状态。
+ `DISCONNECTED`：自定义密钥库从未与其后端连接过，或者使用 AWS KMS 控制台或[DisconnectCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/DisconnectCustomKeyStores.html)操作故意断开了连接。
+ `DISCONNECTING`：断开自定义密钥存储的过程正在进行。这是一种暂时状态。
+ `FAILED`：尝试连接自定义密钥存储失败。[DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/DescribeCustomKeyStores.html)响应`ConnectionErrorCode`中的表示问题所在。

要连接自定义密钥存储，其连接状态必须为 `DISCONNECTED`。如果连接状态为 `FAILED`，则使用 `ConnectionErrorCode` 来识别和解决问题。接着断开自定义密钥存储，然后再尝试重新连接。如需帮助解决连接失败问题，请参阅 [外部密钥存储连接错误](xks-troubleshooting.md#fix-xks-connection)。有关响应连接错误代码的帮助信息，请参阅 [外部密钥存储的连接错误代码](xks-troubleshooting.md#xks-connection-error-codes)。

要查看连接错误代码，请执行以下操作：
+ 在[DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html)响应中，查看`ConnectionErrorCode`元素的值。只有当 `ConnectionState` 为 `FAILED` 时，此元素才会出现在 `DescribeCustomKeyStores` 响应中。
+ 要在 AWS KMS 控制台中查看连接错误代码，请在外部密钥存储的详细信息页面上将鼠标悬停在 Faile **d** 值上。  
![\[自定义密钥存储详细信息页面上的连接错误代码\]](http://docs.aws.amazon.com/zh_cn/kms/latest/developerguide/images/connection-error-code.png)

# 连接外部密钥存储
<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://console.aws.amazon.com/km](https://console.aws.amazon.com/kms) s 处打开 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。您可以在控制台的**自定义密钥存储**页面上或使用[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` 参数（但不能同时使用两者）将响应限制到特定自定义密钥存储。`ConnectionState` 值为 `CONNECTED` 表示外部密钥存储已连接到其外部密钥存储代理。

```
$ 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 终端节点服务。验证是否正确， AWS KMS 服务委托人是否是 Amazon VPC 终端节点服务允许的委托人，以及 VPC 终端节点服务不要求接受连接请求。`XksProxyVpcEndpointServiceName`有关响应连接错误代码的帮助信息，请参阅 [外部密钥存储的连接错误代码](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"
      }
    }
  ]
}
```

# 断开外部密钥存储
<a name="about-xks-disconnecting"></a>

从外部密钥存储代理断开具有 [VPC 端点服务连接](choose-xks-connectivity.md#xks-vpc-connectivity)的外部密钥存储时， AWS KMS 会删除其与 VPC 端点服务的接口端点，并移除其为支持连接而创建的网络基础设施。具有公有端点连接的外部密钥存储不需要等效流程。此操作不会影响 VPC 端点服务或其支持的任何组件，也不会影响外部密钥存储代理或任何外部组件。

当外部密钥存储断开连接时， AWS KMS 不会向外部密钥存储代理发送任何请求。外部密钥存储的连接状态为 `DISCONNECTED`。已断开连接的外部密钥存储中的 KMS 密钥处于 [`UNAVAILABLE` 密钥状态](key-state.md)（除非处于[待删除](deleting-keys.md)状态），这表示此类密钥不能用于加密操作。不过，您仍然可以查看和管理外部密钥存储及其现有 KMS 密钥。

已断开连接状态被设计为临时且可逆的状态。您可以随时重新连接外部密钥存储。通常无需重新配置。不过，如果关联的外部密钥存储代理的任何属性在断开连接时发生了变化，例如轮换了[代理身份验证凭证](keystore-external.md#concept-xks-credential)，则必须在重新连接之前[编辑外部密钥存储设置](update-xks-keystore.md)。

**注意**  
虽然自定义密钥存储已断开连接，但在自定义密钥存储中创建 KMS 密钥或在加密操作中使用现有 KMS 密钥的所有尝试都将失败。此操作可以阻止用户存储和访问敏感数据。

为了更好地估计断开外部密钥存储的影响，请在外部密钥存储中标识 KMS 密钥，并[确定其过去的使用情况](deleting-keys-determining-usage.md)。

您可能出于以下原因断开外部密钥存储：
+ **编辑其属性。**在外部密钥存储处于连接状态时，您可以编辑自定义密钥存储名称、代理 URI 路径和代理身份验证凭证。不过，要编辑代理连接类型、代理 URI 端点或 VPC 端点服务名称，您必须先断开外部密钥存储的连接。有关更多信息，请参阅 [编辑外部密钥存储属性](update-xks-keystore.md)。
+ **停止与外部密钥存储代理 AWS KMS 之间的所有通信**。您也可以通过禁用终端节点或 VPC 终端节点服务来停止与代理之间的 AWS KMS 通信。此外，您的外部密钥存储代理或密钥管理软件可能会提供其他机制来 AWS KMS 防止与代理进行通信或阻止代理访问您的外部密钥管理器。
+ **禁用外部密钥存储中的所有 KMS 密钥**。您可以使用 AWS KMS 控制台或[DisableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DisableKey.html)操作在外部[密钥存储中禁用和重新启](enabling-keys.md)用 KMS 密钥。这些操作会快速完成（视最终一致性而定），但一次只针对一个 KMS 密钥。断开外部密钥存储会将外部密钥存储中所有 KMS 密钥的密钥状态更改为 `Unavailable`，这将阻止在任何加密操作中使用这些 KMS 密钥。
+ **修复失败的连接尝试**。如果连接外部密钥存储的尝试失败（自定义密钥存储的连接状态为 `FAILED`），则必须在尝试再次连接外部密钥存储之前将其断开。

## 断开您的外部密钥存储
<a name="disconnect-xks"></a>

您可以在 AWS KMS 控制台中或使用[DisconnectCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_DisconnectCustomKeyStore.html)操作断开外部密钥存储的连接。

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

您可以使用 AWS KMS 控制台将外部密钥存储与其外部密钥存储代理连接起来。完成此过程大约需要 5 分钟。

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/km](https://console.aws.amazon.com/kms) s 处打开 AWS Key Management Service (AWS KMS) 控制台。

1. 要更改 AWS 区域，请使用页面右上角的区域选择器。

1. 在导航窗格中，选择 **Custom key stores**（自定义密钥存储）、**External key stores**（外部密钥存储）。

1. 选择要断开连接的外部密钥存储的行。

1. 从 **Key store actions**（密钥存储操作）菜单中选择 **Disconnect**（断开连接）。

当操作完成时，连接状态将从 **DISCONNECTING** 变为 **DISCONNECTED**。如果操作失败，则会出现一条错误消息，描述问题并提供有关如何修复它的帮助。如果您需要更多帮助，请参阅[外部密钥存储连接错误](xks-troubleshooting.md#fix-xks-connection)。

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

要断开连接的外部密钥存储库，请使用[DisconnectCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_DisconnectCustomKeyStore.html)操作。如果操作成功，则 AWS KMS 返回一个 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/)，但您可以使用任何受支持的编程语言。

此示例断开具有 VPC 端点服务连接的外部密钥存储。在运行此示例之前，请将示例自定义密钥存储 ID 替换为有效 ID。

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

要验证外部密钥存储是否已断开连接，请使用[DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html)操作。默认情况下，此操作将返回您的账户和区域中的所有自定义密钥存储。但您可以使用 `CustomKeyStoreId` 和 `CustomKeyStoreName` 参数（但不能同时使用两者）将响应限制到特定自定义密钥存储。`DISCONNECTED` 的 `ConnectionState` 值表示此示例外部密钥存储不再连接到其外部密钥存储代理。

```
$ aws kms describe-custom-key-stores --custom-key-store-name ExampleXksVpc
{
    "CustomKeyStores": [
    {
      "CustomKeyStoreId": "cks-9876543210fedcba9",
      "CustomKeyStoreName": "ExampleXksVpc",
      "ConnectionState": "DISCONNECTED",
      "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"
      }
    }
  ]
}
```