

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

# 使用 CMU 设置 AWS CloudHSM 密钥的属性
<a name="cloudhsm_mgmt_util-setAttribute"></a>

使用 c AWS CloudHSM loudhsm\_mgmt\_util 中的**setAttribute**命令更改标签的值，对密钥的属性进行加密、解密、封装和解包。 HSMs您也可以使用 key\_mgmt\_util 中的 [setAttribute](key_mgmt_util-setAttribute.md) 命令来将会话密钥转换为持久密钥。您只能更改自己拥有的密钥的属性。

在运行任何 CMU 命令之前，必须启动 CMU 并登录 HSM。请确保使用可运行您计划使用的命令的用户类型登录。

如果添加或删除 HSMs，请更新 CMU 的配置文件。否则，您所做的更改可能不会对集群 HSMs 中的所有人生效。

## 用户类型
<a name="setAttribute-userType"></a>

以下用户均可运行此命令。
+ 加密用户 (CU)

## 语法
<a name="chmu-setAttribute-syntax"></a>

由于此命令没有命名参数，因此您必须按语法图中指定的顺序输入参数。



```
setAttribute {{<key handle>}} {{<attribute id>}}
```

## 示例
<a name="chmu-setAttribute-examples"></a>

此示例说明如何禁用对称密钥的解密功能。您可以使用与此类似的命令来配置包装密钥，该密钥应能够将其他密钥进行包装和解开包装，但无法加密或解密数据。

第一步是创建包装密钥。此命令[genSymKey](key_mgmt_util-genSymKey.md)在 key\_mgmt\_util 中使用来生成 256 位 AES 对称密钥。输出显示新密钥具有密钥句柄 14。

```
$  genSymKey -t 31 -s 32 -l aes256

Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS

        Symmetric Key Created.  Key Handle: 14

        Cluster Error Status
        Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
```

接下来，我们想要确认解密属性的当前值。要获取解密属性的属性 ID，请使用 [listAttributes](cloudhsm_mgmt_util-listAttributes.md)。输出显示表示 `OBJ_ATTR_DECRYPT` 属性的常量为 `261`。有关解释密钥属性的帮助，请参阅 [AWS CloudHSM KMU 的关键属性参考](key-attribute-table.md)。

```
aws-cloudhsm> listAttributes

Following are the possible attribute values for getAttribute:

      OBJ_ATTR_CLASS                  = 0
      OBJ_ATTR_TOKEN                  = 1
      OBJ_ATTR_PRIVATE                = 2
      OBJ_ATTR_LABEL                  = 3
      OBJ_ATTR_TRUSTED                = 134
      OBJ_ATTR_KEY_TYPE               = 256
      OBJ_ATTR_ID                     = 258
      OBJ_ATTR_SENSITIVE              = 259
      OBJ_ATTR_ENCRYPT                = 260
      OBJ_ATTR_DECRYPT                = 261
      OBJ_ATTR_WRAP                   = 262
      OBJ_ATTR_UNWRAP                 = 263
      OBJ_ATTR_SIGN                   = 264
      OBJ_ATTR_VERIFY                 = 266
      OBJ_ATTR_DERIVE                 = 268
      OBJ_ATTR_LOCAL                  = 355
      OBJ_ATTR_MODULUS                = 288
      OBJ_ATTR_MODULUS_BITS           = 289
      OBJ_ATTR_PUBLIC_EXPONENT        = 290
      OBJ_ATTR_VALUE_LEN              = 353
      OBJ_ATTR_EXTRACTABLE            = 354
      OBJ_ATTR_NEVER_EXTRACTABLE      = 356
      OBJ_ATTR_ALWAYS_SENSITIVE       = 357
      OBJ_ATTR_DESTROYABLE            = 370
      OBJ_ATTR_KCV                    = 371
      OBJ_ATTR_WRAP_WITH_TRUSTED      = 528
      OBJ_ATTR_WRAP_TEMPLATE          = 1073742353
      OBJ_ATTR_UNWRAP_TEMPLATE        = 1073742354
      OBJ_ATTR_ALL                    = 512
```

