连接外部密钥存储 - AWS Key Management Service

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

连接外部密钥存储

外部密钥存储连接到其外部密钥存储代理后,您可以在外部密钥存储中创建 KMS 密钥,然后在加密操作中使用现有 KMS 密钥。

将外部密钥存储连接到其外部密钥存储代理的过程因外部密钥存储的连接而异。

连接操作即开始连接您的自定义密钥存储的过程,但是将外部密钥存储连接到其外部代理大约需要五分钟。连接操作的成功响应并不表示外部密钥存储已连接。要确认连接已成功,请使用 AWS KMS 控制台或 DescribeCustomKeyStores 操作查看外部密钥存储的连接状态

当连接状态为 FAILED 时,连接错误代码会显示在 AWS KMS 控制台中并添加到 DescribeCustomKeyStore 响应中。有关解释连接错误代码的帮助信息,请参阅 外部密钥存储的连接错误代码

连接和重新连接到您的外部密钥存储

您可以在 AWS KMS 控制台中或使用 ConnectCustomKeyStore 操作连接或重新连接您的外部密钥存储。

您可以使用 AWS KMS 控制台将外部密钥存储连接到其外部密钥存储代理。

  1. 登录到 AWS Management Console,然后通过以下网址打开 AWS Key Management Service(AWS KMS)控制台:https://console.aws.amazon.com/kms

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

  3. 在导航窗格中,选择 Custom key stores(自定义密钥存储)、External key stores(外部密钥存储)。

  4. 选择要连接的外部密钥存储的行。

    如果外部密钥存储的连接状态FAILED(失败),则必须在连接之前断开外部密钥存储

  5. Key store actions(密钥存储操作)菜单中选择 Connect(连接)。

该连接过程通常需要五分钟才能完成。操作完成后,连接状态更改为 CONNECTED(已连接)。

如果连接状态为 Failed(失败),请将鼠标悬停在连接状态上方以查看连接错误代码,从中了解错误的原因。有关响应连接错误代码的帮助信息,请参阅 外部密钥存储的连接错误代码。要连接处于 Failed(失败)连接状态的外部密钥存储,必须先断开自定义密钥存储

要连接已断开的外部密钥存储,请使用 ConnectCustomKeyStore 操作。

在连接之前,外部密钥存储的连接状态必须为 DISCONNECTED。如果连接状态为 FAILED,请断开外部密钥存储,再进行连接。

该连接过程可能需要五分钟才能完成。除非该过程迅速失败,否则 ConnectCustomKeyStore 将返回 HTTP 200 响应和无属性的 JSON 对象。但是,此初始响应不指示连接是否成功。要确定外部密钥存储是否已连接,请参阅 DescribeCustomKeyStores 响应中的连接状态。

本部分中的示例使用 AWS Command Line Interface (AWS CLI),但您可以使用任何受支持的编程语言。

要确定外部密钥存储,请使用自定义密钥存储 ID。您可以在控制台的 Custom key stores(自定义密钥存储)页面上或使用 DescribeCustomKeyStores 操作找到该 ID。在运行此示例之前,请将示例 ID 替换为有效的 ID。

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

ConnectCustomKeyStore 操作不会在响应中返回 ConnectionState。要验证外部密钥存储是否已连接,请使用 DescribeCustomKeyStores 操作。默认情况下,此操作将返回您的账户和区域中的所有自定义密钥存储。但您可以使用 CustomKeyStoreIdCustomKeyStoreName 参数(但不能同时使用两者)将响应限制到特定自定义密钥存储。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 元素指示失败的原因。

在以下示例中,ConnectionErrorCodeXKS_VPC_ENDPOINT_SERVICE_NOT_FOUND 值表示 AWS KMS 找不到用于与外部密钥存储代理通信的 VPC 端点服务。验证 XksProxyVpcEndpointServiceName 是否正确无误,AWS KMS 服务主体是否是 Amazon VPC 端点服务允许的主体,以及 VPC 端点服务是否不要求接受连接请求。有关响应连接错误代码的帮助信息,请参阅 外部密钥存储的连接错误代码

$ 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" } } ] }