连接和断开外部密钥存储 - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

连接和断开外部密钥存储

新外部密钥存储未连接。要在外部密钥存储中创建和使用 Amazon KMS keys,您需要将外部密钥存储连接到其外部密钥存储代理。您可以随时连接和断开外部密钥存储,并查看其连接状态

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

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

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

注意

仅当密钥存储从未连接或您明确断开密钥存储连接时,外部密钥存储才会具有 DISCONNECTED 状态。CONNECTED 状态并不表示外部密钥存储或其支持组件正在高效运行。有关外部密钥存储组件性能的信息,请参阅每个外部密钥存储详细信息页面 Monitoring(监控)部分中的图表。有关更多信息,请参阅 监控外部密钥存储

您的外部密钥管理器可能会提供其他方法来停止和重新启动 Amazon KMS 外部密钥存储代理与外部密钥存储代理之间或外部密钥存储代理与外部密钥管理器之间的通信。有关详细信息,请参阅外部密钥管理器的文档。

连接外部密钥存储

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

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

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

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

断开外部密钥存储

从外部密钥存储代理断开具有 VPC 端点服务连接的外部密钥存储时,Amazon KMS 会删除其与 VPC 端点服务的接口端点,并移除其为支持连接而创建的网络基础设施。具有公有端点连接的外部密钥存储不需要等效流程。此操作不会影响 VPC 端点服务或其支持的任何组件,也不会影响外部密钥存储代理或任何外部组件。

外部密钥存储断开连接后,Amazon KMS 不会向外部密钥存储代理发送任何请求。外部密钥存储的连接状态为 DISCONNECTED。已断开连接的外部密钥存储中的 KMS 密钥处于 UNAVAILABLE 密钥状态(除非处于待删除状态),这表示此类密钥不能用于加密操作。不过,您仍然可以查看和管理外部密钥存储及其现有 KMS 密钥。

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

注意

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

为了更好地估计断开外部密钥存储的影响,请在外部密钥存储中标识 KMS 密钥,并确定其过去的使用情况

您可能出于以下原因断开外部密钥存储:

  • 编辑其属性。在外部密钥存储处于连接状态时,您可以编辑自定义密钥存储名称、代理 URI 路径和代理身份验证凭证。不过,要编辑代理连接类型、代理 URI 端点或 VPC 端点服务名称,您必须先断开外部密钥存储的连接。有关更多信息,请参阅 编辑外部密钥存储属性

  • 停止 Amazon KMS 和外部密钥存储代理之间的所有通信。您还可以通过禁用端点或 VPC 端点服务来停止 Amazon KMS 与代理之间的通信。此外,您的外部密钥存储代理或密钥管理软件可能会提供其他机制,防止 Amazon KMS 与代理进行通信或防止代理访问外部密钥管理器。

  • 禁用外部密钥存储中的所有 KMS 密钥。您可以使用Amazon KMS控制台或DisableKey操作在外部密钥存储中禁用和重新启用 KMS 密钥。这些操作会快速完成(视最终一致性而定),但一次只针对一个 KMS 密钥。断开外部密钥存储会将外部密钥存储中所有 KMS 密钥的密钥状态更改为 Unavailable,这将阻止在任何加密操作中使用这些 KMS 密钥。

  • 修复失败的连接尝试。如果连接外部密钥存储的尝试失败(自定义密钥存储的连接状态为 FAILED),则必须在尝试再次连接外部密钥存储之前将其断开。

连接状态

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

要查看自定义密钥库的连接状态,请使用DescribeCustomKeyStores操作或Amazon KMS控制台。连接状态显示在每个自定义密钥存储表中、每个自定义密钥存储详细信息页面的 General configuration(常规配置)部分中,以及自定义密钥存储中 KMS 密钥 Cryptographic configuration(加密配置)选项卡上。有关详细信息,请参阅 查看 Amazon CloudHSM 密钥存储查看外部密钥存储

自定义密钥存储可能具有以下连接状态之一:

  • CONNECTED:自定义密钥存储已连接到其备用密钥存储。您可以在自定义密钥存储中创建和使用 KMS 密钥。

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

    CONNECTED(已连接)状态表示连接成功且自定义密钥存储未被故意断开。但该状态并不表示连接运行正常。有关与您的Amazon CloudHSM密钥库关联的Amazon CloudHSM集群状态的信息,请参阅Amazon CloudHSM用户指南Amazon CloudHSM中的获取 CloudWatch 指标。有关外部密钥存储的状态和操作的信息,请参阅每个外部密钥存储详细信息页面 Monitoring(监控)部分的图表。有关更多信息,请参阅 监控外部密钥存储

  • CONNECTING:连接自定义密钥存储的过程正在进行。这是一种暂时状态。

  • DISCONNECTED:自定义密钥库从未与其后端连接过,或者使用Amazon KMS控制台或DisconnectCustomKeyStore操作故意断开了连接。

  • DISCONNECTING:断开自定义密钥存储的过程正在进行。这是一种暂时状态。

  • FAILED:尝试连接自定义密钥存储失败。DescribeCustomKeyStores响应ConnectionErrorCode中的表示问题所在。

要连接自定义密钥存储,其连接状态必须为 DISCONNECTED。如果连接状态为 FAILED,则使用 ConnectionErrorCode 来识别和解决问题。接着断开自定义密钥存储,然后再尝试重新连接。如需帮助解决连接失败问题,请参阅 外部密钥存储连接错误。有关响应连接错误代码的帮助信息,请参阅 外部密钥存储的连接错误代码

要查看连接错误代码,请执行以下操作:

  • DescribeCustomKeyStores响应中,查看ConnectionErrorCode元素的值。只有当 ConnectionStateFAILED 时,此元素才会出现在 DescribeCustomKeyStores 响应中。

  • 要在 Amazon KMS 控制台中查看连接错误代码,请将鼠标悬停在外部密钥存储详细信息页面的 Failed(失败)值上。

    
                        自定义密钥存储详细信息页面上的连接错误代码

连接外部密钥存储(控制台)

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

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

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

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

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

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

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

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

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

连接外部密钥存储(API)

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

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

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

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

要确定外部密钥存储,请使用自定义密钥存储 ID。您可以在控制台的自定义密钥存储页面上或使用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 值表示 Amazon KMS 找不到用于与外部密钥存储代理通信的 VPC 端点服务。验证 XksProxyVpcEndpointServiceName 是否正确无误,Amazon 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" } } ] }

断开外部密钥存储(控制台)

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

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

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

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

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

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

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

断开外部密钥存储(API)

要断开连接的外部密钥存储库,请使用DisconnectCustomKeyStore操作。如果此操作成功,则 Amazon KMS 返回 HTTP 200 响应和无属性的 JSON 对象。该过程可能需要五分钟才能完成。要查找外部密钥存储库的连接状态,请使用DescribeCustomKeyStores操作。

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

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

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

要验证外部密钥存储是否已断开连接,请使用DescribeCustomKeyStores操作。默认情况下,此操作将返回您的账户和区域中的所有自定义密钥存储。但您可以使用 CustomKeyStoreIdCustomKeyStoreName 参数(但不能同时使用两者)将响应限制到特定自定义密钥存储。DISCONNECTEDConnectionState 值表示此示例外部密钥存储不再连接到其外部密钥存储代理。

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