要获取密钥 14 的解密属性的当前值，请使用 cloudhsm\_mgmt\_util 中的 [getAttribute](cloudhsm_mgmt_util-getAttribute.md)。

输出显示集群中两者的 decrypt 属性的值均 HSMs 为 true (1)。

```
aws-cloudhsm> getAttribute 14 261
      
Attribute Value on server 0(10.0.0.1):
OBJ_ATTR_DECRYPT
0x00000001

Attribute Value on server 1(10.0.0.2):
OBJ_ATTR_DECRYPT
0x00000001
```

此命令使用 **setAttribute** 将密钥 14 的解密属性（属性 `261`）的值更改为 `0`。这将禁用密钥上的解密功能。

输出显示该命令在集群 HSMs 中的两者上都成功执行。

```
aws-cloudhsm> setAttribute 14 261 0
*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. AWS does NOT synchronize these changes automatically with the
nodes on which this operation is not executed or failed, please
ensure this operation is executed on all nodes in the cluster.
****************************************************************

Do you want to continue(y/n)? y
setAttribute success on server 0(10.0.0.1)
setAttribute success on server 1(10.0.0.2)
```

最后一个命令重复执行 **getAttribute** 命令。同样，它会获得密钥 14 的解密属性 (属性 `261`)。

这次，输出显示集群中两者的解密属性的值均 HSMs 为 false (0)。

```
aws-cloudhsm > getAttribute 14 261
Attribute Value on server 0(10.0.3.6):
OBJ_ATTR_DECRYPT
0x00000000

Attribute Value on server 1(10.0.1.7):
OBJ_ATTR_DECRYPT
0x00000000
```

## 参数
<a name="chmu-setAttribute-parameters"></a>

```
setAttribute {{<key handle>}} {{<attribute idb}}
```

**<key-handle>**  
指定您拥有的密钥的密钥句柄。您在每个命令中只能指定一个密钥。要获取密钥的密钥句柄，请使用 key\_mgmt\_util 中的 [findKey](key_mgmt_util-findKey.md)。要查找密钥的用户，请使用[getKeyInfo](cloudhsm_mgmt_util-getKeyInfo.md)。  
是否必需：是

**<attribute id>**  
指定表示您要更改的属性的常量。您在每个命令中只能指定一个属性。要获取属性及其整数值，请使用 [listAttributes](key_mgmt_util-listAttributes.md)。有关解释密钥属性的帮助，请参阅 [AWS CloudHSM KMU 的关键属性参考](key-attribute-table.md)。  
有效值：  
+ **3** – `OBJ_ATTR_LABEL`。
+ **134** – `OBJ_ATTR_TRUSTED`。
+ **260** – `OBJ_ATTR_ENCRYPT`。
+ **261** – `OBJ_ATTR_DECRYPT`。
+ **262** – `OBJ_ATTR_WRAP`。
+ **263** – `OBJ_ATTR_UNWRAP`。
+ **264** – `OBJ_ATTR_SIGN`。
+ **266** – `OBJ_ATTR_VERIFY`。
+ **268** – `OBJ_ATTR_DERIVE`。
+ **370** – `OBJ_ATTR_DESTROYABLE`。
+ **528** – `OBJ_ATTR_WRAP_WITH_TRUSTED`。
+ **1073742353** – `OBJ_ATTR_WRAP_TEMPLATE`。
+ **1073742354** – `OBJ_ATTR_UNWRAP_TEMPLATE`。
是否必需：是

## 相关主题
<a name="chmu-setAttribute-seealso"></a>
+ key\_mgmt\_util 中的 [setAttribute](key_mgmt_util-setAttribute.md)
+ [getAttribute](cloudhsm_mgmt_util-getAttribute.md)
+ [listAttributes](cloudhsm_mgmt_util-listAttributes.md)
+ [密钥属性引用](key-attribute-table.md)