

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

# 编辑外部密钥存储属性


您可以编辑现有外部密钥存储的选定属性。

在连接或断开外部密钥存储后，您可以编辑某些属性。若要编辑其他属性，则必须先[断开外部密钥存储](xks-connect-disconnect.md)与其外部密钥存储代理的连接。外部密钥存储的[连接状态](xks-connect-disconnect.md#xks-connection-state)必须为 `DISCONNECTED`。在外部密钥存储断开后，您可以管理密钥存储及其 KMS 密钥，但无法在外部密钥存储中创建或使用 KMS 密钥。要查找外部密钥存储库的[连接状态](xks-connect-disconnect.md#xks-connection-state)，请使用[DescribeCustomKeyStores](https://docs.amazonaws.cn/kms/latest/APIReference/API_DescribeCustomKeyStores.html)操作或查看外部密钥存储详细信息页面上的 “**常规配置**” 部分。

在更新外部密钥存储库的属性之前，使用新值向外部密钥存储代理 Amazon KMS 发送[GetHealthStatus](keystore-external.md#concept-proxy-apis)请求。如果请求成功，则表明您可以使用更新后的属性值连接到外部密钥存储代理并进行身份验证。如果请求失败，编辑操作也将失败，并且会显示标识错误的异常。

编辑操作完成后，外部密钥存储库的更新属性值将显示在 Amazon KMS 控制台和`DescribeCustomKeyStores`响应中。不过，要让更改完全生效，可能需要长达五分钟的时间。

如果您在 Amazon KMS 控制台中编辑外部密钥存储，则可以选择上传基于 JSON 的[代理配置文件，该文件](create-xks-keystore.md#proxy-configuration-file)指定代理 [URI 路径和代理](create-xks-keystore.md#require-path)[身份验证](keystore-external.md#concept-xks-credential)凭据。一些外部密钥存储代理会为您生成此文件。有关详细信息，请参阅外部密钥存储代理或外部密钥管理器的文档。

**警告**  
更新后的属性值必须将您的外部密钥存储连接到与先前值相同的外部密钥管理器的代理，或者使用相同的加密密钥对外部密钥管理器进行备份或快照。如果外部密钥存储永久失去对与其 KMS 密钥关联的外部密钥的访问权限，则在这些外部密钥下加密的加密文字将无法恢复。特别是，更改外部密钥存储库的代理连接可能会 Amazon KMS 阻止访问您的外部密钥。

**提示**  
一些外部密钥管理器为编辑外部密钥存储属性提供了更简单的方法。有关详细信息，请参阅外部密钥管理器的文档。

您可以更改外部密钥存储的以下属性。


| 可编辑的外部密钥存储属性 | 任何连接状态 | 需要“已断开连接”状态 | 
| --- | --- | --- | 
| 自定义密钥存储名称 自定义密钥存储必需的易记名称。 不要在此字段中包含机密或敏感信息。此字段可能会以纯文本形式显示在 CloudTrail 日志和其他输出中。  | ![\[Green checkmark icon indicating success or completion.\]](http://docs.amazonaws.cn/kms/latest/developerguide/images/icon-successful.png) |  | 
| [代理身份验证凭证](keystore-external.md#concept-xks-credential) () XksProxyAuthenticationCredential（即使只更改一个元素，您也必须同时指定访问密钥 ID 和秘密访问密钥。） | ![\[Green checkmark icon indicating success or completion.\]](http://docs.amazonaws.cn/kms/latest/developerguide/images/icon-successful.png) |  | 
| [代理 URI 路径](create-xks-keystore.md#require-path) (XksProxyUriPath) | ![\[Green checkmark icon indicating success or completion.\]](http://docs.amazonaws.cn/kms/latest/developerguide/images/icon-successful.png) |  | 
| [代理连接](keystore-external.md#concept-xks-connectivity) (XksProxyConnectivity)（您还必须更新代理 URI 端点。如果要更改为 VPC 端点服务连接，则必须指定代理 VPC 端点服务名称。） |  | ![\[Green checkmark icon indicating success or completion.\]](http://docs.amazonaws.cn/kms/latest/developerguide/images/icon-successful.png) | 
| [代理 URI 端点](create-xks-keystore.md#require-endpoint) (XksProxyUriEndpoint)如果更改代理端点 URI，您可能还需要更改关联的 TLS 证书。 |  | ![\[Green checkmark icon indicating success or completion.\]](http://docs.amazonaws.cn/kms/latest/developerguide/images/icon-successful.png) | 
| [代理 VPC 终端节点服务名称](create-xks-keystore.md#require-vpc-service-name) (XksProxyVpcEndpointServiceName)（此字段是 VPC 端点服务连接的必填字段） |  | ![\[Green checkmark icon indicating success or completion.\]](http://docs.amazonaws.cn/kms/latest/developerguide/images/icon-successful.png) | 
| [VPC 终端节点服务所有者](create-xks-keystore.md#require-vpc-service-name) (XksProxyVpcEndpointServiceOwner)（此字段是 VPC 端点服务连接的必填字段） |  | ![\[Green checkmark icon indicating success or completion.\]](http://docs.amazonaws.cn/kms/latest/developerguide/images/icon-successful.png) | 

## 编辑外部密钥存储的属性


您可以在 Amazon KMS 控制台中或使用[UpdateCustomKeyStore](https://docs.amazonaws.cn/kms/latest/APIReference/API_UpdateCustomKeyStore.html)操作来编辑外部密钥存储库的属性。

### 使用控制 Amazon KMS 台


编辑密钥库时，可以更改任何可编辑的值。某些更改要求将外部密钥存储与其外部密钥存储代理断开连接。

如果您正在编辑代理 URI 路径或代理身份验证凭证，则可以输入新值或上传包含新值的外部密钥存储[代理配置文件](create-xks-keystore.md#proxy-configuration-file)。

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

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

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

1. 选择要编辑的密钥存储。

   1. 如有必要，请断开外部密钥存储与其外部密钥存储代理的连接。从 **Key store actions**（密钥存储操作）菜单中选择 **Disconnect**（断开连接）。

1. 从 **Key store actions**（密钥存储操作）菜单中选择 **Edit**（编辑）。

1. 更改一个或多个可编辑的外部密钥存储属性。您还可以上传包含代理 URI 路径和代理身份验证凭证值的外部密钥存储[代理配置文件](create-xks-keystore.md#proxy-configuration-file)。即使文件中指定的某些值没有更改，也可以使用代理配置文件。

1. 选择 **Update external key store**（更新外部密钥存储）。

1. 查看警告，如果您决定继续，请确认警告，然后选择 **Update external key store**（更新外部密钥存储）。

   在此过程成功后，将显示一条消息，描述您编辑的属性。如果此过程失败，则会显示一条错误消息，描述问题并提供有关如何解决问题的帮助。

1. 如有必要，重新连接外部密钥存储。从 **Key store actions**（密钥存储操作）菜单中选择 **Connect**（连接）。

   您可以让外部密钥存储保持断开状态。不过，在其断开连接后，您无法在外部密钥存储中创建 KMS 密钥或在[加密操作](manage-cmk-keystore.md#use-cmk-keystore)中使用外部密钥存储中的 KMS 密钥。

### 使用 Amazon KMS API


要更改外部密钥存储库的属性，请使用[UpdateCustomKeyStore](https://docs.amazonaws.cn/kms/latest/APIReference/API_UpdateCustomKeyStore.html)操作。您可以在同一操作中更改外部密钥存储的多个属性。如果操作成功，则 Amazon KMS 返回一个 HTTP 200 响应和一个没有属性的 JSON 对象。

使用 `CustomKeyStoreId` 参数标识外部密钥存储。使用其他参数更改属性。您不能在 `UpdateCustomKeyStore` 操作中使用[代理配置文件](create-xks-keystore.md#proxy-configuration-file)。只有 Amazon KMS 控制台支持代理配置文件。不过，您可以使用代理配置文件来帮助自己确定外部密钥存储代理的正确参数值。

本部分中的示例使用 [Amazon Command Line Interface (Amazon CLI)](https://www.amazonaws.cn/cli/)，但您可以使用任何受支持的编程语言。

在开始之前，[如有必要](#update-xks-keystore)，请[断开外部密钥存储](xks-connect-disconnect.md)与其外部密钥存储代理的连接。更新后，如有必要，您可以将[外部密钥存储重新连接](xks-connect-disconnect.md)到其外部密钥存储代理。您可以让外部密钥存储保持断开状态，但之后必须先重新连接，才能在密钥存储中创建新的 KMS 密钥或在密钥存储中使用现有 KMS 密钥来进行加密操作。

**注意**  
如果您使用 Amazon CLI 版本 1.0，请在指定带有 HTTP 或 HTTPS 值的参数（例如`XksProxyUriEndpoint`参数）之前运行以下命令。  

```
aws configure set cli_follow_urlparam false
```
否则， Amazon CLI 版本 1.0 会将参数值替换为在该 URI 地址中找到的内容，从而导致以下错误：  

```
Error parsing parameter '--xks-proxy-uri-endpoint': Unable to retrieve 
https:// : received non 200 status code of 404
```

#### 更改外部密钥存储的名称


第一个示例使用[UpdateCustomKeyStore](https://docs.amazonaws.cn/kms/latest/APIReference/API_UpdateCustomKeyStore.html)操作将外部密钥存储库的友好名称更改为`XksKeyStore`。该命令使用 `CustomKeyStoreId` 参数标识自定义密钥存储，使用 `CustomKeyStoreName` 指定自定义密钥存储的新名称。将所有示例值替换为外部密钥存储的实际值。

```
$ aws kms update-custom-key-store --custom-key-store-id cks-1234567890abcdef0 --new-custom-key-store-name XksKeyStore
```

#### 更改代理身份验证凭证


以下示例更新了 Amazon KMS 用于向外部密钥存储代理进行身份验证的代理身份验证凭证。如果凭证在代理上轮换，您可以使用这样的命令来更新凭证。

首先更新外部密钥存储代理上的凭证。然后使用此功能将更改报告给 Amazon KMS。（您的代理将暂时支持新旧凭证，因此您有时间在中 Amazon KMS更新凭证。）

您必须始终在凭证中同时指定访问密钥 ID 和秘密访问密钥，即使只更改了一个值也是如此。

前两个命令设置变量来保存凭证值。`UpdateCustomKeyStore` 操作使用 `CustomKeyStoreId` 参数来标识外部密钥存储。该操作使用 `XksProxyAuthenticationCredential` 参数及其 `AccessKeyId` 和 `RawSecretAccessKey` 字段来指定新凭证。将所有示例值替换为外部密钥存储的实际值。

```
$ accessKeyID=access key id
$ secretAccessKey=secret access key

$ aws kms update-custom-key-store --custom-key-store-id cks-1234567890abcdef0 \
        --xks-proxy-authentication-credential \ 
            AccessKeyId=$accessKeyId,RawSecretAccessKey=$secretAccessKey
```

#### 更改代理 URI 路径


以下示例更新了代理 URI 路径（`XksProxyUriPath`）。在和区域中，代理 URI 端点和代理 URI 路径的 Amazon Web Services 账户 组合必须是唯一的。将所有示例值替换为外部密钥存储的实际值。

```
$ aws kms update-custom-key-store --custom-key-store-id cks-1234567890abcdef0 \
            --xks-proxy-uri-path /kms/xks/v1
```

#### 更改 VPC 端点服务连接


以下示例使用[UpdateCustomKeyStore](https://docs.amazonaws.cn/kms/latest/APIReference/API_UpdateCustomKeyStore.html)操作将外部密钥存储代理连接类型更改为`VPC_ENDPOINT_SERVICE`。要进行此更改，您必须指定 VPC 端点服务连接所需的值，包括 VPC 端点服务名称（`XksProxyVpcEndpointServiceName`）和包含 VPC 端点服务的私有 DNS 名称的代理 URI 端点（`XksProxyUriEndpoint`）值。将所有示例值替换为外部密钥存储的实际值。

```
$ aws kms update-custom-key-store --custom-key-store-id cks-1234567890abcdef0 \
            --xks-proxy-connectivity "VPC_ENDPOINT_SERVICE" \
            --xks-proxy-uri-endpoint https://myproxy-private.xks.example.com \
            --xks-proxy-vpc-endpoint-service-name com.amazonaws.vpce.us-east-1.vpce-svc-example
```

#### 更改为公有端点连接


以下示例将外部密钥存储代理连接类型更改为 `PUBLIC_ENDPOINT`。进行此更改时，必须更新代理 URI 端点（`XksProxyUriEndpoint`）值。将所有示例值替换为外部密钥存储的实际值。

**注意**  
VPC 端点连接提供的安全性高于公有端点连接。在更改为公有端点连接之前，请考虑其他选项，包括在本地找到外部密钥存储代理以及仅使用 VPC 进行通信。

```
$ aws kms update-custom-key-store --custom-key-store-id cks-1234567890abcdef0 \
            --xks-proxy-connectivity "PUBLIC_ENDPOINT" \
            --xks-proxy-uri-endpoint https://myproxy.xks.example.com
```