创建根密钥
使用 IBM® Key Protect for IBM Cloud® 通过 IBM Cloud 控制台创建根密钥。
使用 IBM® Key Protect for IBM Cloud® 通过 Key Protect API 以编程方式创建根密钥。
根密钥是用于保护云中已加密数据的安全性的对称密钥打包密钥。 有关根密钥的更多信息,请参阅使用包络加密保护数据。
在一个区域中创建的加密密钥可用于对位于 IBM Cloud中的任何区域中的数据存储器进行加密。
在控制台中创建根密钥
创建服务实例后,完成以下步骤在 IBM Cloud 控制台。
如果启用 Key Protect 实例的双重授权设置,请记住添加到服务的任何密钥都需要两个用户的授权才能删除密钥。
-
转到菜单 > 资源列表以查看您的资源列表。
-
从 IBM Cloud 资源列表中,选择您供应的 Key Protect 实例。
-
要创建新密钥,请单击 添加。 这将打开侧面板。 确保选择 创建密钥 选项。 请注意,要为此密钥设置 密钥别名,密钥环或 旋转策略,必须单击 高级选项 选项卡以显示这些密钥。
如果您不是 Manager
(或具有同等级别的许可权),那么不会显示 旋转策略 选项。
Specify the key's details:
设置 | 描述 |
---|---|
类型 | 您希望在 Key Protect 中管理的 密钥类型。 缺省情况下选择根密钥。 |
密钥名称 | 人可读的显示名称,便于识别您的密钥。 长度必须在 2 到 90 个字符之间 (包括在内)。 为保护隐私,请确保密钥名称不包含个人可标识信息 (PII),例如,姓名或位置。 请注意,密钥名称不需要唯一。 |
密钥描述 | 可选。 描述是一种有用的方法,用于以无法使用别名或其名称的方式添加有关密钥的信息 (例如,描述其用途的短语)。 此描述必须至少为两个字符且不超过 240 个字符,并且以后不能更改。 为保护您的隐私,请勿使用个人数据(如您的姓名或所在位置)来描述您的密钥。 |
密钥别名 | 可选。 密钥别名 也是描述密钥的方法。 密钥最多可以有五个别名。 |
密钥环 | 可选。 密钥环 是允许根据需要独立管理这些分组的密钥分组。 每个密钥都必须是密钥环的一部分。 如果未选择密钥环,那么密钥将放在 default 密钥环中。 请注意,要将您正在创建的密钥放在密钥环中,您必须具有该密钥环上的 管理者 角色。 有关角色的更多信息,请查看
管理用户访问权。 |
轮换策略 | 可选。 如果您持有 管理者 角色,那么可以在密钥创建时为密钥设置轮换策略。 如果缺省情况下存在用于在密钥上创建轮换策略的 实例策略,那么您还可以在创建密钥时将该策略覆盖到其他时间间隔。 请注意,如果您的实例启用了轮换策略,并且您在创建密钥时 禁用 该轮换策略,那么该策略仍会以 已禁用 状态写入密钥。 如果要稍后启用此策略,那么可以执行此操作。 请查看 创建密钥后设置轮换策略 以获取更多信息。 |
填写完密钥详细信息后,单击创建密钥以进行确认。
如果您知道要将密钥放入哪个密钥环中,并且您是该密钥环的 管理者,那么还可以浏览到“密钥环”面板,选择 ... 并单击 将密钥添加到密钥环。 这将打开您通过单击“密钥”页面上的 添加 (其中 密钥环 变量中填充了密钥环的名称) 所看到的同一面板。
服务中创建的密钥是 AES-CBC-PAD 算法支持的 256 位对称密钥。 为了提高安全性,密钥通过位于安全 IBM Cloud 数据中心且通过 FIPS 140-2 Level 3 认证的硬件安全模块 (HSM) 生成。
使用 API 创建根密钥
通过对以下端点执行 POST
调用来创建根密钥。
https://<region>.kms.cloud.ibm.com/api/v2/keys
-
通过运行以下
curl
命令来创建根密钥。$ curl -X POST \ "https://<region>.kms.cloud.ibm.com/api/v2/keys" \ -H "authorization: Bearer <IAM_token>" \ -H "bluemix-instance: <instance_ID>" \ -H "content-type: application/vnd.ibm.kms.key+json" \ -H "x-kms-key-ring: <key_ring_ID>" \ -H "correlation-id: <correlation_ID>" \ -d '{ "metadata": { "collectionType": "application/vnd.ibm.kms.key+json", "collectionTotal": 1 }, "resources": [ { "type": "application/vnd.ibm.kms.key+json", "name": "<key_name>", "aliases": [alias_list], "description": "<key_description>", "expirationDate": "<expiration_date>", "extractable": <key_type> } ] }'
根据下表替换示例请求中的变量。
变量 | 描述 |
---|---|
区域 | 需要。 地区缩写,如 us-south 或 eu-gb,表示 Key Protect 实例所在的地理区域。 有关更多信息,请参阅区域服务端点。 |
IAM_token | 需要。 您的 IBM Cloud 访问令牌。 在 curl 请求中包含 IAM 令牌的全部内容,包括承载器值。 更多信息,请参阅 检索访问令牌。 |
instance_ID | 需要。 指定给您的 Key Protect 服务实例的唯一标识。 更多信息,请参阅 检索实例 ID。 |
键环 ID | 可选。 您希望新创建的密钥作为其一部分的目标密钥环的唯一标识。 如果未指定,那么头将自动设置为 "default",并且密钥将位于指定的 Key Protect 服务实例中的缺省密钥环中。 有关更多信息,请参阅 分组键。 |
correlation_ID | 用于跟踪和关联事务的唯一标识。 |
key_name | 需要。 方便识别密钥的可读名称。 重要信息:为保护隐私,请勿将个人数据存储为密钥的元数据。 |
别名列表 | 分配给密钥的一个或多个唯一的人类可读别名。 重要信息:为保护隐私,请勿将个人数据存储为密钥的元数据。 每个别名必须是字母数字,区分大小写,并且不能包含除短划线 (-) 或下划线 (_) 以外的空格或特殊字符。别名不能是 V 4 UUID,并且不得是 Key Protect 保留名称 :allowed_ip,密钥,密钥,元数据,策略,策略,注册,注册,环,环,轮换,打包,解包,重新打包,版本和版本。 别名大小可以介于 2 到 90 个字符 (含) 之间。 |
key_description | 密钥的扩展描述。 重要信息:为保护隐私,请勿将个人数据存储为密钥的元数据。 |
到期日期 | 可选。 密钥在系统中过期的日期和时间,采用 RFC 3339 格式(YYYY-MM-DD HH:MM:SS.SS,例如 2019-10-12T07:20:50.52Z )。 设置过期日期时要谨慎,因为过期日期创建的密钥会在过期后一小时内自动过渡到_停用_状态。 在这种状态下,只允许对按键进行解包、重包、旋转和删除操作。 停用的密钥不能用于加密(封装)新数据,即使在停用时进行了旋转。 轮换不会重置或延长有效期,也不允许更改日期。 建议在原客户根密钥 (CRK) 过期之前,使用新客户根密钥 (CRK) 重新加密使用过期或失效密钥加密的任何数据,以防止服务中断。 删除和恢复已停用的密钥不会使其回到_激活状态_。 如果省略 expiration_date 属性,则密钥不会过期。 |
key_type | 布尔值,用于确定密钥资料是否可以离开服务。 将可提取属性设置为 false 时,服务会创建一个根密钥,可用于包裹或解除包裹操作。 |
设置过期日期时要谨慎,因为过期日期创建的密钥会在过期后一小时内自动过渡到_停用_状态。 在这种状态下,只允许对按键进行解包、重包、旋转和删除操作。 停用的密钥不能用于加密(封装)新数据,即使在停用时进行了旋转。 轮换不会重置或延长有效期,也不允许更改日期。 建议在原客户根密钥 (CRK) 过期之前,使用新客户根密钥 (CRK) 重新加密使用过期或失效密钥加密的任何数据,以防止服务中断。 删除和恢复已停用的密钥不会使其回到_激活状态_。 如果省略 expiration_date 属性,则密钥不会过期。
您可以使用 IBM Cloud Logs. 日志会使用 JSON 属性 responseData.expirationDate
和 responseData.daysToKeyExpire
对有过期日期的密钥和以下 action
值显示过期日期和剩余天数:kms.secrets.wrap
, kms.secrets.unwrap
,
kms.secrets.rewrap
, kms.secrets.read
, kms.secrets.readmetadata
, kms.secrets.create
, kms.secrets-with-policy-overrides.create
和 kms.secrets.expire
。 此外,成功调用 GET /api/v2/keys
的 REST 会返回每个有过期日期的密钥的 expirationDate
属性。
为保护个人数据的机密性,在向服务添加密钥时,避免输入个人可标识信息 (PII),例如,姓名或位置。
成功的 POST api/v2/keys
响应会返回密钥的标识值以及其他元数据。 标识是指定给密钥的唯一标识,用于后续调用 Key Protect API。
{
"metadata": {
"collectionType": "application/vnd.ibm.kms.key+json",
"collectionTotal": 1
},
"resources": [
{
"type": "application/vnd.ibm.kms.key+json",
"id": "02fd6835-6001-4482-a892-13bd2085f75d",
"name": "test-root-key",
"aliases": [
"alias-1",
"alias-2"
],
"description": "A test root key",
"state": 1,
"extractable": false,
"crn": "crn:v1:bluemix:public:kms:us-south:a/f047b55a3362ac06afad8a3f2f5586ea:12e8c9c2-a162-472d-b7d6-8b9a86b815a6:key:02fd6835-6001-4482-a892-13bd2085f75d",
"imported": false,
"creationDate": "2020-03-12T03:37:32Z",
"createdBy": "...",
"algorithmType": "Deprecated",
"algorithmMetadata": {
"bitLength": "256",
"mode": "Deprecated"
},
"algorithmBitSize": 256,
"algorithmMode": "Deprecated",
"lastUpdateDate": "2020-03-12T03:37:32Z",
"keyVersion": {
"id": "2291e4ae-a14c-4af9-88f0-27c0cb2739e2",
"creationDate": "2020-03-12T03:37:32Z"
},
"dualAuthDelete": {
"enabled": false
},
"deleted": false
}
]
}
有关响应参数的详细说明,请参阅 Key Protect REST API 参考文档。
下一步
-
要了解有关使用包络加密保护密钥的更多信息,请查看打包密钥。
-
要了解更多有关以编程方式管理密钥的信息,请 查看 Key Protect API 参考文档。