Key Protect CLI 参考
最新版本的 IBM® Key Protect for IBM Cloud® CLI 插件提供了一种安全且高效的方法来管理 Key Protect实例中的密钥。
当您 IBM Cloud 时,如果有更新可用,您会收到通知。 请确保 CLI 是最新的,以便使用适用于 Key Protect CLI 插件的命令和标志。
注释
要安装和配置 Key Protect CLI 插件,请参阅 设置 CLI 主题。
显示如何使用 region-set
的示例概述了配置中的关键步骤。
先前版本
版本 0.8 的本文档不包含不推荐使用的命令。
所有不推荐使用的命令在 V 0.4.0 和 0.5.2中都有效。 即,V 0.5.2 向后兼容 V 0.3.9 和 0.4.0。
示例
所有命令都有一个 Example
部分,其中显示了如何在工作流程的上下文中使用该命令。
许多示例利用有关 Key Protect 实例标识 (而不是 -i
参数) 的会话环境变量集。 以这种方式设置的变量将由插件在适当的情况下自动使用,并在需要时使用。
# export the Key Protect instance id in the command line
$ export KP_INSTANCE_ID=<INSTANCE_ID>
ibmcloud kp 命令摘要
ibmcloud kp
支持此处列出的命令。
kp import-token 命令
kp import-token
命令准备根密钥以进行安全导入。
子命令 | 状态 v0.8 | 描述 |
---|---|---|
创建 | 创建导入令牌 | |
密钥加密 | 对导入到服务中的密钥进行加密 | |
现时标志-加密 | 对 kp import-token create 生成的现时标志进行加密 |
|
显示 | 检索导入令牌 |
kp 实例命令
kp instance
命令用于管理 Key Protect 实例。
子命令 | 状态 v0.8 | 描述 |
---|---|---|
策略 | 列出与实例关联的策略 | |
策略-允许更新 -网络 | 更新“允许的网络”的实例策略 | |
policy-update dual-auth-delete | 更新 "dual auth delete" 的实例策略 | |
策略-更新 轮换 | 更新“轮换”的实例策略 |
kp key 命令
kp key
命令管理各个密钥。
子命令 | 状态 v0.8 | 描述 |
---|---|---|
alias-创建 | 为唯一且方便的密钥引用创建别名 | |
取消-删除 | 取消先前调度的请求以删除密钥 | |
创建 | 创建密钥或导入您自己的密钥 | |
删除 | 删除密钥 | |
disable | 禁用密钥 | |
启用 | 启用密钥 | |
策略 | 检索政策列表 | |
policy-update dual-auth-delete | 更新 "dual auth delete" 的密钥策略 | |
策略-更新 轮换 | 更新“轮换”的密钥策略 | |
恢复 | 复原先前已删除的根密钥 | |
循环 | 旋转根密钥 | |
调度-删除 | 使用双认证删除策略授权删除密钥 | |
显示 | 检索密钥 | |
同步 | 同步密钥的关联资源 | |
解包 | 解密数据加密密钥 | |
更新 | 更新密钥,将其传输到新的密钥环 | |
版本 | 列出所有密钥版本 | |
回绕 | 数据加密密钥 |
kp key-ring 命令
密钥环支持允许使用 kp key-ring
来管理密钥组以获取最佳实践。
子命令 | 状态 v0.8 | 描述 |
---|---|---|
创建 | 在 kp 实例中创建密钥环 | |
删除 | 删除 kp 实例中的密钥环 |
其他 kp 命令
用于管理的更多命令 Key Protect 资源可支持最佳实践。
命令 | 状态 v0.8 | 描述 |
---|---|---|
kp 键 | 列出您的 Key Protect 实例中可用的密钥 | |
kp 密钥环 | 列出与 kp 实例关联的密钥环 | |
kp 区域集 | 选择不同的区域终点 | |
kp 注册 | 列出根密钥与其他云资源之间的关联 | |
kp kmip | 创建和管理 KMIP 适配器及关联资源。 |
查看帮助
以下是 kp
帮助信息的示例。
ibmcloud kp -h
ibmcloud kp import-token -h
ibmcloud kp key -h
ibmcloud kp keys -h
kp import-token
和 kp key
命令具有子命令。 这些示例显示了一些子命令的帮助。
ibmcloud kp import-token create -h
ibmcloud kp key delete -h
kp import-token 创建
创建导入令牌,可用于加密根密钥并将其导入到 Key Protect 实例。 缺省情况下,导入令牌将在 10 分钟 (600 秒) 后到期。
ibmcloud kp import-token create
-i, --instance-id INSTANCE_ID
[-e, --expiration EXPIRATION_TIME_SECONDS]
[-m, --max-retrievals MAX_RETRIEVALS]
示例
此示例创建导入令牌。 导入令牌由 nonce
和 public key
组成。
现时标志是可以在加密通信中仅使用一次的任意数字。
# create an import token that expires in 5 minutes and allows 3 retrievals
$ ibmcloud kp import-token create --expiration 300 --max-retrievals 3
Created Expires Max Retrievals Remaining Retrievals
2020-05-04 19:12:07 +0000 UTC 2020-05-04 19:17:07 +0000 UTC 3 3
# show the created token
$ ibmcloud kp import-token show
{
"nonce": "8rf2ldP/zWm1Tjrb",
"payload":
"LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0t ...<redacted>... QyBLRVktLS0tLQo="
}
必需参数
-
-i, --instance-id
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
可选参数
-
-e, --expiration
指定导入令牌的到期时间 (以秒计)。 此值确定导入令牌及其关联公用密钥对操作有效的时间长度。
最短值为
300
秒(5分钟),最长值为86400
秒(24小时)。 默认值为600
秒(10分钟)。 -
-m, --max-retrievals
设置导入令牌的使用计数。 该值决定了在过期前可以检索导入令牌的次数,超过该次数后,导入令牌将无法再被访问。 默认值为
1
。
kp import-token key-encrypt
对导入到其中的密钥资料进行加密 Key Protect (通过使用与 Key Protect 实例相关联的公用密钥)。
然后,在运行 ibmcloud kp key create
时提供检索到的加密密钥 以将密钥导入到服务。
ibmcloud kp import-token key-encrypt
-i, --instance-id INSTANCE_ID
-k, --key KEY_MATERIAL
-p, --pubkey PUBLIC_KEY
[-a, --hash HASH_ALGORITHM]
示例
此示例使用由以下对象创建的公用密钥对 key material
进行加密:
kp import-token create
.
# create an import token that expires in 5 minutes and allows 10 retrievals
$ ibmcloud kp import-token create -e 300 -m 10
# create a random, base64-encoded, 32-byte key material
$ KEY_MATERIAL=$(openssl rand -base64 32)
# extract the public key that was created by the "kp import-token create" command
$ PUBLIC_KEY=$(ibmcloud kp import-token show | jq -r '.["payload"]')
# encrypt the key material using the public key
$ ibmcloud kp import-token key-encrypt -k $KEY_MATERIAL -p $PUBLIC_KEY
Encrypted Key
Ela33aTdDiKVUNryLeM/xwUEaKWvzY+u ...<redacted>... Asv7bZxvyZn9KNU=
必需参数
-
-i, --instance-id
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。 -
-k, --key
在服务中存储和管理的 base64-encoded 密钥资料。
-p, --pubkey
由 Key Protect分发的 base64-encoded 公用加密密钥。 要创建新的公用密钥,请使用
ibmcloud kp import-token create
。 要检索公用密钥,请使用ibmcloud kp import-token show
。
可选参数
-
-a, --hash
用于合并密钥的散列算法。 支持 SHA1 和 SHA256。 默认值SHA256。 SHA1 仅受 HPCS 支持。
此选项用于生成只能在具有 HPCS API 的请求中使用的加密密钥。 请勿使用此选项来创建 Key Protect 根密钥。
Hyper Protect Crypto Services (HPCS) 是专用密钥管理服务和硬件安全模块 (HSM)。 HPCS与 Key Protect 集成,用于生成和加密密钥。 HPCS 还启用了“保留自己的密钥”(KYOK) 功能。
注释
有关 HPCS 的更多信息,请参阅 IBM Cloud Hyper Protect Crypto Services入门。
kp import-token nonce-encrypt
加密由以下人员分发的现时标志: Key Protect,其中包含导入到服务中的密钥资料。
然后,在运行时提供检索到的加密现时标志和 IV 值
ibmcloud kp key create
以导入密钥。
ibmcloud kp import-token nonce-encrypt
-i, --instance-id INSTANCE_ID
-k, --key KEY_MATERIAL
-n, --nonce NONCE
[-c, --cbc]
示例
此示例使用 key material
对 nonce
进行加密。
现时标志是可以在加密通信中仅使用一次的任意数字。
# create an import token that expires in 5 minutes and allows 10 retrievals
$ ibmcloud kp import-token create -e 300 -m 10
# create a random, base64-encoded, 32-byte key material
$ KEY_MATERIAL=$(openssl rand -base64 32)
# extract the nonce that was created by the "kp import-token create" command
$ NONCE=$(ibmcloud kp import-token show | jq -r '.["nonce"]')
# encrypt the nonce
$ ibmcloud kp import-token nonce-encrypt -k $KEY_MATERIAL -n $NONCE
Encrypted Nonce IV
mWQad1RHdWoFXFw/D9h8z43t/+0vIZc55VBBQg== 6nvOwUvQdowoD+3v
必需参数
-
-i, --instance-id
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。 -
-k, --key
在服务中存储和管理的 base64-encoded 密钥资料。
-n, --nonce
用于验证导入密钥的请求的现时标志。 该值已base64-encoded。 要检索现时标志,请使用
ibmcloud kp import-token show
。
可选参数
-
-c, --cbc
使用 AES-CBC 加密算法对现时标志进行加密。 仅 HPCS 支持此算法方法。 缺省加密算法为 AES-GCM。
此选项用于生成只能在具有 HPCS API 的请求中使用的加密现时标志。 请勿使用此选项来创建 Key Protect 根密钥。
Hyper Protect Crypto Services (HPCS) 是专用密钥管理服务和硬件安全模块 (HSM)。 HPCS与 Key Protect 集成,用于生成和加密密钥。 HPCS 还启用了“保留自己的密钥”(KYOK) 功能。
注释
有关 HPCS 的更多信息,请参阅 IBM Cloud Hyper Protect Crypto Services入门。
kp import-token show
导入令牌包含公用加密密钥和现时标志。 提供检索到的公用密钥和现时标志作为参数
ibmcloud kp import-token nonce-encrypt
和
ibmcloud kp import-token key-encrypt
.
ibmcloud kp import-token show
-i, --instance-id INSTANCE_ID
示例
此示例创建导入令牌并显示结果。
# create an import token that expires in 5 minutes and allows 10 retrievals
$ ibmcloud kp import-token create -e 300 -m 10
# show the created token
$ ibmcloud kp import-token show
{
"nonce": "8rf2ldP/zWm1Tjrb",
"payload":
"LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0t ...<redacted>... QyBLRVktLS0tLQo="
}
# extract the nonce that was created by the "kp import-token create" command
$ ibmcloud kp import-token show | jq -r '.["nonce"]'
8rf2ldP/zWm1Tjrb
# extract the public key that was created by the "kp import-token create" command
$ ibmcloud kp import-token show | jq -r '.["payload"]'
LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0t ...<redacted>... QyBLRVktLS0tLQo=
必需参数
-
-i, --instance-id
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
kp 实例策略
检索有关实例策略的详细信息,例如 allowed networks
(public-and-private
或 private-only
),allowed IP
策略,key create import
访问权,度量值和双重授权删除 (删除密钥需要来自两个用户的授权)。
ibmcloud kp instance policies
[-i, --instance-id INSTANCE_ID]
[-p, --allowed-ip]
[-a, --allowed-network]
[-d, --dual-auth-delete]
[-k, --key-create-import-access]
[-m, --metrics]
[-o, --output OUTPUT]
[-r, --rotation]
示例
此示例显示如何使用命令和结果。 如果服务没有查询结果,那么将返回空数组 ([]
)。
# update the instance policy and set the allowed network to public-and-private
$ ibmcloud kp instance policy-update allowed-network --enable --network-type public-and-private
Updating instance policy...
OK
# list the instance policies
$ ibmcloud kp instance policies
Retrieving policy details for instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
OK
Created By user id ...<redacted>...
Creation Date 2020-06-22T16:17:52Z
Last Updated 2020-06-22T16:17:52Z
Updated By user id ...<redacted>...
Policy Type allowedNetwork
Enabled true
Network Allowed public-and-private
# disable the instance allowed-network policy
$ ibmcloud kp instance policy-update allowed-network --disable
Updating instance policy...
OK
# list the instance policies - the policy exists and it's disabled
$ ibmcloud kp instance policies
Retrieving policy details for instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
OK
Created By user id ...<redacted>...
Creation Date 2020-06-22T16:17:52Z
Last Updated 2020-06-22T16:20:08Z
Updated By user id ...<redacted>...
Policy Type allowedNetwork
Enabled false
Network Allowed public-and-private
# list the instance policies and show the output as JSON
$ ibmcloud kp instance policies --output json
[
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-22T16:17:52Z",
"lastUpdated": "2020-06-22T16:20:08Z",
"updatedBy": "user id ...<redacted>...",
"policy_type": "allowedNetwork",
"policy_data": { "enabled": false, "attributes": { "allowed_network": "public-and-private" }
}
}
]
必需参数
-
-i, --instance-ID
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
可选参数
-
-p, --allowed-ip
显示 "allowed ip" 的实例策略。
-
-a, --allowed-network
显示“允许的网络”的实例策略。
-
-d, --dual-auth-delete
显示“双重授权删除”的实例策略。
-
-k, --key-create-import-access
检索实例的密钥创建导入访问策略详细信息。
-
-m, --metrics
检索实例的度量策略详细信息。
-
-o, --output
设置 CLI 输出格式。 缺省情况下,会以表格式打印所有命令。 要将输出格式更改为JSON,请使用
--output json
。 -
-r, --rotation
检索实例的轮换策略详细信息。
kp 实例策略-允许更新-网络
更新实例的策略并将允许的网络设置为
public-and-private
或 private-only
。
allowed-network
策略阻止实例从公用或专用网络获取请求。
对于现有实例,将在设置网络访问策略后实施该策略。
有关更多信息,请参阅 管理网络访问策略。
ibmcloud kp instance policy-update allowed-network
-i, --instance-id INSTANCE_ID
-d, --disable OR
-e, --enable
-t, --network-type NETWORK_TYPE
示例
此示例将“允许的网络”策略设置为 "public-and-private"。
# update the instance policy and set the allowed network to public-and-private
$ ibmcloud kp instance policy-update allowed-network --enable --network-type public-and-private
Updating instance policy...
OK
# list the instance policies
$ ibmcloud kp instance policies
Retrieving policy details for instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
OK
Created By user id ...<redacted>...
Creation Date 2020-06-22T16:17:52Z
Last Updated 2020-06-22T18:17:32Z
Updated By user id ...<redacted>...
Policy Type allowedNetwork
Enabled true
Network Allowed public-and-private
必需参数
-
-d, --disable
-
-e, --enable
禁用或启用网络访问策略。 需要一个选项。
-
-i, --instance-ID
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。 -
-t, --network-type
指定允许的网络访问类型。 选项为
public-and-private
或private-only
。
kp 实例策略-update dual-auth-delete
使用 dual-auth-delete
策略可安全地删除加密密钥。 当您 删除一个密钥时,会粉碎其中的内容和相关数据。 任何由密钥加密的数据都将变为不可访问。
删除具有双重授权策略的密钥需要来自两个用户的授权。
更多信息,请参阅 使用双重授权策略删除密钥。
注释
实例的双重授权删除与密钥的双重授权删除不同。
一旦对密钥启用了 dual-auth-delete
,就无法将其禁用或除去。 您必须等待 7 天才能使策略到期。
可以随时启用或禁用实例的双重授权删除。
如果密钥具有 dual-auth-delete
策略,那么更改实例策略不会更改任何现有密钥策略。
更改实例策略时,将使用实例策略来实施新密钥。
ibmcloud kp instance policy-update dual-auth-delete
-i, --instance-id INSTANCE_ID
-d, --disable OR
-e, --enable
示例
以下是 kp instance policy-update dual-auth-delete
的示例。
示例 1
此示例启用双重授权删除策略。
# enable the instance dual authorization policy
$ ibmcloud kp instance policy-update dual-auth-delete --enable
Updating instance policy...
OK
# list the instance policies
$ ibmcloud kp instance policies --output json
[
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-22T18:45:14Z",
"lastUpdated": "2020-06-22T18:45:14Z",
"updatedBy": "user id ...<redacted>...",
"policy_type": "dualAuthDelete",
"policy_data": { "enabled": true
}
}
]
# disable the instance dual authorization policy
$ ibmcloud kp instance policy-update dual-auth-delete --disable
Updating instance policy...
OK
# list the instance policies
$ ibmcloud kp instance policies --output json
[
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-22T18:45:14Z",
"lastUpdated": "2020-06-22T18:51:33Z",
"updatedBy": "user id ...<redacted>...",
"policy_type": "dualAuthDelete",
"policy_data": { "enabled": false
}
}
]
示例 2
此示例启用双重授权删除策略,并创建新密钥以显示新密钥如何继承实例策略。
对实例禁用双重授权策略不会更改现有密钥的策略。 实例策略将应用于更新策略后创建的新密钥。
# enable the instance dual authorization policy
$ ibmcloud kp instance policy-update dual-auth-delete --enable
Updating instance policy...
OK
# create a new key
$ ibmcloud kp key create my-protected-key
Creating key: 'my-protected-key', in instance: 'a192d603-0b8d-452f-aac3-f9e1f95e7411'...
OK
Key ID Key Name
6a8a129b-0cd4-4667-ba57-b355a125a7ca my-protected-key
# list the policies for the key - dual-auth-delete is
# enabled because the key inherits the instance policy
$ ibmcloud kp key policies 6a8a129b-0cd4-4667-ba57-b355a125a7ca --output json
[
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-22T19:13:00Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:policy:2427dbde-6cff-41eb-8b5a-ff26b038cafc",
"lastUpdateDate": "2020-06-22T19:13:00Z",
"updatedBy": "user id ...<redacted>...",
"dualAuthDelete": { "enabled": true
}
}
]
# attempt to delete the key - this fails
$ ibmcloud kp key delete 6a8a129b-0cd4-4667-ba57-b355a125a7ca
Deleting key: 6a8a129b-0cd4-4667-ba57-b355a125a7ca, from instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
FAILED
kp.Error:
correlation_id='8ad33eb2-7bbf-4b7a-a02e-221959920342',
msg='Conflict: 1 prior authorization(s) are required for deletion: Key could not be deleted. Please see "reasons" for more details.',
reasons='[AUTHORIZATIONS_NOT_MET: Number of authorizations required to delete is not met -
FOR_MORE_INFO_REFER: https://cloud.ibm.com/apidocs/key-protect]'
# disable the instance dual authorization policy
$ ibmcloud kp instance policy-update dual-auth-delete --disable
Updating instance policy...
OK
# attempt to delete the key - this fails because the key policy
# does not change when the instance policy is updated
$ ibmcloud kp key delete 6a8a129b-0cd4-4667-ba57-b355a125a7ca
Deleting key: 6a8a129b-0cd4-4667-ba57-b355a125a7ca, from instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
FAILED
kp.Error:
correlation_id='cbc0d18b-a816-45ab-af6a-b8e18dc3e628',
msg='Conflict: 1 prior authorization(s) are required for deletion: Key could not be deleted. Please see "reasons" for more details.',
reasons='[AUTHORIZATIONS_NOT_MET: Number of authorizations required to delete is not met -
FOR_MORE_INFO_REFER: https://cloud.ibm.com/apidocs/key-protect]'
必需参数
-
-d, --disable
-
-e, --enable
禁用或启用双重授权策略。 需要一个选项。
-
-i, --instance-ID
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
kp 密钥别名-创建
为密钥创建别名,并以 JSON 格式显示输出。 别名可以用作接受密钥 ID
的方法中的引用。 每个别名仅在给定实例中唯一,并且不会在 Key Protect 服务中保留。 每个密钥最多可有五个别名。 每个实例的别名数没有限制。 别名的长度可以在 2 到 90 个字符之间 (含)。
别名必须是字母数字,并且不能包含除 "-" 或 "_" 以外的空格或特殊字符。此外,别名不能是 V 4 UUID,也不能是 Key Protect 保留名称: allowed_ip
,key
,keys
,metadata
,policy
,policies
,registration
,registrations
,ring
,rings
,rotate
,wrap
,unwrap
,rewrap
,version
和 versions
。
ibmcloud kp key alias-create KEY_ID -a KEY_ALIAS
-i, --instance-id INSTANCE_ID
-a, --alias KEY_ALIAS
[-o, --output OUTPUT]
示例
这是 kp key alias-create
的示例。
示例
创建密钥别名。
# create a key alias
$ ibmcloud kp key alias-create 24203f96-b134-440e-981a-a24f2d432256 my-alias
Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Alias
24203f96-b134-440e-981a-a24f2d432256 my-alias
必需参数
-
KEY_ID
您要修改的钥匙的ID。 要检索可用钥匙列表, 请运行 kp keys命令。
-
KEY_ALIAS
要修改的密钥的别名或备用标识。 标识必须是: 字母数字,并且除 "-" 或 "_" 以外没有空格或特殊字符,并且不能是 V 4 UUID。
-
-i, --instance-ID
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
可选参数
-
-o, --output
设置 CLI 输出格式。 缺省情况下,会以表格式打印所有命令。 要将输出格式更改为JSON,请使用
--output json
。
kp 键取消-删除
具有 dual-auth-delete
策略的密钥需要来自两个管理用户的授权才能删除该密钥。
此命令 (kp key cancel-delete
) 取消或除去先前的授权。
The kp key schedule-delete 命令是用于删除密钥的“授权”。
遵循此过程以删除具有 dual-auth-delete
策略的密钥。
-
创建密钥并启用
dual-auth-delete
策略 -
用户 1 调度 (授权) 密钥删除
kp key schedule-delete
命令 -
用户 2 调度 (授权) 密钥删除
-
在执行第二个
schedule-delete
后删除密钥,在用户界面,API 和 CLI 中支持该密钥 -
如果在 7 天内未进行第二次授权,那么密钥将返回到其缺省状态
有两种方法可以启用 dual-auth-delete
策略:
- 使用
kp key policy-update dual-auth-delete
设置单个密钥的策略 - 使用以下命令设置实例的策略:
kp instance policy-update dual-auth-delete
; 启用实例策略后创建的所有密钥将继承实例策略设置
ibmcloud kp key cancel-delete KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
示例
这是取消先前调度的密钥删除的示例。
# this key has a dual-auth-delete policy
$ ibmcloud kp key policies $KEY_ID --output json
[
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-22T19:13:00Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:policy:2427dbde-6cff-41eb-8b5a-ff26b038cafc",
"lastUpdateDate": "2020-06-22T21:29:10Z",
"updatedBy": "user id ...<redacted>...",
"dualAuthDelete": { "enabled": true
}
}
]
# cancel a previously scheduled key delete
$ ibmcloud kp key cancel-delete $KEY_ID
Cancelling key for deletion...
OK
必需参数
-
KEY_ID_OR_ALIAS
要删除的密钥的 v4 UUID 或别名。 要检索可用钥匙列表,请运行 kp keys命令。
kp 密钥创建
在您指定或指定的 Key Protect 实例中 创建根密钥 导入您自己的密钥
根密钥的长度必须为 16,24 或 32 个字节; 对应于 128,192 或 256 位。
ibmcloud kp key create KEY_NAME
-i, --instance-id INSTANCE_ID
[--key-ring KEY_RING_ID]
[-k, --key-material KEY_MATERIAL]
[-n, --encrypted-nonce NONCE]
[-o, --output OUTPUT]
[-s, --standard-key]
[-v, --iv IV]
[-D, --description DESCRIPTION]
示例
以下是 kp key create
的示例。
示例 1
创建根密钥。
# create a root key
$ ibmcloud kp key create my-root-key
Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
24203f96-b134-440e-981a-a24f2d432256 my-root-key
示例 2
创建根密钥并显示 JSON 输出。
# create a root key
$ ibmcloud kp key create my-root-key --output json
{
"id": "24203f96-b134-440e-981a-a24f2d432256",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:24203f96-b134-440e-981a-a24f2d432256"
}
示例 3
根据 base64-encoded 值创建根密钥。
# create a random, base64-encoded, 32-byte key material
$ KEY_MATERIAL=$(openssl rand -base64 32)
# create a root key from a base64-encoded value
$ ibmcloud kp key create my-base64-root-key -k $KEY_MATERIAL
Creating key: 'my-base64-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
5f9eef2d-53b4-42e8-8b56-c2970255210a my-base64-root-key
示例 4
使用导入令牌创建根密钥。
# create an import token that expires in 5 minutes and allows 10 retrievals
$ ibmcloud kp import-token create -e 300 -m 10
# create a random, base64-encoded, 32-byte key material
$ KEY_MATERIAL=$(openssl rand -base64 32)
# extract the nonce that was created by the "kp import-token create" command
$ NONCE=$(ibmcloud kp import-token show | jq -r '.["nonce"]')
# extract the public key that was created by the "kp import-token create" command
$ PUBLIC_KEY=$(ibmcloud kp import-token show | jq -r '.["payload"]')
# encrypt the key material using the public key
$ ibmcloud kp import-token key-encrypt -k $KEY_MATERIAL -p $PUBLIC_KEY
Encrypted Key
qT1pyiS1Sivbmmt4doTtfZC4XuLazk7u ...<redacted>... +a/6EqeAamo/9vo=
# capture the encrypted key material
$ ENCRYPTED_KEY=qT1pyiS1Sivbmmt4doTtfZC4XuLazk7u ...<redacted>... +a/6EqeAamo/9vo=
# encrypt the nonce
$ ibmcloud kp import-token nonce-encrypt -k $KEY_MATERIAL -n $NONCE
Encrypted Nonce IV
fR8uRvbrKIm9y/LCq9p6pwFBXbF864q/bw5meQ== efQgA8xBeyuBy39D
# capture the encrypted nonce and the initialization vector (IV)
$ ENCRYPTED_NONCE=fR8uRvbrKIm9y/LCq9p6pwFBXbF864q/bw5meQ==
$ IV=efQgA8xBeyuBy39D
# create a root key using an import token, provide an encrypted key, nonce, and initialization vector (IV)
$ ibmcloud kp key create my-imported-root-key -k $ENCRYPTED_KEY -n $ENCRYPTED_NONCE -v $IV
Creating key: 'my-imported-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
4241a9b3-0ee0-4cfd-b0f3-fd80505fb675 my-imported-root-key
示例 5
创建标准密钥。
# create a standard key
$ ibmcloud kp key create my-standard-key -s
Creating key: 'my-standard-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
12d3f3a4-aea5-4832-8339-fa14dbffd935 my-standard-key
示例 6
创建标准密钥,该密钥用作凭证的保险库文件。
可以将任何 base64-encoded 字符串作为标准密钥导入。 此示例显示如何将凭证 (而不仅仅是加密密钥) 存储在 Key Protect.
在 base64-encoding之前,标准密钥的大小最多可以为 7,500 字节。
# create a file with your credentials
$ cat credentials.json
{
"host": "localhost",
"database": "dev-backup",
"username": "my-username",
"password": "my-password"
}
# encode the credentials (or any string) to a base64 string
$ ENCODED=$(base64 -i credentials.json)
$ echo $ENCODED
ewoJImhvc3QiOiAibG9jYWxob3N0IiwK...<redacted>...cGFzc3dvcmQiCn0K
# create a new key that contains the base64-encoded credentials
$ ibmcloud kp key create credentials-key -i $KP_INSTANCE_ID --key-material $ENCODED --standard-key --output json
# OR... CAPTURE THE KEY_ID
$ KEY_ID=$(ibmcloud kp key create credentials-key -i $KP_INSTANCE_ID --key-material $ENCODED --standard-key --output json | jq -r '.["id"]')
{
"id": "8480e26f-3add-4fff-bca7-8cf908894b7c",
"name": "credentials-key",
"type": "application/vnd.ibm.kms.key+json",
"extractable": true,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:key:8480e26f-3add-4fff-bca7-8cf908894b7c",
"deleted": false
}
# retrieve the base64-encoded payload
$ ibmcloud kp key show $KEY_ID --output json
# OR... CAPTURE THE PAYLOAD
$ PAYLOAD=$(ibmcloud kp key show $KEY_ID --output json | jq -r '.["payload"]')
{
"id": "8480e26f-3add-4fff-bca7-8cf908894b7c",
"name": "credentials-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-08-18T16:13:08Z",
"lastUpdateDate": "2020-08-18T16:13:08Z",
"extractable": true,
"payload": "ewoJImhvc3QiOiAibG9jYWxob3N0IiwKCSJkYXRhYmFzZSI6ICJkZXYtYmFja3VwIiwKCSJ1c2VybmFtZSI6ICJteS11c2VybmFtZSIsCgkicGFzc3dvcmQiOiAibXktcGFzc3dvcmQiCn0=",
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:key:8480e26f-3add-4fff-bca7-8cf908894b7c",
"deleted": false,
"dualAuthDelete": {
"enabled": false
}
}
# decode the payload to get the original string (credentials)
$ echo $PAYLOAD | base64 -d
{
"host": "localhost",
"database": "dev-backup",
"username": "my-username",
"password": "my-password"
}
示例 7
创建具有别名的根密钥,然后使用该别名来标识密钥以显示密钥详细信息。
# create a root key with an alias
$ ibmcloud kp key create root-key-with-alias -a example-alias --output json
{
"id": "b3660416-4186-4587-b528-484886a4731b",
"name": "root-key-with-alias",
"type": "application/vnd.ibm.kms.key+json",
"extractable": false,
"state": 1,
"aliases": [
"example-alias"
],
"keyRingID": "default",
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:b3660416-4186-4587-b528-484886a4731b",
"deleted": false
}
# show key details using the alias as identifier
$ ibmcloud kp key show example-alias --output json
{
"id": "b3660416-4186-4587-b528-484886a4731b",
"name": "root-key-with-alias",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2022-06-09T21:21:55Z",
"lastUpdateDate": "2022-06-09T21:21:55Z",
"keyVersion": {
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"creationDate": "2022-06-09T21:21:55Z"
},
"aliases": [
"example-alias"
],
"keyRingID": "default",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:b3660416-4186-4587-b528-484886a4731b",
"deleted": false,
"dualAuthDelete": {
"enabled": false
}
}
示例 8
向密钥添加描述。 例如,用于描述密钥的预期用途的短短语。
ibmcloud kp key create KEY_NAME -i 40f2a13c-780e-4641-bea5-e166e5bb5a9f -D ""description of the key""
必需参数
-
KEY_NAME
为您的车钥匙分配一个独特、可读的识别码。
-
-i, --instance-ID
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
可选参数
-
-k, --key-material
如果生成了密钥,那么这是您在服务中存储和管理的 base64-encoded 密钥资料。
根密钥的长度必须为 16,24 或 32 个字节; 对应于 128,192 或 256 位。 密钥必须是 base64-encoded。
标准密钥的大小可达 7,500 字节。 密钥必须是 base64-encoded。
如果要使用导入令牌创建密钥,那么这是来自
kp import-token key-encrypt
进程的加密密钥。要生成新密钥,请省略
-k, --key-material
参数。 -
-n, --encrypted-nonce
与导入令牌配合使用。 用于验证将密钥导入到 Key Protect的请求的加密现时标志值。 必须使用导入到服务中的密钥资料对此值进行加密。 请参阅
ibmcloud kp import-token --help
。要检索现时标志,请使用
ibmcloud kp import-token show
。 然后,通过运行ibmcloud kp import-token nonce-encrypt
来加密值。 -
-o, --output
设置 CLI 输出格式。 缺省情况下,会以表格式打印所有命令。 要将输出格式更改为JSON,请使用
--output json
。 -
-s, --standard-key
仅当您要创建 标准密钥 时,才需要设置参数。 要创建根密钥,请省略
--standard-key
参数。 -
-v, --iv
与导入令牌配合使用。 加密现时标志时生成的初始化向量 (IV)。 需要 IV 值来解密在向服务发出密钥导入请求时提供的加密现时标志值。
要生成 IV,请通过运行
ibmcloud kp import-token nonce-encrypt
来加密现时标志。 -
--key-ring
钥匙扣上有一个独特、易读的名字。 如果用户没有对缺省密钥环的许可权,那么此属性是必需的。
-
-D, --description
允许将描述添加到密钥。 例如,用于描述密钥的预期用途的短短语。
kp key create-key-with-policy-overrides
仅为将覆盖任何适用实例策略的指定密钥创建具有策略的密钥。
ibmcloud kp key create-key-with-policy-overrides KEY_NAME
-i, --instance-id INSTANCE_ID
[-a, --aliases ALIAS]
[-d, --dual-auth-delete-policy-enabled KEY_RING_ID]
[--key-ring KEY_RING_ID]
[-k, --key-material KEY_MATERIAL]
[-m, --rotation-interval-month VALUE]
[-n, --encrypted-nonce NONCE]
[-o, --output OUTPUT]
[-s, --standard-key]
[-v, --iv IV]
示例
创建用于启用时间间隔为 2 个月的轮换策略的根密钥 (每个 "月" 的值为 30 天,从而生成 60 天的轮换时间间隔)。
% ibmcloud kp key create-key-with-policy-overrides test-key -m 2 -r
Creating key with policy overrides: 'test-key', in instance: '47377f07-8721-2O47-f396-ef1982c1e96e'...
OK
Key ID Key Name
076df396-4c90-e008-bf20-f1bb672d465b test-key
# List policies
% ibmcloud kp key policies 076df396-4c90-e008-bf20-f1bb672d465b
Retrieving policy details for key ID: 076df396-4c90-e008-bf20-f1bb672d465b...
OK
Created By IBMid-xxxxnnnnnxxx
Creation Date 2022-10-27T17:48:20Z
Last Updated 2022-10-27T17:48:20Z
Updated By IBMid-xxxxnnnnnxxx
Policy Type Rotation
Interval 2
Enabled true
必需参数
-
KEY_NAME
为您的车钥匙分配一个独特、可读的识别码。
-
-i, --instance-ID
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
可选参数
-
-a, --aliases
字母数字人类可读别名,范围为 2-分配给密钥的 90 个字符。 别名不能包含除下划线和短划线以外的空格或特殊字符。 每个密钥最多允许 5 个别名。
-
-d, --dual-auth-delete-policy-enabled
对密钥启用双重认证删除策略。
-
-k, --key-material
如果生成了密钥,那么这是您在服务中存储和管理的 base64-encoded 密钥资料。
根密钥的长度必须为 16,24 或 32 个字节; 对应于 128,192 或 256 位。 密钥必须是 base64-encoded。
标准密钥的大小可达 7,500 字节。 密钥必须是 base64-encoded。
如果要使用导入令牌创建密钥,那么这是来自
kp import-token key-encrypt
进程的加密密钥。要生成新密钥,请省略
-k, --key-material
参数。 -
-n, --encrypted-nonce
与导入令牌配合使用。 用于验证将密钥导入到 Key Protect的请求的加密现时标志值。 必须使用导入到服务中的密钥资料对此值进行加密。 请参阅
ibmcloud kp import-token --help
。要检索现时标志,请使用
ibmcloud kp import-token show
。 然后,通过运行ibmcloud kp import-token nonce-encrypt
来加密值。 -
-o, --output
设置 CLI 输出格式。 缺省情况下,会以表格式打印所有命令。 要将输出格式更改为JSON,请使用
--output json
。 -
-m, --rotation-interval-month
指定密钥的轮换时间间隔(以月为单位)。 默认值为 -1
。
-
-s, --standard-key
仅当您要创建 标准密钥 时,才需要设置参数。 要创建根密钥,请省略
--standard-key
参数。 -
-v, --iv
与导入令牌配合使用。 加密现时标志时生成的初始化向量 (IV)。 需要 IV 值来解密在向服务发出密钥导入请求时提供的加密现时标志值。
要生成 IV,请通过运行
ibmcloud kp import-token nonce-encrypt
来加密现时标志。 -
--key-ring
钥匙扣上有一个独特、易读的名字。 如果用户没有对缺省密钥环的许可权,那么此属性是必需的。
kp 键删除
ibmcloud kp key delete KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
[--key-ring KEY_RING_ID]
[-f, --force]
[-o, --output OUTPUT]
示例
以下是 kp key delete
的示例。
示例 1
删除根密钥。
# create a root key
$ ibmcloud kp key create my-root-key
Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
8635b804-9966-4918-a16b-d561fdbf181f my-root-key
# show key details
$ ibmcloud kp key show 8635b804-9966-4918-a16b-d561fdbf181f
Grabbing info for key id: 8635b804-9966-4918-a16b-d561fdbf181f...
OK
Key ID Key Name Description Creation Date Expiration Date
8635b804-9966-4918-a16b-d561fdbf181f my-root-key 2020-05-05 19:58:02 +0000 UTC Key does not expire
# delete the key
$ ibmcloud kp key delete 8635b804-9966-4918-a16b-d561fdbf181f
Deleting key: 8635b804-9966-4918-a16b-d561fdbf181f, from instance: 390086ac-76fa-4094-8cf3-c0829bd69526...
OK
Deleted Key
8635b804-9966-4918-a16b-d561fdbf181f
示例 2
删除根密钥并显示 JSON 输出。
# create a root key
$ ibmcloud kp key create my-root-key --output json
{
"id": "9cca88c9-019e-4f0a-9e76-8e657c6b9720",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb145:390086ac-76fa-4094-8cf3-c0829bd69526:key:9cca88c9-019e-4f0a-9e76-8e657c6b9720"
}
# show key details
$ ibmcloud kp key show 9cca88c9-019e-4f0a-9e76-8e657c6b9720 --output json
{
"id": "9cca88c9-019e-4f0a-9e76-8e657c6b9720",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-05-05T20:03:00Z",
"lastUpdateDate": "2020-05-05T20:03:00Z",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb145:390086ac-76fa-4094-8cf3-c0829bd69526:key:9cca88c9-019e-4f0a-9e76-8e657c6b9720"
}
# delete the key
$ ibmcloud kp key delete 9cca88c9-019e-4f0a-9e76-8e657c6b9720 --output json
{
"id": "9cca88c9-019e-4f0a-9e76-8e657c6b9720"
}
示例 3
删除向另一个云资源注册的根密钥。
# create a Cloud Object Storage (COS) instance
# "lite" is the pricing plan and "global" is the region
$ COS_NAME=my-cos-1
$ ibmcloud resource service-instance-create $COS_NAME cloud-object-storage lite global
# capture the COS instance id (GUID)
$ COS_INSTANCE_ID=9d4353d8-6b85-4689-90dd-1ccfb4a275ab
# create a Key Management Service (KMS) instance
# "tiered-pricing" is the pricing plan and "us-south" is the region
$ KMS_NAME=my-kms-1
$ ibmcloud resource service-instance-create $KMS_NAME kms tiered-pricing us-south
# capture the Key Protect (KP) instance id (GUID)
$ KP_INSTANCE_ID=b0d84b32-09d0-4314-8049-da78e3b9ab6f
# create a policy for COS to read KMS; source is COS, target is KMS (Key Protect)
$ ibmcloud iam authorization-policy-create cloud-object-storage kms Reader \
--source-service-instance-id $COS_INSTANCE_ID \
--target-service-instance-id $KP_INSTANCE_ID
# capture the COS-to-KMS authorization policy id
$ COS_KMS_AUTHORIZATION=79375168-2d74-49df-98aa-3e727410fa71
# create a KP root key that COS uses to encrypt data
$ ibmcloud kp key create my-cos-key --output json
{
"id": "52a9d772-8982-4620-bfb4-b070dd812a0c",
"name": "my-cos-key",
"type": "application/vnd.ibm.kms.key+json",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:b0d84b32-09d0-4314-8049-da78e3b9ab6f:key:52a9d772-8982-4620-bfb4-b070dd812a0c"
}
# capture the KP root key id
$ MY_COS_KEY_ID=52a9d772-8982-4620-bfb4-b070dd812a0c
# create a COS bucket and set KP encryption
# must be done in the console user interface (UI) because
# there is no API or CLI support at this time
# capture the name of the COS bucket that was created
$ COS_BUCKET=my-cos-kms-bucket
# view the KP registration; it's a result of creating the COS bucket
$ ibmcloud kp registrations --output json
[
{
"keyId": "52a9d772-8982-4620-bfb4-b070dd812a0c",
"resourceCrn": "crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:9d4353d8-6b85-4689-90dd-1ccfb4a275ab:bucket:my-cos-kms-bucket",
"createdBy": "crn-crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:9d4353d8-6b85-4689-90dd-1ccfb4a275ab::",
"creationDate": "2020-06-15T20:41:23Z",
"lastUpdated": "2020-06-15T20:41:23Z",
"keyVersion": { "id": "52a9d772-8982-4620-bfb4-b070dd812a0c", "creationDate": "2020-06-15T20:36:46Z"
}
}
]
# delete the authorization policy between COS AND KMS - this breaks everything
$ ibmcloud iam authorization-policy-delete $COS_KMS_AUTHORIZATION --force
# delete the KP root key - this fails because the registration was not deleted
$ ibmcloud kp key delete $MY_COS_KEY_ID
Deleting key: 52a9d772-8982-4620-bfb4-b070dd812a0c, from instance: b0d84b32-09d0-4314-8049-da78e3b9ab6f...
FAILED
kp.Error:
correlation_id='c27b7948-4a1f-4cbd-8770-cb3616888e27',
msg='Conflict: Key could not be deleted. Please see "reasons" for more details.',
reasons='[PROTECTED_RESOURCE_ERR: Key is protecting one or more cloud resources -
FOR_MORE_INFO_REFER: https://cloud.ibm.com/docs/key-protect?topic=key-protect-troubleshooting#unable-to-delete-keys]'
# delete the KP root key; use --force because the registration between COS and KMS still exists
$ ibmcloud kp key delete $MY_COS_KEY_ID --force --output json
{
"id": "52a9d772-8982-4620-bfb4-b070dd812a0c"
}
# delete the KMS instance
$ ibmcloud resource service-instance-delete $KMS_NAME --force
# delete the COS instance
$ ibmcloud resource service-instance-delete $COS_NAME --force
# view resources (COS and KMS should no longer exist)
$ ibmcloud resource service-instances
Retrieving instances with type service_instance in resource group Default in all locations under account <account name> as <email address>...
OK
No service instance found.
必需参数
-
KEY_ID_OR_ALIAS
要删除的密钥的 v4 UUID 或别名。 要检索可用钥匙列表, 请运行 kp keys命令。
-
-i, --instance-id
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
可选参数
-
-f, --force
使用强制删除用于删除具有“注册”的密钥的密钥。 注册是根密钥与其他云资源 (例如 Cloud Object Storage (COS) 存储区或 Cloud Databases 部署) 之间的关联。
有关更多信息,请参阅 kp 注册
-
-o, --output
设置 CLI 输出格式。 缺省情况下,会以表格式打印所有命令。 要将输出格式更改为JSON,请使用
--output json
。 -
--key-ring
钥匙扣上有一个独特、易读的名字。 如果用户没有对缺省密钥环的许可权,那么此属性是必需的。
kp 键禁用
kp key disable
命令将禁用根密钥,并临时撤销对云中密钥的关联数据的访问权。
作为管理员,您可能需要临时 禁用根密钥 (如果您怀疑数据可能存在安全漏洞,损害或违规)。
禁用根密钥将暂挂其加密和解密操作。 在确认安全风险不再处于活动状态之后,您可以通过 启用 已禁用的根密钥来恢复对数据的访问权。
禁用先前启用的根密钥时,密钥将从 活动 (值为 1) 转换为 已暂挂 (值为 2) 密钥状态。
要禁用根密钥,必须为您分配实例或密钥的 管理者 服务访问角色。 了解 IAM 角色如何映射到 Key Protect 服务操作,请检出 服务访问角色。
如果您正在使用支持撤销对已禁用根密钥的访问权的集成云服务,那么在撤销对根密钥的关联数据的访问权之前,该服务最多可能需要 4 小时。
撤销对关联数据的访问权后,相应的 disable event
显示在 IBM Cloud Activity Tracker Web UI 中。 disable event
指示密钥已撤销 (现在已禁用),并且密钥 不能 用于加密和解密操作。
ibmcloud kp key disable KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
[--key-ring KEY_RING_ID]
示例
以下是 kp key disable
的示例。
示例 1
创建根密钥,将其禁用,验证密钥状态 (已暂挂),启用根密钥,并验证密钥状态 (活动)。
# create a root key
$ ibmcloud kp key create my-root-key --output json
{
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}
# show key details - a state of "1" is "active"
$ ibmcloud kp key show 264fadc3-7667-4b25-916e-5825fe70de0b --output json
{
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-09T21:21:55Z",
"lastUpdateDate": "2020-06-09T21:21:55Z",
"keyVersion": {
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"creationDate": "2020-06-09T21:21:55Z"
},
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}
# disable the root key
$ ibmcloud kp key disable 264fadc3-7667-4b25-916e-5825fe70de0b
Disabling key: '264fadc3-7667-4b25-916e-5825fe70de0b', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
# show key details - a state of "2" is "suspended"
$ ibmcloud kp key show 264fadc3-7667-4b25-916e-5825fe70de0b --output json
{
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-09T21:21:55Z",
"lastUpdateDate": "2020-06-09T21:23:26Z",
"keyVersion": {
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"creationDate": "2020-06-09T21:21:55Z"
},
"extractable": false,
"state": 2,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}
示例 2
创建根密钥,将其禁用,然后尝试使用根密钥来合并另一个密钥。
# create a root key
$ KEY_ID=$(ibmcloud kp key create my-root-key --output json | jq -r '.["id"]')
$ echo $KEY_ID
63d044d9-b38b-4803-85ef-ed9a1e5087c2
# disable the root key
$ ibmcloud kp key disable $KEY_ID
Disabling key: '63d044d9-b38b-4803-85ef-ed9a1e5087c2', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
# create a random, base64-encoded, 32-byte data encryption key (DEK)
$ PLAINTEXT=$(openssl rand -base64 32)
$ echo $PLAINTEXT
BNxtU9B4kXOZA45Cnyz3wOh4J77TakTXI1n2rj0ZiMc=
# wrap the plaintext key with the root key, creating a DEK (this is the ciphertext)
# this should fail (the root key is disables)
$ ibmcloud kp key wrap $KEY_ID -p $PLAINTEXT --output json
FAILED
kp.Error:
correlation_id='c2edbdad-7e62-4690-8fcc-10515ade9913',
msg='Conflict: Action could not be performed on key. Please see "reasons" for more details.',
reasons='[KEY_ACTION_INVALID_STATE_ERR: Key is not in a valid state -
FOR_MORE_INFO_REFER: https://cloud.ibm.com/apidocs/key-protect]'
示例 3
创建具有别名的根密钥,使用该别名来标识要禁用的密钥,验证密钥状态 (已暂挂),然后启用根密钥并验证新的密钥状态 (活动)。
# create a root key
$ ibmcloud kp key create root-key-with-alias -a example-alias-1 --output json
{
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"name": "root-key-with-alias",
"type": "application/vnd.ibm.kms.key+json",
"extractable": false,
"state": 1,
"aliases": [
"example-alias"
],
"deleted": false,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}
# show key details using the alias as identifier - a state of "1" is "active"
$ ibmcloud kp key show example-alias-1 --output json
{
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"name": "root-key-with-alias",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-09T21:21:55Z",
"lastUpdateDate": "2020-06-09T21:21:55Z",
"keyVersion": {
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"creationDate": "2020-06-09T21:21:55Z"
},
"extractable": false,
"state": 1,
...
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}
# disable the root key identified by alias
$ ibmcloud kp key disable example-alias-1
Disabling key: '264fadc3-7667-4b25-916e-5825fe70de0b', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
# show key details - a state of "2" is "suspended"
$ ibmcloud kp key show example-alias-1 --output json
{
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"name": "root-key-with-alias",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-09T21:21:55Z",
"lastUpdateDate": "2020-06-09T21:23:26Z",
"keyVersion": {
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"creationDate": "2020-06-09T21:21:55Z"
},
"extractable": false,
"state": 2,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}
必需参数
-
KEY_ID_OR_ALIAS
要删除的密钥的 v4 UUID 或别名。 要检索可用钥匙列表, 请运行 kp keys命令。
-
-i, --instance-id
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
可选参数
-
--key-ring
钥匙扣上有一个独特、易读的名字。 如果用户没有对缺省密钥环的许可权,那么此属性是必需的。
kp 密钥启用
当您启用先前禁用的根密钥时,密钥将从 已暂挂 (值为 2) 过渡到 活动 (值为 1) 密钥状态。 此操作将复原密钥的加密和解密操作。
如果您正在使用支持恢复对禁用的根密钥的访问权的集成云服务,那么在恢复对根密钥的关联数据的访问权之前,该服务最多可能需要 4 小时。
复原对关联数据的访问权后,相应的 enable event
显示在 IBM Cloud Activity Tracker Web UI 中。 enable event
指示密钥已复原 (现在已启用),并且密钥可用于加密和解密操作,例如打包,解包和重新打包。
ibmcloud kp key enable <KEY_ID_OR_ALIAS> -i <INSTANCE_ID> [ --key-ring KEY_RING_ID]
示例
这是 kp key enable
的示例。
# create a root key
$ ibmcloud kp key create my-root-key --output json
{
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}
# show key details - a state of "1" is "active"
$ ibmcloud kp key show 264fadc3-7667-4b25-916e-5825fe70de0b --output json
{
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-09T21:21:55Z",
"lastUpdateDate": "2020-06-09T21:21:55Z",
"keyVersion": {
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"creationDate": "2020-06-09T21:21:55Z"
},
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}
# disable the root key
$ ibmcloud kp key disable 264fadc3-7667-4b25-916e-5825fe70de0b
Disabling key: '264fadc3-7667-4b25-916e-5825fe70de0b', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
# show key details - a state of "2" is "suspended"
$ ibmcloud kp key show 264fadc3-7667-4b25-916e-5825fe70de0b --output json
{
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-09T21:21:55Z",
"lastUpdateDate": "2020-06-09T21:23:26Z",
"keyVersion": {
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"creationDate": "2020-06-09T21:21:55Z"
},
"extractable": false,
"state": 2,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}
# enable the key
$ ibmcloud kp key enable 264fadc3-7667-4b25-916e-5825fe70de0b
Enabling key: '264fadc3-7667-4b25-916e-5825fe70de0b', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
# show key details - a state of "1" is "active"
$ ibmcloud kp key show 264fadc3-7667-4b25-916e-5825fe70de0b --output json
{
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-09T21:21:55Z",
"lastUpdateDate": "2020-06-09T21:31:44Z",
"keyVersion": {
"id": "264fadc3-7667-4b25-916e-5825fe70de0b",
"creationDate": "2020-06-09T21:21:55Z"
},
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}
必需参数
-
KEY_ID_OR_ALIAS
要删除的密钥的 v4 UUID 或别名。 要检索可用钥匙列表, 请运行 kp keys命令。
-
-i, --instance-id
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
可选参数
-
--key-ring
钥匙扣上有一个独特、易读的名字。 如果用户没有对缺省密钥环的许可权,那么此属性是必需的。
kp 密钥策略
检索有关密钥策略的详细信息,例如,密钥的自动轮换时间间隔。
ibmcloud kp key policies KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
[--key-ring KEY_RING_ID]
[-d, --dual-auth]
[-o, --output OUTPUT]
[-r, --rotation]
示例
此示例列出了根密钥的策略。
关键策略为 dual authorization delete 和 旋转。
# create a root key
$ KEY_ID=$(ibmcloud kp key create my-root-key --output json | jq -r '.["id"]')
$ echo $KEY_ID
c024c2b3-2093-46e5-aabb-fdf8cbc14e44
# show key details
$ ibmcloud kp key show $KEY_ID --output json
{
"id": "c024c2b3-2093-46e5-aabb-fdf8cbc14e44",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-18T20:34:39Z",
"lastUpdateDate": "2020-06-18T20:34:39Z",
"keyVersion": {
"id": "c024c2b3-2093-46e5-aabb-fdf8cbc14e44",
"creationDate": "2020-06-18T20:34:39Z"
},
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:key:c024c2b3-2093-46e5-aabb-fdf8cbc14e44"
}
# update the policy and rotate the key every 2 months
$ ibmcloud kp key policy-update rotation $KEY_ID -m 2 --output json
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-18T20:35:41Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:policy:06a40fd6-6fd7-460a-87d7-8388fc1be057",
"lastUpdateDate": "2020-06-18T20:35:41Z",
"updatedBy": "user id ...<redacted>...",
"rotation": {
"interval_month": 2
}
}
# list the policies
$ ibmcloud kp key policies $KEY_ID --output json
[
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-18T20:35:41Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:policy:06a40fd6-6fd7-460a-87d7-8388fc1be057",
"lastUpdateDate": "2020-06-18T20:35:41Z",
"updatedBy": "user id ...<redacted>...",
"rotation": { "interval_month": 2
}
}
]
必需参数
-
KEY_ID_OR_ALIAS
要查询的密钥的 v4 UUID 或别名。 要检索可用钥匙列表, 请运行 kp keys命令。
-
-i, --instance-id
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
可选参数
-
-d, --dual-auth
显示具有
dual-auth-delete
策略的策略。 -
-o, --output
设置 CLI 输出格式。 缺省情况下,会以表格式打印所有命令。 要将输出格式更改为JSON,请使用
--output json
。 -
-r, --rotation
显示具有
rotation
策略的策略。 -
--key-ring
钥匙扣上有一个独特、易读的名字。 如果用户没有对缺省密钥环的许可权,那么此属性是必需的。
kp key policy-update dual-auth-delete
您可以使用 Key Protect 通过双重授权过程来安全地删除加密密钥。 当您删除一个密钥时, 会粉碎其内容和相关数据。 任何由密钥加密的数据都将变为不可访问。
删除具有 双重授权策略 需要来自两个用户的授权。 与 Key Protect,您可以 通过设置删除密钥来 进行首次授权。 然后,另一个用户通过 GUI 或 API 删除密钥,从而提供第二次授权。
ibmcloud kp key policy-update dual-auth-delete KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
-e, --enable
[--key-ring KEY_RING_ID]
[-o, --output OUTPUT]
示例
此示例启用双重授权删除策略。
# create a root key
$ KEY_ID=$(ibmcloud kp key create my-root-key --output json | jq -r '.["id"]')
$ echo $KEY_ID
d887bfe8-5166-4dad-af32-7e3055ca1873
# show key details
$ ibmcloud kp key show $KEY_ID --output json
{
"id": "d887bfe8-5166-4dad-af32-7e3055ca1873",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-19T16:07:50Z",
"lastUpdateDate": "2020-06-19T16:07:50Z",
"keyVersion": {
"id": "d887bfe8-5166-4dad-af32-7e3055ca1873",
"creationDate": "2020-06-19T16:07:50Z"
},
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:key:d887bfe8-5166-4dad-af32-7e3055ca1873"
}
# enable the dual authorization policy
$ ibmcloud kp key policy-update dual-auth-delete $KEY_ID --enable --output json
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-19T16:08:59Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:policy:0aab763d-b650-43a2-86ad-bdfe2c35c94c",
"lastUpdateDate": "2020-06-19T16:08:59Z",
"updatedBy": "user id ...<redacted>...",
"dualAuthDelete": {
"enabled": true
}
}
# list the policies
$ ibmcloud kp key policies $KEY_ID --output json
[
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-19T16:08:59Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:policy:0aab763d-b650-43a2-86ad-bdfe2c35c94c",
"lastUpdateDate": "2020-06-19T16:08:59Z",
"updatedBy": "user id ...<redacted>...",
"dualAuthDelete": { "enabled": true
}
}
]
# this should fail (the key has a dual authorization policy)
$ ibmcloud kp key delete $KEY_ID_OR_ALIAS
Deleting key: d887bfe8-5166-4dad-af32-7e3055ca1873, from instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
FAILED
kp.Error:
correlation_id='fe0db627-1726-4827-a9d2-c21d728e1c92',
msg='Conflict: 1 prior authorization(s) are required for deletion: Key could not be deleted.
Please see "reasons" for more details.',
reasons='[AUTHORIZATIONS_NOT_MET: Number of authorizations required to delete is not met -
FOR_MORE_INFO_REFER: https://cloud.ibm.com/apidocs/key-protect]'
必需参数
-
KEY_ID_OR_ALIAS
要查询的密钥的 v4 UUID 或别名。 要检索可用钥匙列表, 请运行 kp keys命令。
-
-e, --enable
一旦启用了双认证删除策略,就无法将其禁用。 不能 删除没有两个 (双重) 权限的密钥。 该过程必须在 7 天内完成,否则将自动取消双重授权策略,这意味着具有授权的任何人都可以删除密钥 (不需要两个授权)。
如果意外启用了双重授权策略并且要删除密钥,那么可以
disable
密钥 (使用kp key disable
命令) 并等待 7 天以使双重授权策略到期。 此时您可以删除密钥。只要 Key Protect 实例的活动密钥,您就 无法 将其删除。 具有双重授权策略的密钥是活动密钥。
可选参数
-
-o, --output
设置 CLI 输出格式。 缺省情况下,会以表格式打印所有命令。 要将输出格式更改为JSON,请使用
--output json
。 -
--key-ring
钥匙扣上有一个独特、易读的名字。 如果用户没有对缺省密钥环的许可权,那么此属性是必需的。
kp 密钥策略-更新轮换
为根密钥设置自动轮换策略时,将定期缩短密钥的生命周期,并限制受该密钥保护的信息量。 用户还可以对密钥启用或禁用密钥轮换策略。
您只能为在 Key Protect. 如果您最初导入的是根密钥, 则必须提供新的 base64-encoded密钥材料来旋转密钥。 有关更多信息,请参阅 根据需要轮换根密钥。
ibmcloud kp key policy-update rotation KEY_ID|KEY_ALIAS
[--enable | --disable] [-m MONTHLY_INTERVAL] [-o FORMAT]
[--key-ring KEY_RING_ID]
示例
可以在创建密钥时或创建密钥后应用轮换策略。 在第一个示例中,我们只需创建没有轮换策略的密钥:
# create a root key
ibmcloud kp key create rotateKeyEnableDisableDemo
Creating key: 'rotateKeyEnableDisableDemo', in instance: '5ecfe306-d4at-48c0-ab07-b5c5bc751534'...
OK
Key ID Key Name
4d5540bd-3235-4a46-a8af-974f7ed6558a rotateKeyEnableDisableDemo
---------------------------------------------------------------------------------------------------------------------------------------------------
# set a rotation policy of three months
ibmcloud kp key policy-update rotation 4d5540bd-3235-4a46-a8af-974f7ed6558a -m 3 -e --output json
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2022-12-02T00:50:11Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/e3e8fd14a61a49cda102faad15b06c09:5ecfe306-d4af-48c0-ab07-b5c5bc751534:policy:0ec7ad62-982d-45bb-895f-986d95015f5b",
"lastUpdateDate": "2022-12-02T00:51:38Z",
"updatedBy": "user id ...<redacted>...",
"rotation": {
"enabled": true,
"interval_month": 3
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------
# show the rotation policy for this key
ibmcloud kp key policies 4d5540bd-3235-4a46-a8af-974f7ed6558a -r --output json
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2022-12-02T00:50:11Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/e3e8fd14a61a49cda102faad15b06c09:5ecfe306-d4af-48c0-ab07-b5c5bc751534:policy:0ec7ad62-982d-45bb-895f-986d95015f5b",
"lastUpdateDate": "2022-12-02T00:51:38Z",
"updatedBy": "user id ...<redacted>...",
"rotation": {
"enabled": true,
"interval_month": 2
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------
# update the policy to three months
ibmcloud kp key policy-update rotation 4d5540bd-3235-4a46-a8af-974f7ed6558a -m 3 -e --output json
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2022-12-02T00:50:11Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/e3e8fd14a61a49cda102faad15b06c09:5ecfe306-d4af-48c0-ab07-b5c5bc751534:policy:0ec7ad62-982d-45bb-895f-986d95015f5b",
"lastUpdateDate": "2022-12-02T00:51:38Z",
"updatedBy": "user id ...<redacted>...",
"rotation": {
"enabled": true,
"interval_month": 3
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------
# disable the policy for this key
ibmcloud kp key policy-update rotation 4d5540bd-3235-4a46-a8af-974f7ed6558a -d --output json
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2022-12-02T00:50:11Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/e3e8fd14a61a49cda102faad15b06c09:5ecfe306-d4af-48c0-ab07-b5c5bc751534:policy:0ec7ad62-982d-45bb-895f-986d95015f5b",
"lastUpdateDate": "2022-12-02T00:52:52Z",
"updatedBy": "user id ...<redacted>...",
"rotation": {
"enabled": false,
"interval_month": 3
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------
# show that the policy has been disabled
ibmcloud kp key policies 4d5540bd-3235-4a46-a8af-974f7ed6558a -r --output json
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2022-12-02T00:50:11Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/e3e8fd14a61a49cda102faad15b06c09:5ecfe306-d4af-48c0-ab07-b5c5bc751534:policy:0ec7ad62-982d-45bb-895f-986d95015f5b",
"lastUpdateDate": "2022-12-02T00:52:52Z",
"updatedBy": "user id ...<redacted>...",
"rotation": {
"enabled": false,
"interval_month": 3
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------
必需参数
-
KEY_ID_OR_ALIAS
要查询的密钥的 v4 UUID 或别名。 要检索可用钥匙列表, 请运行 kp keys命令。
可选参数
-
-m, --monthly-interval
设置密钥轮换时间间隔 (以月为单位)。 轮换时间间隔必须为 1 到 12 个月。
-
-e, --enable
或-d, --disable
缺省情况下,将启用密钥轮换策略。 如果用户要禁用或启用策略,可分别使用 -d(--disable) 或 -e(--enable)。
-
-o, --output
设置 CLI 输出格式。 缺省情况下,会以表格式打印所有命令。 要将输出格式更改为JSON,请使用
--output json
。 -
--key-ring
钥匙扣上有一个独特、易读的名字。 如果用户没有对缺省密钥环的许可权,那么此属性是必需的。
kp 密钥复原
Key Protect 可以复原先前删除的根密钥,这将恢复对其在云中的关联数据的访问权。
作为管理员,您可能需要复原已导入到的根密钥 Key Protect 以访问先前受保护的密钥的数据。
复原密钥时,将密钥从 已销毁 (值为 5) 移至 活动 (值为 1) 密钥状态,并复原对先前使用该密钥加密的任何数据的访问权。
您可以在删除后 30 天内复原已删除的密钥。 此功能仅可用于使用 key material
创建的根密钥。
只能复原使用 key material
创建的根密钥,使用 带有 -k, --key-material
选项的 kp key create
。 如果 未 指定 --key-material
选项,那么 无法 复原根密钥。
如果要复原已删除的根密钥,那么 必须 保存 用于创建根密钥的 key material
。 如果未提供原始 key material
,那么 无法 复原已删除的密钥。
ibmcloud kp key restore KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
-k, --key-material KEY_MATERIAL
[--key-ring KEY_RING_ID]
[-n, --encrypted-nonce ENCRYPTED_NONCE]
[-v, --iv IV]
示例
以下是 kp key restore
的示例。
示例 1
此示例使用密钥材料创建根密钥,删除密钥,然后复原密钥。
# create a random, base64-encoded, 32-byte key material
$ KEY_MATERIAL=$(openssl rand -base64 32)
$ echo $KEY_MATERIAL
4EZBMBMkZ87z4nvYsQH21DC5+wslgWhHRiU8bmqJ4CY=
# create a root key from a base64-encoded value
$ KEY_ID=$(ibmcloud kp key create my-base64-root-key -k $KEY_MATERIAL --output json | jq -r '.["id"]')
$ echo $KEY_ID
62ad0cd5-70a4-4c4d-9d87-5f4db620b120
# delete the root key
$ ibmcloud kp key delete $KEY_ID
Deleting key: 62ad0cd5-70a4-4c4d-9d87-5f4db620b120, from instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
OK
Deleted Key
62ad0cd5-70a4-4c4d-9d87-5f4db620b120
# list keys - verify the key was deleted
$ ibmcloud kp keys
Retrieving keys...
OK
Key ID Key Name
# restore the deleted key
$ ibmcloud kp key restore $KEY_ID -k $KEY_MATERIAL --output json
{
"id": "62ad0cd5-70a4-4c4d-9d87-5f4db620b120",
"name": "my-base64-root-key",
"type": "application/vnd.ibm.kms.key+json",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:key:62ad0cd5-70a4-4c4d-9d87-5f4db620b120"
}
# list keys - verify the key was restored
$ ibmcloud kp keys
Retrieving keys...
OK
Key ID Key Name
62ad0cd5-70a4-4c4d-9d87-5f4db620b120 my-base64-root-key
示例 2
此工作流程使用导入令牌创建根密钥,删除该密钥,然后复原该密钥。
这是一个两步过程。
-
使用导入令牌创建根密钥,然后删除该密钥
-
创建复原密钥所需的导入令牌,然后复原密钥
使用导入令牌创建根密钥具有时间限制 (
-e, --expiration
选项)。 复原密钥时,需要导入令牌。 这就是您需要执行导入令牌过程以复原密钥的原因。
步骤 1-使用导入令牌创建根密钥,然后删除该密钥
# create an import token that expires in 5 minutes and allows 10 retrievals
$ ibmcloud kp import-token create -e 300 -m 10
Created Expires Max Retrievals Remaining Retrievals
2020-06-18 12:21:59 +0000 UTC 2020-06-18 12:26:59 +0000 UTC 10 10
# create a random, base64-encoded, 32-byte key material
$ KEY_MATERIAL=$(openssl rand -base64 32)
$ echo $KEY_MATERIAL
sADDNDE3pcJlbYXu2z5QFORvsxV1PosRiAPERrhYJdk=
# extract the nonce that was created by the "kp import-token create" command
$ NONCE=$(ibmcloud kp import-token show | jq -r '.["nonce"]')
$ echo $NONCE
/QhqOsqlVPC+ZPWz
# extract the public key that was created by the "kp import-token create" command
$ PUBLIC_KEY=$(ibmcloud kp import-token show | jq -r '.["payload"]')
$ echo $PUBLIC_KEY
LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0t ...<redacted>... QyBLRVktLS0tLQo=
# encrypt the key material using the public key
$ ibmcloud kp import-token key-encrypt -k $KEY_MATERIAL -p $PUBLIC_KEY
Encrypted Key
C+/puHn1v5p7aohitM4r6N4ohiVkCecP ...<redacted>... eWmJRuvsSxDg/OY=
# capture the encrypted key material
$ ENCRYPTED_KEY=C+/puHn1v5p7aohitM4r6N4ohiVkCecP ...<redacted>... eWmJRuvsSxDg/OY=
# encrypt the nonce
$ ibmcloud kp import-token nonce-encrypt -k $KEY_MATERIAL -n $NONCE
Encrypted Nonce IV
TxrgdayWnM5OB3JoYuQR97oulxvREptk8TzciQ== 7BiIpcbGxXBzuXZP
# capture the encrypted nonce and the initialization vector (IV)
$ ENCRYPTED_NONCE=TxrgdayWnM5OB3JoYuQR97oulxvREptk8TzciQ==
$ IV=7BiIpcbGxXBzuXZP
# create a root key using an import token, provide an encrypted key, nonce, and initialization vector (IV)
$ KEY_ID=$(ibmcloud kp key create my-imported-root-key -k $ENCRYPTED_KEY -n $ENCRYPTED_NONCE -v $IV --output json | jq -r '.["id"]')
$ echo $KEY_ID
c42c6f2c-8b67-4016-b2c3-99fba9490f5d
# list keys - verify the key was created
$ ibmcloud kp keys
Retrieving keys...
OK
Key ID Key Name
c42c6f2c-8b67-4016-b2c3-99fba9490f5d my-imported-root-key
# delete the root key
$ ibmcloud kp key delete $KEY_ID
Deleting key: c42c6f2c-8b67-4016-b2c3-99fba9490f5d, from instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
OK
Deleted Key
c42c6f2c-8b67-4016-b2c3-99fba9490f5d
# list keys - verify the key was deleted
$ ibmcloud kp keys
Retrieving keys...
OK
Key ID Key Name
步骤 2-创建复原密钥和复原密钥所需的导入令牌
# NOTE: "kp key restore" requires an import token to complete the process,
# if you follow this example, the previously created import token may still
# exist and the example works; otherwise, if the import token has expired then
# you need to create a new import token prior to restoring the key
# create an import token that expires in 5 minutes and allows 10 retrievals
$ ibmcloud kp import-token create -e 300 -m 10
Created Expires Max Retrievals Remaining Retrievals
2020-06-18 12:30:54 +0000 UTC 2020-06-18 12:35:54 +0000 UTC 10 10
# extract the nonce that was created by the "kp import-token create" command
$ NONCE=$(ibmcloud kp import-token show | jq -r '.["nonce"]')
$ echo $NONCE
N3x8F0ihAZ51nj6M
# extract the public key that was created by the "kp import-token create" command
$ PUBLIC_KEY=$(ibmcloud kp import-token show | jq -r '.["payload"]')
$ echo $PUBLIC_KEY
LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0t ...<redacted>... QyBLRVktLS0tLQo=
# encrypt the key material using the public key
$ ibmcloud kp import-token key-encrypt -k $KEY_MATERIAL -p $PUBLIC_KEY
Encrypted Key
Ch7hcsT1EOfSdghjOHKAemBZuzDoqJoH ...<redacted>... F4p/mkGT/EQJS5o=
# capture the encrypted key material
$ ENCRYPTED_KEY=Ch7hcsT1EOfSdghjOHKAemBZuzDoqJoH ...<redacted>... F4p/mkGT/EQJS5o=
# encrypt the nonce
$ ibmcloud kp import-token nonce-encrypt -k $KEY_MATERIAL -n $NONCE
Encrypted Nonce IV
nrrCczvYXvc6T7J2G+EOLjHZO1cpPyu/nhsIlA== N6oLJnUqaKF3v5Sd
# capture the encrypted nonce and the initialization vector (IV)
$ ENCRYPTED_NONCE=nrrCczvYXvc6T7J2G+EOLjHZO1cpPyu/nhsIlA==
$ IV=N6oLJnUqaKF3v5Sd
# restore the deleted key
$ ibmcloud kp key restore $KEY_ID -k $ENCRYPTED_KEY -n $ENCRYPTED_NONCE -v $IV --output json
{
"id": "c42c6f2c-8b67-4016-b2c3-99fba9490f5d",
"name": "my-imported-root-key",
"type": "application/vnd.ibm.kms.key+json",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:key:c42c6f2c-8b67-4016-b2c3-99fba9490f5d"
}
# list keys - verify the key was restored
$ ibmcloud kp keys
Retrieving keys...
OK
Key ID Key Name
c42c6f2c-8b67-4016-b2c3-99fba9490f5d my-imported-root-key
必需参数
-
KEY_ID_OR_ALIAS
要复原的密钥的 v4 UUID 或别名。
-
-i, --instance-ID
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
可选参数
-
-k, --key-material
Deprecated
来自先前导入的 base64-encoded 密钥的密钥资料。如果使用
import token
创建了根密钥,那么-k, --key-material
选项的值为 加密的材料密钥。 请参阅示例 2,它使用导入令牌来创建根密钥,并使用导入令牌来复原根密钥。 -
-n, --encrypted-nonce
Deprecated
通过提供加密现时标志来验证导入密钥的请求。有关更多信息,请参阅 kp import-token nonce-encrypt。
-
-o, --output
设置 CLI 输出格式。 缺省情况下,会以表格式打印所有命令。 要将输出格式更改为JSON,请使用
--output json
。 -
-v, --iv
Deprecated
提供加密现时标志后生成的初始化向量 (IV)。有关更多信息,请参阅 kp import-token nonce-encrypt。
-
--key-ring
钥匙扣上有一个独特、易读的名字。 如果用户没有对缺省密钥环的许可权,那么此属性是必需的。
kp 密钥环
列出与 kp 实例关联的密钥环。
示例
此示例显示了如何使用 CLI 插件来列出适合于给定实例的密钥环。
ibmcloud kp key-rings -i <INSTANCE_ID>
必需参数
-
-i, --instance-ID
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
kp 密钥环创建
在 kp 实例中创建密钥环。
示例
此示例显示了如何使用 CLI 插件在给定实例中创建密钥环。
ibmcloud kp key-ring create KEY_RING_ID -i <INSTANCE_ID>
必需参数
-
KEY_RING_ID
对于密钥环,长度大于或等于 2 个字符且小于或等于 100 的字母数字引用。
-
-i, --instance-ID
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
kp 密钥环删除
删除 kp 实例中的密钥环。
示例
此示例显示了如何使用 CLI 插件来删除给定实例中的密钥环。 请注意,已添加强制 (-f
)。
ibmcloud kp key-ring delete KEY_RING_ID -i <INSTANCE_ID> -f
必需参数
-
KEY_RING_ID
对于密钥环,长度大于或等于 2 个字符且小于或等于 100 的字母数字引用。
-
-i, --instance-ID
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
可选参数
-
-f, --force
强制删除仍具有处于 已销毁 状态的密钥的密钥环。 不删除具有处于任何其他状态的密钥的密钥环。 如果密钥环包含处于 已销毁 状态的密钥,并且未添加此标志,那么密钥环删除将失败。
kp 密钥轮换
旋转根键, 该根键存储在您的 Key Protect 服务中。
当您旋转根密钥时,会将该密钥替换为新的密钥材料。
如果 Key Protect 创建了密钥 (密钥为
未 使用 -k
参数创建),那么 Key Protect 创建新密钥。 不能将 kp key rotate
与 -k
一起指定 参数。
如果您创建了密钥并提供了密钥资料 (kp key create key-name -k $KEY_MATERIAL
),那么在轮换密钥时必须提供新的密钥资料 (kp key rotate $KEY_ID_OR_ALIAS -k $NEW_KEY_MATERIAL
)
您无法轮换 standard
密钥,即,使用
kp create key-name --standard-key
命令。
ibmcloud kp key rotate KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
[--key-ring KEY_RING_ID]
[-k, --key-material KEY_MATERIAL]
示例
以下是 kp key rotate
的示例。
示例 1
旋转根密钥。
# create a root key
$ ibmcloud kp key create my-root-key
Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
1a6d5be8-287c-4eb3-9c44-cf0c2b0d67ad my-root-key
# rotate the key
$ ibmcloud kp key rotate 1a6d5be8-287c-4eb3-9c44-cf0c2b0d67ad
Rotating root key...
OK
# show key details
$ ibmcloud kp key show 1a6d5be8-287c-4eb3-9c44-cf0c2b0d67ad
Grabbing info for key id: 1a6d5be8-287c-4eb3-9c44-cf0c2b0d67ad...
OK
Key ID Key Name Description Creation Date Expiration Date
1a6d5be8-287c-4eb3-9c44-cf0c2b0d67ad my-root-key 2020-05-06 17:25:22 +0000 UTC Key does not expire
# create a new key material
$ NEW_KEY_MATERIAL=$(openssl rand -base64 32)
# Key Protect created the root key, providing a new key material will fail
$ ibmcloud kp key rotate 1a6d5be8-287c-4eb3-9c44-cf0c2b0d67ad -k $NEW_KEY_MATERIAL
Rotating root key...
FAILED
示例 2
轮换 base64-encoded 或导入的令牌密钥。
# create a random, base64-encoded, 32-byte key material
$ KEY_MATERIAL=$(openssl rand -base64 32)
# create a root key from a base64-encoded value
$ ibmcloud kp key create my-base64-root-key -k $KEY_MATERIAL
Creating key: 'my-base64-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
e55f86ab-6984-4594-ad23-3024f6440a58 my-base64-root-key
# create a new key material
$ NEW_KEY_MATERIAL=$(openssl rand -base64 32)
# rotate the key
$ ibmcloud kp key rotate e55f86ab-6984-4594-ad23-3024f6440a58 -k $NEW_KEY_MATERIAL
Rotating root key...
OK
# the key was created from a key material, NOT providing a new key material will fail
$ ibmcloud kp key rotate e55f86ab-6984-4594-ad23-3024f6440a58
Rotating root key...
FAILED
示例 3
这个例子展示了如何……
-
创建根密钥
-
创建数据加密密钥 (DEK),这是
plaintext
-
使用根密钥合并 DEK,这将创建
ciphertext
-
旋转根密钥
-
解包密文以揭示原始 DEK (明文) 和新密文 (新密文是用新旋转的根密钥包装的明文)
-
解包新密文以揭示原始 DEK (明文)
# create a root key
$ KEY_ID=$(ibmcloud kp key create my-root-key --output json | jq -r '.["id"]')
$ echo $KEY_ID
5b976173-7804-4f82-acfa-bb98098bc528
# create a random, base64-encoded, 32-byte data encryption key (DEK)
$ PLAINTEXT=$(openssl rand -base64 32)
$ echo $PLAINTEXT
UPJ4YDwbQMjQG/aqlHsPhHV1CBkpIXngLHFS5+i4UZ4=
# wrap the plaintext key with the root key, creating a DEK (this is the ciphertext)
$ CIPHERTEXT=$(ibmcloud kp key wrap $KEY_ID -p $PLAINTEXT --output json | jq -r '.["Ciphertext"]')
$ echo $CIPHERTEXT
eyJjaXBoZXJ0ZXh0IjoiQkFrTlJrS2Q0 ...<redacted>... ODA5OGJjNTI4In0=
# rotate the root key
$ ibmcloud kp key rotate $KEY_ID
Rotating root key...
OK
# show key details
$ ibmcloud kp key show $KEY_ID --output json
{
"id": "5b976173-7804-4f82-acfa-bb98098bc528",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-10T18:09:27Z",
"lastUpdateDate": "2020-06-10T18:13:31Z",
"lastRotateDate": "2020-06-10T18:13:31Z",
"keyVersion": {
"id": "4330715a-918b-4718-b5ca-9475a214067e",
"creationDate": "2020-06-10T18:13:31Z"
},
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:5b976173-7804-4f82-acfa-bb98098bc528"
}
# unwrap the ciphertext, reveal the original DEK (plaintext),
# and see the new ciphertext (the plaintext wrapped with the rotated root key)
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT --output json
{
"Plaintext": "UPJ4YDwbQMjQG/aqlHsPhHV1CBkpIXngLHFS5+i4UZ4=",
"Rewrapped Plaintext": "eyJjaXBoZXJ0ZXh0IjoiS0FITEFRWjdh ...<redacted>... NWEyMTQwNjdlIn0="
}
# capture the new (rewrapped) plaintext
$ NEWCIPHERTEXT=eyJjaXBoZXJ0ZXh0IjoiS0FITEFRWjdh ...<redacted>... NWEyMTQwNjdlIn0=
# unwrap the ciphertext and reveal the original DEK (plaintext)
$ ibmcloud kp key unwrap $KEY_ID $NEWCIPHERTEXT --output json
{
"Plaintext": "UPJ4YDwbQMjQG/aqlHsPhHV1CBkpIXngLHFS5+i4UZ4=",
"Rewrapped Plaintext": ""
}
必需参数
-
KEY_ID_OR_ALIAS
要轮换的根密钥的 v4 UUID 或别名。
-
-i, --instance-id
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
可选参数
-
-k, --key-material
要轮换最初在没有
--key-material
参数 (即kp key create my-key
) 的情况下生成的密钥,请省略--key-material
参数。如果使用
--key-material
参数创建了密钥,请指定用于旋转现有根密钥的新 base64-encoded 密钥资料。要旋转最初导入服务的密钥,请提供一个新的32字节(256位)密钥。
-
--key-ring
钥匙扣上有一个独特、易读的名字。 如果用户没有对缺省密钥环的许可权,那么此属性是必需的。
kp 键调度-删除
具有 dual-auth-delete
策略的密钥需要来自两个管理用户的授权才能删除该密钥。
遵循此过程以删除具有 dual-auth-delete
策略的密钥。
-
创建密钥并启用
dual-auth-delete
策略 -
用户 1 调度 (授权) 密钥删除
kp key schedule-delete
命令 -
用户 2 调度 (授权) 密钥删除
-
在执行第二个
schedule-delete
后删除密钥,在用户界面,API 和 CLI 中支持该密钥 -
如果在 7 天内未进行第二次授权,那么密钥将返回到其缺省状态
有两种方法可以启用 dual-auth-delete
策略:
- 使用
kp key policy-update dual-auth-delete
设置单个密钥的策略 - 使用以下命令设置实例的策略:
kp instance policy-update dual-auth-delete
; 启用实例策略后创建的所有密钥将继承实例策略设置
The kp key cancel-delete 命令取消或除去先前的授权。
ibmcloud kp key schedule-delete KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
[--key-ring KEY_RING_ID]
示例
这是调度要删除的密钥的示例。
# schedule this key to be deleted
$ ibmcloud kp key schedule-delete $KEY_ID_OR_ALIAS
Scheduling key for deletion...
OK
# this key has a dual-auth-delete policy
$ ibmcloud kp key policies $KEY_ID_OR_ALIAS --output json
[
{
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-06-22T19:13:00Z",
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:policy:2427dbde-6cff-41eb-8b5a-ff26b038cafc",
"lastUpdateDate": "2020-06-22T21:36:16Z",
"updatedBy": "user id ...<redacted>...",
"dualAuthDelete": { "enabled": true
}
}
]
必需参数
-
KEY_ID_OR_ALIAS
要删除的密钥的 v4 UUID 或别名。 要检索可用钥匙列表, 请运行 kp keys命令。
可选参数
-
--key-ring
钥匙扣上有一个独特、易读的名字。 如果用户没有对缺省密钥环的许可权,那么此属性是必需的。
kp 键显示
检索有关密钥的详细信息,例如,密钥元数据和密钥资料。
如果将密钥指定为根密钥,那么系统无法返回该密钥的密钥资料。
ibmcloud kp key show KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
[--key-ring KEY_RING_ID]
[-o, --output OUTPUT]
示例
以下是 kp key show
的示例。
示例 1
创建根密钥并显示详细信息。
# create a root key
$ ibmcloud kp key create my-root-key
Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
8635b804-9966-4918-a16b-d561fdbf181f my-root-key
# show key details
$ ibmcloud kp key show 8635b804-9966-4918-a16b-d561fdbf181f
Grabbing info for key id: 8635b804-9966-4918-a16b-d561fdbf181f...
OK
Key ID Key Name Description Creation Date Expiration Date
8635b804-9966-4918-a16b-d561fdbf181f my-root-key 2020-05-05 19:58:02 +0000 UTC Key does not expire
示例 2
这是对 kp key show
中的 JSON 键和值的说明 命令。 在此示例中,已轮换密钥以确保显示所有 JSON 键/值对。
$ ibmcloud kp key show 8635b804-9966-4918-a16b-d561fdbf181f --output json
{
"id": "8635b804-9966-4918-a16b-d561fdbf181f",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-05-05T19:58:02Z",
"lastUpdateDate": "2020-05-05T19:58:24Z",
"lastRotateDate": "2020-05-05T19:58:24Z",
"keyVersion": {
"id": "85b65b20-4165-4da3-8ba9-880e72390461",
"creationDate": "2020-05-05T19:58:24Z"
},
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:8635b804-9966-4918-a16b-d561fdbf181f"
}
键 | 描述 |
---|---|
标识 | 这是 KEY_ID,它是唯一的,在 CLI 指定 KEY_ID 时使用 |
名称 | 创建密钥时提供的名称 |
类型 | 由 API 用于在 REST 调用中设置内容类型 |
algorithmType | 算法类型为高级加密标准 (AES) 或密码分组链接 (CBC) |
createdBy | 创建密钥的用户ID |
creationDate | 钥匙的创建日期和时间 |
lastUpdateDate | 最近一次更新密钥的日期和时间 |
lastRotateDate | 上次轮换密钥的日期和时间; 仅当已轮换密钥时,此条目才存在 |
keyVersion /标识 | 这将标识根密钥的最新版本 |
keyVersion / creationDate | 最近一次更新密钥资料的日期和时间 |
可抽取 | 一个布尔值,用于确定关键材料是否可以退役。 如果设置为 false,那么 Key Protect 会将密钥指定为用于打包和解包操作的不可抽取的根密钥。 如果设置为 true,那么 Key Protect 会将密钥指定为可以存储在应用程序和服务中的标准密钥。 设置为 false 后,无法将其更改为 true。 |
状态 | 1-密钥处于活动状态; 2-密钥处于暂挂状态; 请参阅 密钥状态 |
CRN | 云资源名称(CRN) |
必需参数
-
KEY_ID_OR_ALIAS
要显示的根密钥的 v4 UUID 或别名。
-
-i, --instance-id
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
可选参数
-
-o, --output
设置 CLI 输出格式。 缺省情况下,会以表格式打印所有命令。 要将输出格式更改为JSON,请使用
--output json
。 -
--key-ring
钥匙扣上有一个独特、易读的名字。 如果用户没有对缺省密钥环的许可权,那么此属性是必需的。
kp 密钥同步
此子命令使键的关联资源同步。
ibmcloud kp key sync KEY_ID
-i, --instance-id INSTANCE_ID
[--key-ring KEY_RING_ID]
[-o, --output FORMAT]
示例
这是 kp key sync
的示例。
示例
同步密钥并显示结果。
# synchronize the associated resources for a given key
$ ibmcloud kp key sync 94c06f9c-a07a-4961-8548-553cf7431f18
Synchronizing key...
OK
Key's associated resources are synchronized successfully
必需参数
-
KEY_ID
您要同步的密钥的ID。
-
-i, --instance-id
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
可选参数
-
-o, --output
设置 CLI 输出格式。 缺省情况下,会以表格式打印所有命令。 要将输出格式更改为JSON,请使用
--output json
。 -
--key-ring
钥匙扣上有一个独特、易读的名字。 如果用户没有对缺省密钥环的许可权,那么此属性是必需的。
kp 密钥更新
使用现有密钥环或新密钥环 更新密钥 Key Protect 实例。
ibmcloud kp key update KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
-r, --new-key-ring KEY_RING_ID
[-o, --output OUTPUT]
必需参数
-
KEY_ID_OR_ALIAS
要显示的根密钥的 v4 UUID 或别名。
-
-i, --instance-id
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。 -
-r, --new-key-ring
钥匙扣上有一个独特、易读的名字。 如果用户没有对缺省密钥环的许可权,那么此属性是必需的。
可选参数
-
-o, --output
设置 CLI 输出格式。 缺省情况下,会以表格式打印所有命令。 要将输出格式更改为JSON,请使用
--output json
。
示例
请注意,必须在创建密钥的过程中创建密钥环,或者创建密钥环本身。
这是 kp key update
的示例。
ic kp key update 5f2cc155-fe16-492c-845c-4d1f0688c7ba -r TestRing
执行该命令具有典型结果:
Updating key...
OK
Key ID Key Name Key Ring ID
5f2cc155-fe16-492c-845c-4d1f0688c7ba TestKey TestRing
kp 键解包
使用 存储在您的 Key Protect 实例。
ibmcloud kp key unwrap KEY_ID_OR_ALIAS CIPHERTEXT_FROM_WRAP
-i, --instance-id INSTANCE_ID
[-a, --aad ADDITIONAL_DATA]
[--key-ring KEY_RING_ID]
[-o, --output OUTPUT]
示例
以下是 kp key unwrap
的示例。
示例 1
解包密文以显示明文数据加密密钥 (DEK)。
# create a root key
$ ibmcloud kp key create my-root-key
Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
807eb0a6-cc10-4bfe-8331-41a6f712c4ea my-root-key
# create a data encryption key (DEK), wrapped with the root key
$ ibmcloud kp key wrap 807eb0a6-cc10-4bfe-8331-41a6f712c4ea
Wrapping key...
OK
Ciphertext
eyJjaXBoZXJ0ZXh0IjoiKzhjbHVqcUNP ...<redacted>... NmY3MTJjNGViIn0=
# capture the ciphertext
$ CIPHERTEXT=eyJjaXBoZXJ0ZXh0IjoiKzhjbHVqcUNP ...<redacted>... NmY3MTJjNGViIn0=
# unwrap the ciphertext to reveal the plaintext data encryption key (DEK)
$ ibmcloud kp key unwrap 807eb0a6-cc10-4bfe-8331-41a6f712c4ea $CIPHERTEXT
Unwrapping key...
OK
Plaintext Rewrapped Plaintext
mXW4GmBhkRG1+Dzkx1D6dMX99a4KyYwtwbghaaLEQZ0=
示例 2
解包密文并提供 AAD 信息。
提供额外认证数据 (AAD) 的一个用例是“密码保护”密文,使其更难解包。
需要使用密文和 AAD 来解包密文并显示明文数据加密密钥 (DEK)。
# create a root key
$ KEY_ID=$(ibmcloud kp key create my-root-key --output json | jq -r '.["id"]')
$ echo $KEY_ID
5f2cc155-fe16-492c-845c-4d1f0688c7ba
# create a random, base64-encoded, 32-byte data encryption key (DEK)
$ PLAINTEXT=$(openssl rand -base64 32)
$ echo $PLAINTEXT
H4ZfQe66aKcxirfCdNZ/3Na0JECP6HsAM3yclKmIfPQ=
# set the additional authentication data (AAD)
$ AAD1=My-Secret-Password
$ AAD2=My-Verification-Phrase
# wrap the plaintext with the root key and AAD
$ CIPHERTEXT=$(ibmcloud kp key wrap $KEY_ID -a "$AAD1,$AAD2" -p $PLAINTEXT --output json | jq -r '.["Ciphertext"]')
$ echo $CIPHERTEXT
eyJjaXBoZXJ0ZXh0IjoiL1pQUzRLbUxQ ...<redacted>... ZjA2ODhjN2JiIn0=
# unwrap the ciphertext and reveal the original plaintext DEK
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT -a $AAD1,$AAD2
Unwrapping key...
OK
Plaintext Rewrapped Plaintext
H4ZfQe66aKcxirfCdNZ/3Na0JECP6HsAM3yclKmIfPQ=
# this should fail (missing some of the AAD)
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT -a $AAD1
Unwrapping key...
FAILED
# this should fail (AAD is in a different order)
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT -a $AAD2,$AAD1
Unwrapping key...
FAILED
必需参数
-
KEY_ID_OR_ALIAS
v4 或根密钥的别名,用于初始包装请求。
-
CIPHERTEXT_FROM_WRAP
在初始打包操作期间返回的已加密数据密钥。
-
-i, --instance-ID
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
可选参数
-
-a, --aad
用于进一步保护密钥的附加认证数据 (AAD)。 最多可以提供 255 个字符串,以逗号分隔。 如果您在包装上提供了AAD,则必须在拆包时以相同的顺序指定相同的AAD。
Key Protect不会保存额外的身份验证数据。 如果提供 AAD,请将数据保存到安全位置,以确保您可以在随后的解包请求期间访问并提供同一 AAD。
-o, --output
Set the CLI output format. By default, all commands print in table format. To change the output format to JSON, use `--output json`.
-
--key-ring
钥匙扣上有一个独特、易读的名字。 如果用户没有对缺省密钥环的许可权,那么此属性是必需的。
kp 密钥版本
轮换根密钥时,Key Protect 将创建新版本的密钥。 列出可用于 Key Protect 实例中的 KeyID 或密钥别名的所有密钥版本。
ibmcloud kp key versions KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
[-r, --key-ring KEY_RING_ID]
[-n, --number-of-key-versions VERSION_LIMIT]
[-o, --output OUTPUT]
[-s, --starting-offset OFFSET]
[-t, --total-count TOTAL_COUNT]
[-a, --all-key-states ALL_KEY_STATES]
示例
以下是 kp key versions
的示例。
示例 1
一个用例是通过查看根密钥的密钥版本历史记录,将根密钥的轮换历史记录作为安全管理员进行审计。
# create a root key
$ ibmcloud kp key create my-root-key
Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
807eb0a6-cc10-4bfe-8331-41a6f712c4ea my-root-key
# rotate the root key
$ ibmcloud kp key rotate 807eb0a6-cc10-4bfe-8331-41a6f712c4ea
Rotating root key...
OK
# Inspect the versions
$ ibmcloud kp key versions 807eb0a6-cc10-4bfe-8331-41a6f712c4ea
Retrieving key Versions...
OK
Key Version ID Creation Date
21562e93-8882-420e-90a7-912c70023373 2022-07-08T17:02:10Z
390086ac-76fa-4094-8cf3-c0829bd69526 2022-07-08T17:02:40Z
示例 2
用于将根密钥审计为安全管理员并查看历史记录的相同用例,以及其在 JSON 输出中的总计数。
# create a root key
$ ibmcloud kp key create my-root-key
Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
807eb0a6-cc10-4bfe-8331-41a6f712c4ea my-root-key
# rotate the root key
$ ibmcloud kp key rotate 807eb0a6-cc10-4bfe-8331-41a6f712c4ea
Rotating root key...
OK
# Inspect the versions
$ ibmcloud kp key versions 807eb0a6-cc10-4bfe-8331-41a6f712c4ea -t -o json
{
"metadata": {
"collectionType": "application/vnd.ibm.kms.key.version+json",
"collectionTotal": 2,
"totalCount": 2
},
"resources": [
{
"id": "21562e93-8882-420e-90a7-912c70023373",
"creationDate": "2022-07-08T17:02:10Z"
},
{
"id": "390086ac-76fa-4094-8cf3-c0829bd69526",
"creationDate": "2022-07-08T17:02:40Z"
}
]
}
示例 3
另一个用例列出了过去一年按月轮换的密钥集的前 12 个密钥版本。
# create a root key
$ ibmcloud kp key create my-root-key
Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
807eb0a6-cc10-4bfe-8331-41a6f712c4ea my-root-key
# rotate the root key
$ ibmcloud kp key rotate 807eb0a6-cc10-4bfe-8331-41a6f712c4ea
Rotating root key...
OK
# Inspect the versions
$ ibmcloud kp key versions 807eb0a6-cc10-4bfe-8331-41a6f712c4ea -n 12 -o json
{
"metadata": {
"collectionType": "application/vnd.ibm.kms.key.version+json",
"collectionTotal": 12
},
"resources": [
{
"id": "21562e93-8882-420e-90a7-912c70023373",
"creationDate": "2021-07-08T17:02:10Z"
},
{
"id": "390086ac-76fa-4094-8cf3-c0829bd69526",
"creationDate": "2021-08-08T17:02:40Z"
},[...10x]
]
}
示例 4
另一个用例列出了过去两年按月轮换的密钥集的第二个 12 个密钥版本。
ibmcloud kp 密钥版本 $KEY_ID_OR_ALIAS -n 12 -s 12
# create a root key
$ ibmcloud kp key create my-root-key
Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
807eb0a6-cc10-4bfe-8331-41a6f712c4ea my-root-key
# rotate the root key
$ ibmcloud kp key rotate 807eb0a6-cc10-4bfe-8331-41a6f712c4ea
Rotating root key...
OK
# Inspect the versions
$ ibmcloud kp key versions 807eb0a6-cc10-4bfe-8331-41a6f712c4ea -n 12 -s 12 -o json
{
"metadata": {
"collectionType": "application/vnd.ibm.kms.key.version+json",
"collectionTotal": 12
},
"resources": [
{
"id": "21562e93-8882-420e-90a7-912c70023373",
"creationDate": "2021-07-08T17:02:10Z"
},
{
"id": "390086ac-76fa-4094-8cf3-c0829bd69526",
"creationDate": "2021-08-08T17:02:40Z"
},[...10x]
]
}
示例 5
用于返回当前未处于活动状态的密钥版本数的可选标志。 先前,该命令将失败,如以下示例中所示:
# Attempt to show version count
$ ibmcloud kp key versions af61298c-d75d-42a8-aa76-e04178cf4685 -i 99980ccc-d482-4cd0-bb41-deb4f7f1eb92 -t
Retrieving key Versions...
FAILED
KEY_ACTION_INVALID_STATE_ERR
Key is not in a valid state
Correlation-ID:a494bf49-be82-426f-88d8-17b58cc8634d
对于 CLI V 0.8.0 和更高版本,此命令在添加 -a
标志时成功,如以下示例中所示:
# Attempt to show version count
$ ibmcloud kp key versions af61298c-d75d-42a8-aa76-e04178cf4685 -i 99980ccc-d482-4cd0-bb41-deb4f7f1eb92 -t -a
Retrieving key Versions...
OK
TotalCount: 2
Key Version ID Creation Date
14dfde20-a751-4c3e-b6b0-e8d00a17d8d1 2023-06-22T15:16:09Z
af61298c-d75d-42a8-aa76-e04178cf4685 2023-06-22T15:10:28Z
请注意,如果未提供 -a
标志,那么仍会针对处于非活动状态的密钥返回 KEY_ACTION_INVALID_STATE_ERR
。
必需参数
-
KEY_ID_OR_ALIAS
v4 或根密钥的别名,用于初始包装请求。
-
-i, --instance-ID
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
可选参数
-
--key-ring
钥匙扣上有一个独特、易读的名字。 如果用户没有对缺省密钥环的许可权,那么此属性是必需的。
-
-n --number-of-key-versions
限制要由提供的整数值检索的密钥版本数 (缺省值: 200)。
-
-o, --output
设置 CLI 输出格式。 缺省情况下,会以表格式打印所有命令。 要将输出格式更改为JSON,请使用
--output json
。 -
-s --starting-offset
从提供的整数值指定的偏移量中检索密钥版本。
-
-t --total-count
用于按提供的整数值重新统计密钥的密钥版本总数。
-
-a --all-key-states
用于返回所有密钥状态 (包括未处于活动状态的密钥) 的版本数的可选标志。
kp 密钥合并
使用存储在系统中的根密钥对数据加密密钥进行打包 (DEK) Key Protect 实例。 DEK 通常用于加密“其他”信息片段。
当您使用根密钥包装 DEK 时, Key Protect 结合了多种算法的优势,以保护加密数据的隐私和完整性。
不能合并 standard
密钥,即,使用 -s
创建的密钥 参数 (ibmcloud kp key create my-key-name -s
)。
ibmcloud kp key wrap KEY_ID_OR_ALIAS
-i, --instance-id INSTANCE_ID
[--key-ring KEY_RING_ID]
[-a, --aad ADDITIONAL_DATA]
[-o, --output OUTPUT]
[-p, --plaintext DATA_KEY]
最佳实践
打包数据加密密钥 (DEK) 将创建 ciphertext
。 密文是加密信息,在解包时,会显示原始 DEK。
Key Protect 服务不会存储 DEK。 保存密文或将其保存到存储器,以确保您可以使用 kp key unwrap
命令检索 DEK。
建议您切勿保存明文 DEK 或将其持久存储。 在应用程序中,从存储器装入密文,调用 Key Protect 以获取明文 DEK,并使用 DEK 对“其他”信息片段进行加密或打包。
请勿将 DEK 保存到持久存储器。 公开 DEK 可能允许其他人解密您的数据。
每次回绕根密钥时,都会创建新的密文。
示例
以下是 kp key wrap
的示例。
示例 1
Key Protect 创建新的 base64-encoded 数据加密密钥 (DEK),并使用根密钥对其进行包装。
# create a root key
$ ibmcloud kp key create my-root-key
Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID Key Name
807eb0a6-cc10-4bfe-8331-41a6f712c4ea my-root-key
# create a new key and wrap it with the root key, creating a DEK (this is the ciphertext)
$ ibmcloud kp key wrap 807eb0a6-cc10-4bfe-8331-41a6f712c4ea
Wrapping key...
OK
Ciphertext
eyJjaXBoZXJ0ZXh0IjoiKzhjbHVqcUNP ...<redacted>... NmY3MTJjNGViIn0=
# capture the ciphertext
$ CIPHERTEXT=eyJjaXBoZXJ0ZXh0IjoiKzhjbHVqcUNP ...<redacted>... NmY3MTJjNGViIn0=
# unwrap the ciphertext to reveal the plaintext (DEK)
$ ibmcloud kp key unwrap 807eb0a6-cc10-4bfe-8331-41a6f712c4ea $CIPHERTEXT
Unwrapping key...
OK
Plaintext Rewrapped Plaintext
mXW4GmBhkRG1+Dzkx1D6dMX99a4KyYwtwbghaaLEQZ0=
示例 2
生成 base64-encoded 数据加密密钥 (DEK),并使用根密钥对其进行打包。
# create a root key
$ KEY_ID=$(ibmcloud kp key create my-root-key --output json | jq -r '.["id"]')
$ echo $KEY_ID
9052d914-bebe-4177-90e9-6073a167b507
# create a random, base64-encoded, 32-byte data encryption key (DEK)
$ PLAINTEXT=$(openssl rand -base64 32)
$ echo $PLAINTEXT
tEqoiCu9CeUsbqRe6yBUkrJg80QKKG/z46OkX0YQMV8=
# wrap the plaintext key with the root key, creating a DEK (this is the ciphertext)
$ CIPHERTEXT=$(ibmcloud kp key wrap $KEY_ID -p $PLAINTEXT --output json | jq -r '.["Ciphertext"]')
$ echo $CIPHERTEXT
eyJjaXBoZXJ0ZXh0IjoiTkdQRlhCb1dT ...<redacted>... M2ExNjdiNTA3In0=
# unwrap the ciphertext and reveal the original DEK
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT
tEqoiCu9CeUsbqRe6yBUkrJg80QKKG/z46OkX0YQMV8=
示例 3
合并根密钥并提供 AAD 信息。
提供额外认证数据 (AAD) 的一个用例是“密码保护”,并在密文中添加“验证短语”,这使得解包变得更加困难。
需要使用密文和 AAD 来解包密文并显示明文 DEK。
# create a root key
$ KEY_ID=$(ibmcloud kp key create my-root-key --output json | jq -r '.["id"]')
$ echo $KEY_ID
5f2cc155-fe16-492c-845c-4d1f0688c7ba
# set the additional authentication data (AAD)
$ AAD1=My-Secret-Password
$ AAD2=My-Verification-Phrase
# wrap the plaintext DEK with the root key and AAD
$ CIPHERTEXT=$(ibmcloud kp key wrap $KEY_ID -a "$AAD1,$AAD2" --output json | jq -r '.["Ciphertext"]')
$ echo $CIPHERTEXT
eyJjaXBoZXJ0ZXh0IjoiL1pQUzRLbUxQ ...<redacted>... ZjA2ODhjN2JiIn0=
# unwrap the ciphertext and reveal the original DEK
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT -a $AAD1,$AAD2
Unwrapping key...
OK
Plaintext Rewrapped Plaintext
H4ZfQe66aKcxirfCdNZ/3Na0JECP6HsAM3yclKmIfPQ=
# this should fail (missing some of the AAD)
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT -a $AAD1
Unwrapping key...
FAILED
# this should fail (AAD is in a different order)
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT -a $AAD2,$AAD1
Unwrapping key...
FAILED
必需参数
-
KEY_ID_OR_ALIAS
您要用于打包的根密钥v4 或别名。 不能合并标准密钥。
-
-i, --instance-id
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
可选参数
-
-a, --aad
用于进一步保护密钥的附加认证数据 (AAD)。 AAD是一组用于检查密钥内容完整性的字符串。 每个字符串可含有最多 255 个字符。
如果您在包装请求中提供了AAD,则必须在随后的解包请求中以相同的顺序指定相同的AAD。
-
-o, --output
设置 CLI 输出格式。 缺省情况下,会以表格式打印所有命令。 要将输出格式更改为JSON,请使用
--output json
。 -
-p, --plaintext
plaintext
指定由根密钥 (由KEY_ID
或ALIAS
参数标识) 包装的 base64-encoded 数据加密密钥 (DEK)。您想要管理和保护base64-encoded数据加密密钥(DEK)。 要导入现有密钥,请提供32字节(256位)密钥。
要生成并包装新的DEK,请省略
--plaintext
参数。 -
--key-ring
钥匙扣上有一个独特、易读的名字。 如果用户没有对缺省密钥环的许可权,那么此属性是必需的。
kp 键
列出您的 Key Protect 实例中可用的密钥。
键按 key id
顺序列出; 请参阅
示例 5。
ibmcloud kp keys
-i, --instance-id INSTANCE_ID
[-b --sort-by SORT_BY]
[-c, --crn]
[-f, --key-filter FILTERS]
[--key-ring KEY_RING_ID]
[--key-states STATES]
[-l --key-search KEY_SEARCH]
[-n, --number-of-keys NUMBER_OF_KEYS]
[-o, --output OUTPUT]
[-s, --starting-offset STARTING_OFFSET]
[-t, --key-type TYPE]
示例
以下是 kp keys
的示例。
示例 1
列出密钥。 请注意,缺省情况下,这将仅列出实例中的前 200 个密钥。 要显示更多或更少的键,请为 --number-of-keys
参数提供值。
# list keys
$ ibmcloud kp keys
Retrieving keys...
OK
Key ID Key Name
5f2cc155-fe16-492c-845c-4d1f0688c7ba my-root-key
c36e9f3a-feaf-4033-8603-687784dc7e51 my-root-key
示例 2
使用 --crn
列出密钥并显示云资源名称 (CRN) 参数。
# list keys and show the cloud resource name (CRN)
$ ibmcloud kp keys -c
Retrieving keys...
OK
Key ID Key Name CRN
5f2cc155-fe16-492c-845c-4d1f0688c7ba my-root-key crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:5f2cc155-fe16-492c-845c-4d1f0688c7ba
c36e9f3a-feaf-4033-8603-687784dc7e51 my-root-key crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:c36e9f3a-feaf-4033-8603-687784dc7e51
示例 3
以 JSON 格式列出密钥。
--output json
参数表示 --crn
(云资源名称) 参数。
# list keys
$ ibmcloud kp keys --output json
[
{
"id": "5f2cc155-fe16-492c-845c-4d1f0688c7ba",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-05-10T18:04:01Z",
"lastUpdateDate": "2020-05-10T18:04:01Z",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:5f2cc155-fe16-492c-845c-4d1f0688c7ba"
},
{
"id": "c36e9f3a-feaf-4033-8603-687784dc7e51",
"name": "my-root-key",
"type": "application/vnd.ibm.kms.key+json",
"algorithmType": "AES",
"createdBy": "user id ...<redacted>...",
"creationDate": "2020-05-10T17:56:37Z",
"lastUpdateDate": "2020-05-10T17:56:37Z",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:c36e9f3a-feaf-4033-8603-687784dc7e51"
}
]
示例 4
列出键并对其进行迭代,显示详细信息。
# list keys and convert to a list
$ KEYS=$(ibmcloud kp keys --output json | jq -r '.[] | .id')
$ for key in $(echo "${KEYS}"); do
ibmcloud kp key show ${key}
done
Grabbing info for key id: 5f2cc155-fe16-492c-845c-4d1f0688c7ba...
OK
Key ID Key Name Description Creation Date Expiration Date
5f2cc155-fe16-492c-845c-4d1f0688c7ba my-root-key 2020-05-10 18:04:01 +0000 UTC Key does not expire
Grabbing info for key id: c36e9f3a-feaf-4033-8603-687784dc7e51...
OK
Key ID Key Name Description Creation Date Expiration Date
c36e9f3a-feaf-4033-8603-687784dc7e51 my-root-key 2020-05-10 17:56:37 +0000 UTC Key does not expire
示例 5
创建 20 个密钥,并使用 kp keys -n -s
选项在 5 组中显示这些密钥。
# create 20 test keys
$ for I in {1..20}; do
KEY_ID=$(ibmcloud kp key create my-test-key-$I --output json | jq -r '.["id"]')
KEY_NAME=$(ibmcloud kp key show $KEY_ID --output json | jq -r '.["name"]')
echo $KEY_ID $KEY_NAME
done
b70f62a1-4d52-4526-91a9-ce47bf14c2a5 my-test-key-1
215f592c-3e42-47b6-867c-3cc1cce8a8fd my-test-key-2
df530c55-39c0-44e8-b7db-397593f70d90 my-test-key-3
768c9ceb-368b-46f7-9b1d-be211e036fe1 my-test-key-4
f141be88-5a34-4290-8513-4f01d934e75a my-test-key-5
b8794334-eea6-4c0d-8fe1-8086300b13f7 my-test-key-6
87679194-52d0-42af-81e1-bffd64f87315 my-test-key-7
cc7faf46-43cf-43b2-be98-7d1815371639 my-test-key-8
e9b08526-3227-406c-b83f-c28844bd952b my-test-key-9
3ee0d859-2968-4444-8e4d-3d28614f055c my-test-key-10
bc459a2f-56cb-445e-b4ee-9d1866b57560 my-test-key-11
62090ba8-7363-408e-9edc-aa9fb69c09be my-test-key-12
3b4b0511-00df-48e6-ad65-fad35bb6ce17 my-test-key-13
16276369-ba81-4eb5-be92-f13512147ad4 my-test-key-14
3d683d56-d340-40cb-b8b6-605dcfded01f my-test-key-15
10954149-0217-472d-8137-42fc330dbd03 my-test-key-16
54dd2745-7718-487f-85e6-a67e758dd945 my-test-key-17
3a5a3b52-6942-463d-9f7a-5b216bbf5123 my-test-key-18
90138be5-1dd1-4eea-b7c1-73cc8609e7f7 my-test-key-19
cf0a3d8b-4856-4aa5-be6a-88cca465eab0 my-test-key-20
# this is the same list sorted in KEY_ID order
# this is the order we expect when listing keys
10954149-0217-472d-8137-42fc330dbd03 my-test-key-16
16276369-ba81-4eb5-be92-f13512147ad4 my-test-key-14
215f592c-3e42-47b6-867c-3cc1cce8a8fd my-test-key-2
3a5a3b52-6942-463d-9f7a-5b216bbf5123 my-test-key-18
3b4b0511-00df-48e6-ad65-fad35bb6ce17 my-test-key-13
3d683d56-d340-40cb-b8b6-605dcfded01f my-test-key-15
3ee0d859-2968-4444-8e4d-3d28614f055c my-test-key-10
54dd2745-7718-487f-85e6-a67e758dd945 my-test-key-17
62090ba8-7363-408e-9edc-aa9fb69c09be my-test-key-12
768c9ceb-368b-46f7-9b1d-be211e036fe1 my-test-key-4
87679194-52d0-42af-81e1-bffd64f87315 my-test-key-7
90138be5-1dd1-4eea-b7c1-73cc8609e7f7 my-test-key-19
b70f62a1-4d52-4526-91a9-ce47bf14c2a5 my-test-key-1
b8794334-eea6-4c0d-8fe1-8086300b13f7 my-test-key-6
bc459a2f-56cb-445e-b4ee-9d1866b57560 my-test-key-11
cc7faf46-43cf-43b2-be98-7d1815371639 my-test-key-8
cf0a3d8b-4856-4aa5-be6a-88cca465eab0 my-test-key-20
df530c55-39c0-44e8-b7db-397593f70d90 my-test-key-3
e9b08526-3227-406c-b83f-c28844bd952b my-test-key-9
f141be88-5a34-4290-8513-4f01d934e75a my-test-key-5
# define a function for listing keys
$ list_keys () {
N=$1
S=$2
KEYS=$(ibmcloud kp keys --number-of-keys $N --starting-offset $S --output json | jq -r '.[] | .id')
for KEY_ID in $(echo "${KEYS}"); do
KEY_ID=$(ibmcloud kp key show $KEY_ID --output json | jq -r '.["id"]')
KEY_NAME=$(ibmcloud kp key show $KEY_ID --output json | jq -r '.["name"]')
echo $KEY_ID $KEY_NAME
done
}
# list the first group of keys
$ list_keys 5 0
10954149-0217-472d-8137-42fc330dbd03 my-test-key-16
16276369-ba81-4eb5-be92-f13512147ad4 my-test-key-14
215f592c-3e42-47b6-867c-3cc1cce8a8fd my-test-key-2
3a5a3b52-6942-463d-9f7a-5b216bbf5123 my-test-key-18
3b4b0511-00df-48e6-ad65-fad35bb6ce17 my-test-key-13
# list the second group of keys
$ list_keys 5 5
3d683d56-d340-40cb-b8b6-605dcfded01f my-test-key-15
3ee0d859-2968-4444-8e4d-3d28614f055c my-test-key-10
54dd2745-7718-487f-85e6-a67e758dd945 my-test-key-17
62090ba8-7363-408e-9edc-aa9fb69c09be my-test-key-12
768c9ceb-368b-46f7-9b1d-be211e036fe1 my-test-key-4
# list the third group of keys
$ list_keys 5 10
87679194-52d0-42af-81e1-bffd64f87315 my-test-key-7
90138be5-1dd1-4eea-b7c1-73cc8609e7f7 my-test-key-19
b70f62a1-4d52-4526-91a9-ce47bf14c2a5 my-test-key-1
b8794334-eea6-4c0d-8fe1-8086300b13f7 my-test-key-6
bc459a2f-56cb-445e-b4ee-9d1866b57560 my-test-key-11
# list the last group of keys
$ list_keys 5 15
cc7faf46-43cf-43b2-be98-7d1815371639 my-test-key-8
cf0a3d8b-4856-4aa5-be6a-88cca465eab0 my-test-key-20
df530c55-39c0-44e8-b7db-397593f70d90 my-test-key-3
e9b08526-3227-406c-b83f-c28844bd952b my-test-key-9
f141be88-5a34-4290-8513-4f01d934e75a my-test-key-5
# delete the test keys
$ KEYS=$(ibmcloud kp keys --output json | jq -r '.[] | .id')
$ for KEY_ID in $(echo "${KEYS}"); do
KEY_NAME=$(ibmcloud kp key show $KEY_ID --output json | jq -r '.["name"]')
if [[ $KEY_NAME == *"my-test-key-"* ]]; then
echo "Deleting... $KEY_NAME $KEY_ID"
ibmcloud kp key delete $KEY_ID
fi
done
(output not shown)
示例 6
根据 Key Protect 实例中的密钥状态 (Active
或 Suspended
) 列出密钥。
# list active and suspended keys
$ ibmcloud kp keys --key-states active,suspended
Retrieving keys...
OK
Key ID Key Name
ef2cc155-fe56-492c-845c-4d1f0688c7ba my-active-key
636e9f3a-feaf-4033-8603-687754dc7e51 my-suspended-key
示例 7
根据 Key Protect 实例中的密钥类型 (根) 列出密钥。
# list root keys
$ ibmcloud kp keys -t root
Retrieving keys...
OK
Key ID Key Name
2f1cb135-fa16-40dc-815c-4d1f0ee8c7ba my-root-key
示例 8
列出 Key Protect 实例中的密钥,其密钥名称或别名与字符串 "TEST" 中的字符完全匹配,不带引号。
# list keys with identifiers exactly matching TEST
$ ibmcloud kp keys -l exact:TEST
Retrieving keys...
OK
Key ID Key Name
636e9f3a-feaf-4033-8603-687754dc7e51 TEST
示例 9
列出 Key Protect 实例中的密钥,并根据其标识和创建密钥的日期 (以最新的开头) 对密钥进行排序 (连字符 "-" 表示按降序排序)。
# sort keys by id and descending creationDate
$ ibmcloud kp keys -b id,-creationDate
Retrieving keys...
OK
Key ID Key Name
ef2cc155-fe56-492c-845c-4d1f0688c7ba my-last-key
2f1cb135-fa16-40dc-815c-4d1f0ee8c7ba my-first-key
必需参数
-
-i, --instance-id
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
可选参数
-
-b, --sort-by
根据参数对键进行排序。 用于对结果进行排序的缺省属性为 "id"。参数之前的 "-" 指示按降序排序。 此时支持的排序参数为
- 标识
- 状态
- 可抽取
- 已导入
- creationDate
- lastUpdateDate
- lastRotateDate
- deletionDate
- expirationDate
-
-c, --crn
在输出中包含云资源名称 (CRN)。
-
-f, --key-filter
根据参数过滤密钥。 受支持的密钥过滤参数为
- creationDate
- deletionDate
- expirationDate
- 可抽取
- lastUpdateDate
- lastRotateDate
- 状态
日期的支持运算符为:
- GT(大于)
- gte(大于或等于)
- LT(小于)
- lte(小于等于)
如果缺少任何这些运算符,那么结果将完全匹配。
-
--key-states
待取回的钥匙的状态。 包含有效状态的字符串的列表-
Active
,Suspended
,Deactivated
和Destroyed
。(缺省值:active,suspended,deactivated
)。 -
-l, --key-search
根据带有预写限定符的搜索字符串 (例如
exact
,not
,alias
和name
) 列出键。有关更多详细信息,请参阅 API 文档。 -
-n, --number-of-keys
限制要检索的按键数量。 缺省值为 200,最大值为 5000。
-
-o, --output
设置 CLI 输出格式。 缺省情况下,会以表格式打印所有命令。 要将输出格式更改为JSON,请使用
--output json
。将输出设置为 JSON (
--output json
) 会在输出中包含云资源名称 (CRN)。 -
-r, --key-ring
钥匙扣上有一个独特、易读的名字。 如果用户没有对缺省密钥环的许可权,那么此属性是必需的。
-
-s, --starting-offset
从指定的偏移量开始检索密钥。 偏移量是基于零的,这意味着偏移量 0 (零) 是第一个键。
-
-t, --key-type
要检索的密钥的类型。 如果设置为
standard-key
,那么将检索标准密钥。 如果设置为root-key
,那么将检索根密钥。
kp 区域集
将另一个 Key Protect 区域端点作为目标。
ibmcloud kp region-set REGION
-i, --instance-id INSTANCE_ID
[-u, --unset]
示例
以下是 kp region-set
的示例。
示例 1
如果未指定 REGION
参数,那么系统会提示您选择区域。
# set the region endpoint
$ ibmcloud kp region-set
Select a Region:
1. au-syd
2. ca-tor
3. eu-de
4. eu-gb
5. jp-osa
6. jp-tok
7. us-east
8. us-south
9. br-sao
10. staging (us-south)
Enter a number:
5
OK
示例 2
显式设置区域。
# set the region endpoint to "us-south"
$ ibmcloud kp region-set us-south
OK
REGION
必须是有效的区域端点。
# this should fail (not a valid regional endpoint)
$ ibmcloud kp region-set not-a-region
FAILED
示例 3
取消设置 (除去) 区域端点。
# remove the regional endpoint
$ ibmcloud kp region-set -u
OK
必需参数
-
-i, --instance-id
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
可选参数
-
REGION
指定区域端点。 此参数是可选的,如果未指定此参数,那么系统会提示您从列表中选择区域端点。
-
-u, --unset
取消设置 (除去) 区域端点。
kp 注册
注册是根密钥与其他云资源 (例如 Cloud Object Storage (COS) 存储区或 Cloud Databases 部署) 之间的关联。
例如,在 Key Protect 中,创建由 COS 用于保护静态数据的根密钥。
其他云资源与 Key Protect 称为 registration
。
如果存在依赖于根密钥的资源 (例如 COS 存储区和对象),请勿删除根密钥。 删除根密钥意味着无法恢复这些资源。 这被称为“加密粉碎”,无法从此操作中恢复。
ibmcloud kp registrations
-i, --instance-id INSTANCE_ID
[-r, --key-ring KEY_RING_ID]
[-c, --crn-query CRN_PATTERN]
[-k, --key-id KEY_ID_OR_ALIAS]
[-o, --output OUTPUT]
示例
以下是 kp registrations
的示例。
注册示例显示了大量云资源名称 (CRN)。 CRN 遵循以下格式:
crn:version:cname:ctype:service-name:location:scope:service-instance:resource-type:resource
请参阅 云资源名称,用于深入说明 CRN 字段。
示例 1
列出所有注册,其中可能包括云资源,例如数据库,存储器,计算,容器或消息传递。
此示例显示了 Cloud Object Storage (COS) 与 Key Protect.
# view all registrations
$ ibmcloud kp registrations --output json
[
{
"keyId": "2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f",
"resourceCrn": "crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:4b636e74-f3ca-40bb-80b8-3bd21801ccb8:bucket:my-cos-kms-bucket",
"createdBy": "crn-crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:4b636e74-f3ca-40bb-80b8-3bd21801ccb8::",
"creationDate": "2020-06-15T16:07:37Z",
"lastUpdated": "2020-06-15T16:07:37Z",
"keyVersion": { "id": "2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f", "creationDate": "2020-06-15T16:05:53Z"
}
}
]
示例 2
此示例显示两个云资源 (Cloud Object Storage 和 Key Protect ) 的完整生命周期-从创建 Key Protect 实例并在它们之间创建策略以删除实例。
步骤的摘要如下:
步骤 | Where | 描述 |
---|---|---|
1 | CLI | 创建云对象存储器 (COS) 和 Key Protect (KP) 实例 |
2 | CLI | 为 COS 创建策略以访问 KP 加密密钥 |
3 | CLI | 创建 COS 用于加密数据的 KP 根密钥 |
4 | 控制台 UI | 创建 COS 存储区并指定 KP 加密; 这是在控制台用户界面 (UI) 中完成的,因为此时没有 API 或 CLI 支持 |
5 | CLI | 查看 KP 注册 |
6 | CLI | 上载和下载对象以验证 COS 和 KP 协同工作 |
7 | CLI | 删除 COS 存储区和 KP 根密钥 |
8 | CLI | 删除 COS 与 KP 之间的授权策略 |
9 | CLI | 删除 COS 和 KP 实例 |
这些命令显示 COS 和 Key Protect 服务套餐。 ibmcloud resource service-instance-create
命令需要目录中的 service plan name
和 location
。
# show the catalog offerings for cloud object storage (COS) and Key Protect
$ ibmcloud catalog service cloud-object-storage
$ ibmcloud catalog service kms
该示例涵盖多个步骤,应在与提供的摘要协商后执行。
# create a Cloud Object Storage (COS) instance
# "lite" is the pricing plan and "global" is the region
$ COS_NAME=my-cos-1
$ ibmcloud resource service-instance-create $COS_NAME cloud-object-storage lite global
Creating service instance my-cos-1 in resource group Default of account <account name> as <email address>...
OK
Service instance my-cos-1 was created.
Name: my-cos-1
ID: crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:4b636e74-f3ca-40bb-80b8-3bd21801ccb8::
GUID: 4b636e74-f3ca-40bb-80b8-3bd21801ccb8
Location: global
State: active
Type: service_instance
Sub Type:
Allow Cleanup: false
Locked: false
Created at: 2020-06-15T16:03:39Z
Updated at: 2020-06-15T16:03:39Z
Last Operation: Status create succeeded Message Completed create instance operation
# capture the COS instance id (GUID)
$ COS_INSTANCE_ID=4b636e74-f3ca-40bb-80b8-3bd21801ccb8
# create a Key Management Service (KMS) service instance
# "tiered-pricing" is the pricing plan and "us-south" is the region
$ KMS_NAME=my-kms-1
$ ibmcloud resource service-instance-create $KMS_NAME kms tiered-pricing us-south
Creating service instance my-kms-1 in resource group Default of account <account name> as <email address>...
OK
Service instance my-kms-1 was created.
Name: my-kms-1
ID: crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:b3933ab0-d579-46fc-8ed5-351aea657b9a::
GUID: b3933ab0-d579-46fc-8ed5-351aea657b9a
Location: us-south
State: active
Type: service_instance
Sub Type: kms
Allow Cleanup: false
Locked: false
Created at: 2020-06-15T16:04:40Z
Updated at: 2020-06-15T16:04:40Z
Last Operation: Status create succeeded Message Completed create instance operation
# capture the Key Protect (KP) instance id (GUID)
$ KP_INSTANCE_ID=b3933ab0-d579-46fc-8ed5-351aea657b9a
# create a policy for COS to read KMS; source is COS, target is KMS
$ ibmcloud iam authorization-policy-create cloud-object-storage kms Reader \
--source-service-instance-id $COS_INSTANCE_ID \
--target-service-instance-id $KP_INSTANCE_ID
Creating authorization policy under account ea998d3389c3473aa0987652b46fb146 as <email address>...
OK
Authorization policy 18cfc980-4458-4313-972e-93f312cdcd81 was created.
ID: 18cfc980-4458-4313-972e-93f312cdcd81
Source service name: cloud-object-storage
Source service instance: 4b636e74-f3ca-40bb-80b8-3bd21801ccb8
Target service name: kms
Target service instance: b3933ab0-d579-46fc-8ed5-351aea657b9a
Roles: Reader
# capture the COS-to-KMS authorization policy id
$ COS_KMS_AUTHORIZATION=18cfc980-4458-4313-972e-93f312cdcd81
# create a KP root key that COS uses to encrypt data
$ ibmcloud kp key create my-cos-key --output json
{
"id": "2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f",
"name": "my-cos-key",
"type": "application/vnd.ibm.kms.key+json",
"extractable": false,
"state": 1,
"crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:b3933ab0-d579-46fc-8ed5-351aea657b9a:key:2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f"
}
# capture the KP root key id
$ MY_COS_KEY_ID=2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f
# create a COS bucket and set KP encryption
# must be done in the console user interface (UI) because
# there is no API or CLI support at this time
# 1 - In the UI, go to... Resource list -> Storage -> my-cos-1
# 2 - Create bucket -> custom bucket
# 3 - Properties of a custom bucket
# a - bucket name: my-cos-kms-bucket
# b - location: us-south (same region as KP)
# c - checkbox: Key Protect
# d - instance: my-kms-1
# e - key name: my-cos-key
# f - button: Create bucket
# capture the name of the COS bucket that was created
$ COS_BUCKET=my-cos-kms-bucket
# view the KP registration; it's a result of creating the COS bucket
$ ibmcloud kp registrations --output json
[
{
"keyId": "2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f",
"resourceCrn": "crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:4b636e74-f3ca-40bb-80b8-3bd21801ccb8:bucket:my-cos-kms-bucket",
"createdBy": "crn-crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:4b636e74-f3ca-40bb-80b8-3bd21801ccb8::",
"creationDate": "2020-06-15T16:07:37Z",
"lastUpdated": "2020-06-15T16:07:37Z",
"keyVersion": { "id": "2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f", "creationDate": "2020-06-15T16:05:53Z"
}
}
]
# list the bucket
$ ibmcloud cos list-buckets --ibm-service-instance-id $COS_INSTANCE_ID
OK
1 bucket found in your account:
Name Date Created
my-cos-kms-bucket Jun 15, 2020 at 16:07:38
# upload an object to COS
$ ibmcloud cos put-object --bucket $COS_BUCKET --key '/cos-file.txt' --body cos-file-upload.txt
OK
Successfully uploaded object '/cos-file.txt' to bucket 'my-cos-kms-bucket'.
# get the object from COS
$ ibmcloud cos get-object --bucket $COS_BUCKET --key '/cos-file.txt' cos-file-download.txt
OK
Successfully downloaded '/cos-file.txt' from bucket 'my-cos-kms-bucket'
20 B downloaded.
# verify that the upload and download files are the same
$ cat cos-file-upload.txt
This is a test file
$ cat cos-file-download.txt
This is a test file
# delete the object
$ ibmcloud cos delete-object --bucket $COS_BUCKET --key '/cos-file.txt' --force
OK
Delete '/cos-file.txt' from bucket 'my-cos-kms-bucket' ran successfully.
# delete the bucket
$ ibmcloud cos delete-bucket --bucket $COS_BUCKET --force
OK
Successfully deleted bucket 'my-cos-kms-bucket'. The bucket 'my-cos-kms-bucket' will be available for reuse after 15 minutes.
# list the bucket (it should no longer exist)
$ ibmcloud cos list-buckets --ibm-service-instance-id $COS_INSTANCE_ID
OK
No buckets found in your account.
# view the KP registration (it should no longer exist)
$ ibmcloud kp registrations --output json
# delete the KP root key; COS no longer uses it
$ ibmcloud kp key delete $MY_COS_KEY_ID --output json
{
"id": "2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f"
}
# delete the authorization policy between COS AND KMS
$ ibmcloud iam authorization-policy-delete $COS_KMS_AUTHORIZATION --force
Deleting authorization policy 18cfc980-4458-4313-972e-93f312cdcd81 under account ea998d3389c3473aa0987652b46fb146...
OK
Authorization policy 18cfc980-4458-4313-972e-93f312cdcd81 is deleted successfully
# view the authorization policy (it should no longer exist)
$ ibmcloud iam authorization-policies
Getting authorization policies under account ea998d3389c3473aa0987652b46fb146 as <email address>...
OK
No policy found
# delete the KMS instance
$ ibmcloud resource service-instance-delete $KMS_NAME --force
Deleting service instance my-kms-1 in resource group Default under account <account name> as <email address>...
OK
Service instance my-kms-1 with ID crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:b3933ab0-d579-46fc-8ed5-351aea657b9a:: is deleted successfully
# delete the COS instance
$ ibmcloud resource service-instance-delete $COS_NAME --force
Deleting service instance my-cos-1 in resource group Default under account <account name> as <email address>...
OK
Service instance my-cos-1 with ID crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:4b636e74-f3ca-40bb-80b8-3bd21801ccb8:: is deleted successfully
# view resources (COS and KMS should no longer exist)
$ ibmcloud resource service-instances
Retrieving instances with type service_instance in resource group Default in all locations under account <account name> as <email address>...
OK
No service instance found.
示例 3
此示例显示在 COS 与 Key Protect (KP)-COS 无法访问 Key Protect 根密钥。
- 删除 KP 根密钥
- 除去 CMS/KP 授权策略
除非相关,否则此示例不会显示命令输出。
# create a Cloud Object Storage (COS) service instance
# "lite" is the pricing plan and "global" is the region
$ COS_NAME=my-cos-1
$ ibmcloud resource service-instance-create $COS_NAME cloud-object-storage lite global
# capture the COS instance id (GUID)
$ COS_INSTANCE_ID=c488e11a-c8a0-4688-b002-9327266ea55f
# create a Key Management Service (KMS) service instance
# "tiered-pricing" is the pricing plan and "us-south" is the region
$ KMS_NAME=my-kms-1
$ ibmcloud resource service-instance-create $KMS_NAME kms tiered-pricing us-south
# capture the Key Protect (KP) instance id (GUID)
$ KP_INSTANCE_ID=26f4b198-952a-47ab-9f44-ef69c038b3c5
# create a policy for COS to read KMS; source is COS, target is KMS (Key Protect)
$ ibmcloud iam authorization-policy-create cloud-object-storage kms Reader \
--source-service-instance-id $COS_INSTANCE_ID \
--target-service-instance-id $KP_INSTANCE_ID
# capture the COS-to-KMS authorization policy id
$ COS_KMS_AUTHORIZATION=594b946e-0e90-44ea-ac62-6cbb42450cd5
# create a KP root key that COS uses to encrypt data
$ ibmcloud kp key create my-cos-key --output json
# capture the KP root key id
$ MY_COS_KEY_ID=464d78c3-57dc-49a5-b932-8ebf8f8c7771
# create a COS bucket and set KP encryption
# must be done in the console user interface (UI) because
# there is no API or CLI support at this time
# capture the name of the COS bucket that was created
$ COS_BUCKET=my-cos-kms-bucket
# upload an object to COS
$ ibmcloud cos put-object --bucket $COS_BUCKET --key '/cos-file.txt' --body cos-file-upload.txt
# delete the authorization policy between COS AND KMS - this breaks everything
$ ibmcloud iam authorization-policy-delete $COS_KMS_AUTHORIZATION --force
# get the object from COS - this fails because COS no longer has access to KMS
$ ibmcloud cos get-object --bucket $COS_BUCKET --key '/cos-file.txt' cos-file-download.txt
FAILED
ServiceNotAuthorized: The specified COS Service Instance does not have sufficient
permissions to access the resource provided in the ibm-sse-kp-customer-root-key-crn request header
status code: 401,
request id: a51e1da3-9bf7-4cc9-9eb0-0d074c7f9093,
host id:
# delete the object
$ ibmcloud cos delete-object --bucket $COS_BUCKET --key '/cos-file.txt' --force
# delete the bucket
$ ibmcloud cos delete-bucket --bucket $COS_BUCKET --force
# delete the KP root key - this fails because the registration was not deleted
$ ibmcloud kp key delete $MY_COS_KEY_ID --output json
FAILED
kp.Error:
correlation_id='fffdd8a9-405a-4a91-a5a7-52c30d11424d',
msg='Conflict: Key could not be deleted. Please see "reasons" for more details.',
reasons='[PROTECTED_RESOURCE_ERR: Key is protecting one or more cloud resources -
FOR_MORE_INFO_REFER: https://cloud.ibm.com/docs/key-protect?topic=key-protect-troubleshooting#unable-to-delete-keys]'
# delete the KP root key; use --force because the registration between COS and KMS still exists
$ ibmcloud kp key delete $MY_COS_KEY_ID --force --output json
# delete the KMS instance
$ ibmcloud resource service-instance-delete $KMS_NAME --force
# delete the COS instance
$ ibmcloud resource service-instance-delete $COS_NAME --force
# view resources (COS and KMS should no longer exist)
$ ibmcloud resource service-instances
Retrieving instances with type service_instance in resource group Default in all locations under account <account name> as <email address>...
OK
No service instance found.
必需参数
-
KEY_ID_OR_ALIAS
要查询的密钥的 v4 UUID 或别名。
-
-i, --instance-id
IBM Cloud 实例ID,用于识别您的 Key Protect 实例。
您可以使用以下命令来设置环境变量,而不是指定
-i
:$ export KP_INSTANCE_ID=<INSTANCE_ID>
。
可选参数
-
-c, --crn-query
指定需要列出其注册的 crn 查询
-
-k, --key-id
指定需要列出其注册的密钥标识。
-
-o, --output
设置 CLI 输出格式。 缺省情况下,会以表格式打印所有命令。 要将输出格式更改为JSON,请使用
--output json
。将输出设置为 JSON (
--output json
) 会在输出中包含云资源名称 (CRN)。 -
-r, --key-ring
钥匙扣上有一个独特、易读的名字。 需要显示给定密钥环上的注册。
ibmcloud kp kmip 命令
KMIP 命令允许 API 访问 KMIP 适配器和对象。
子命令 | 状态 v0.10 | 描述 |
---|---|---|
适配器-创建 | 创建 KMIP 适配器 | |
适配器 | 检索 KMIP 适配器 | |
适配器 | 列示实例中的 KMIP 适配器 | |
适配器-删除 | 删除 KMIP 适配器 | |
cert-create | 创建与适配器关联的 KMIP 客户机证书 | |
cert | 检索 KMIP 客户机证书 | |
证书 | 列出与 KMIP 适配器关联的 KMIP 客户机证书 | |
证书-删除 | 删除 KMIP 客户机证书 | |
对象 | 检索 KMIP 对象 | |
对象 | 列示 KMIP 适配器中的 KMIP 对象 | |
对象-删除 | 删除 KMIP 对象 |
kp kmip 适配器-创建
使用 kmip adapter-create
在 Key Protect 实例下创建 KMIP 适配器。 适配器用于对 KMIP 对象进行分组和管理。 同一 Key Protect 实例下的 KMIP 适配器必须具有唯一名称,因为可以通过名称或标识检索适配器。 对于所有与 KMIP 相关的 CLI 命令,采用适配器标识的任何参数或标志也可以使用适配器名称。
根据概要文件,可能需要提供不同的信息来创建适配器。 目前,仅支持 KMIP 适配器的一个概要文件: native_1.0
。
native_1.0
概要文件仅需要在 -k
标志中提供根密钥的标识。
$ ibmcloud kp kmip adapter-create
-i, --instance-id INSTANCE_ID
-p, --profile PROFILE
[-k, --crk-id CRK_ID]
[-n, --name NAME]
[-d, --description DESC]
[-o, --output OUTPUT]
示例
以下是 kp kmip adapter-create
的示例。
示例 1
此示例使用 native_1.0
概要文件创建 KMIP 适配器
$ ibmcloud kp kmip adapter-create -n myadapter -k 47a0ad90-204d-4e45-aa5b-68ed40a05fa2 -p native_1.0 -d "my description"
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Creating KMIP Adapter...
OK
Adapter ID Adapter Profile Adapter Name Adapter Description
d6a00af1-277f-40e8-b33e-da3a68752209 native_1.0 myadapter my description
$ ibmcloud kp kmip adapters
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Listing KMIP Adapters...
OK
Adapter ID Adapter Profile Adapter Name Created At Updated At
d6a00af1-277f-40e8-b33e-da3a68752209 native_1.0 myadapter 2024-03-20 22:06:43 +0000 UTC 2024-03-20 22:06:43 +0000 UTC
kp kmip 适配器
检索有关 KMIP 适配器的详细信息,包括创建和更新日期。 您可以使用适配器标识或适配器名称。
$ ibmcloud kp kmip adapter ADAPTER_NAME_OR_ID
-i, --instance-id INSTANCE_ID
[-o, --output OUTPUT]
示例
以下是 kp kmip adapter
的示例。
示例 1
请注意,对于适配器,某些属性仅以 JSON 输出格式显示。
$ ibmcloud kp key create rootKmip
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Creating key: 'rootKmip', in instance: '8944cc2d-7e00-46b2-baa4-787051e0f7b3'...
OK
Key ID Key Name
47a0ad90-204d-4e45-aa5b-68ed40a05fa2 rootKmip
$ ibmcloud kp kmip adapter-create -n myadapter -k 47a0ad90-204d-4e45-aa5b-68ed40a05fa2 -p native_1.0
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Creating KMIP Adapter...
OK
Adapter ID Adapter Profile Adapter Name Adapter Description
d6a00af1-277f-40e8-b33e-da3a68752209 native_1.0 myadapter -
# retreiving adapter by name
$ ibmcloud kp kmip adapter myadapter
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Getting KMIP Adapter...
OK
Adapter ID Adapter Profile Adapter Name Created At Updated At Adapter Description
d6a00af1-277f-40e8-b33e-da3a68752209 native_1.0 myadapter 2024-03-20 22:06:43 +0000 UTC 2024-03-20 22:06:43 +0000 UTC -
# retrieving adapter by ID
$ ibmcloud kp kmip adapter d6a00af1-277f-40e8-b33e-da3a68752209 -o json
{
"id": "d6a00af1-277f-40e8-b33e-da3a68752209",
"profile": "native_1.0",
"profile_data": {
"crk_id": "47a0ad90-204d-4e45-aa5b-68ed40a05fa2"
},
"name": "myadapter",
"description": "",
"created_by": "IBMid-664003LB2T",
"created_at": "2024-03-20T22:06:43Z",
"updated_by": "IBMid-664003LB2T",
"updated_at": "2024-03-20T22:06:43Z"
}
kp kmip 适配器
列出 Key Protect 实例中可用的 KMIP 适配器。
$ ibmcloud kp kmip adapters
-i, --instance-id INSTANCE_ID
[-o, --output OUTPUT]
[-n, --limit LIMIT]
[-s, --starting-offset OFFSET]
[-t, --total-count]
[-k, --crk-id CRK_ID]
示例
以下是 kp kmip adapters
的示例。 使用 -k
标志仅显示使用特定 CRK 标识的适配器。
示例 1
$ ibmcloud kp kmip adapters -n 100 -s 0
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Listing KMIP Adapters...
OK
Adapter ID Adapter Profile Adapter Name Created At Updated At
d6a00af1-277f-40e8-b33e-da3a68752209 native_1.0 myadapter 2024-03-20 22:06:43 +0000 UTC 2024-03-20 22:06:43 +0000 UTC
kp kmip 适配器-删除
删除 KMIP 适配器。 这将删除与适配器关联的任何对象和证书。
$ ibmcloud kp kmip adapter-delete ADAPTER_NAME_OR_ID
-i, --instance-id INSTANCE_ID
[-f, --force]
[-y, --skip-confirm]
示例
以下是 kp kmip adapter-delete
的示例。
示例 1
$ ibmcloud kp kmip adapter-create -n adap -k 47a0ad90-204d-4e45-aa5b-68ed40a05fa2 -p native_1.0
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Creating KMIP Adapter...
OK
Adapter ID Adapter Profile Adapter Name Adapter Description
e97e4297-4a6f-41c9-ae67-0920715964fd native_1.0 adap -
$ ibmcloud kp kmip adapter-delete e97e4297-4a6f-41c9-ae67-0920715964fd
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Deleting KMIP Adapter...
OK
kp kmip cert-create
使用 kp kmip cert-create
来创建要与特定 KMIP 适配器关联的 KMIP 客户机证书。 -c
标志中提供的证书应该采用 x509 PEM 格式。 可通过使用前缀 @
指定文件路径或通过将证书文件的内容直接提供给标志来上载证书文件。
KMIP 客户机证书用于通过相互 TLS (mTLS) 连接并认证到 KMIP 服务器。 必须先注册证书,然后才能使用 KMIP 适配器执行任何 KMIP 协议操作。 证书可能最多需要 5 分钟才能在 KMIP 操作中使用。
证书必须在同一 KMIP 适配器中具有唯一名称,并且证书内容必须唯一,即使在多个适配器之间也是如此。
另请参阅: KMIP 协议规范
$ ibmcloud kp kmip cert-create
-a, --adapter ADAPTER_NAME_OR_ID
-c, --cert-string {@path/to/cert | CERTIFICATE_STRING}
[-n, --name NAME]
-i, --instance-id INSTANCE_ID
[-o, --output OUTPUT]
示例
以下是 kp kmip cert-create
的示例。
示例 1
此示例显示了上载同一证书文件的两种方法。
$ ibmcloud kp key create rootKmip
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Creating key: 'rootKmip', in instance: '8944cc2d-7e00-46b2-baa4-787051e0f7b3'...
OK
Key ID Key Name
47a0ad90-204d-4e45-aa5b-68ed40a05fa2 rootKmip
$ ibmcloud kp kmip adapter-create -n myadapter -k 47a0ad90-204d-4e45-aa5b-68ed40a05fa2 -p native_1.0
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Creating KMIP Adapter...
OK
Adapter ID Adapter Profile Adapter Name Adapter Description
d6a00af1-277f-40e8-b33e-da3a68752209 native_1.0 myadapter -
$ export CERT=$(cat ./cert.pem)
$ ibmcloud kp kmip cert-create -n mycert -c "$CERT" -a myadapter
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Creating KMIP Client Certificate...
OK
Certificate ID Certificate Name Created At
3f550b96-86bc-44fe-8d1d-113e57067219 mycert 2024-03-20 22:08:03 +0000 UTC
## Alternatively, you can also provide the filepath of the certificate
$ ibmcloud kp kmip cert-delete mycert -a myadapter
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Deleting KMIP Client Certificate...
OK
$ ibmcloud kp kmip cert-create -n mycert -c @./cert.pem -a myadapter
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Creating KMIP Client Certificate...
OK
Certificate ID Certificate Name Created At
a279fded-06d1-45a1-8a95-901f194fb937 mycert 2024-03-20 22:11:34 +0000 UTC
Kp kmip cert
检索特定 KMIP 客户机证书。 可以通过标识或名称检索证书。
$ ibmcloud kp kmip cert CERTIFICATE_ID
-a, --adapter ADAPTER_NAME_OR_ID
-i, --instance-id INSTANCE_ID
[-o, --output OUTPUT]
示例
以下是 kp kmip cert
的示例。
示例 1
按名称获取证书:
$ ibmcloud kp kmip cert mycert -a myadapter
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Getting KMIP Client Certificate...
OK
Certificate ID Certificate Name Created At
a279fded-06d1-45a1-8a95-901f194fb937 mycert 2024-03-20 22:11:34 +0000 UTC
示例 2
按 UUID 获取 JSON 格式的证书。 将在 JSON 主体中返回证书的 PEM 格式内容。
$ ibmcloud kp kmip cert a279fded-06d1-45a1-8a95-901f194fb937 -a myadapter -o json
{
"id": "a279fded-06d1-45a1-8a95-901f194fb937",
"name": "mycert",
"certificate": "-----BEGIN CERTIFICATE-----\nMIIFqzCCA5OgAwIBAgIUNXqfJMkAHOBHz6+ekETDlCqIEqUwDQYJKoZIhvcNAQEL\nBQAw
... CERTIFICATE CONTENTS ABBREVIATED ...
Y6uFtHuQSpud0C\n-----END CERTIFICATE-----\n",
"created_by": "IBMid-12345678",
"created_at": "2024-03-20T22:11:34Z"
}
Kp kmip 证书
列出与特定 KMIP 适配器关联的所有 KMIP 客户机证书。
$ ibmcloud kp kmip certs
-a, --adapter ADAPTER_NAME_OR_ID
[-n, --limit LIMIT]
[-s, --starting-offset OFFSET]
[-t, --total-count]
-i, --instance-id INSTANCE_ID
[-o, --output OUTPUT]
示例
以下是 kp kmip certs
的示例。
示例 1
$ ibmcloud kp kmip certs -a myadapter
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Listing KMIP Client Certificates...
OK
Certificate ID Certificate Name Created At
a279fded-06d1-45a1-8a95-901f194fb937 mycert 2024-03-20 22:11:34 +0000 UTC
kp kmip cert-删除
删除 KMIP 客户机证书。
$ ibmcloud kp kmip cert-delete CERTIFICATE_ID
-a, --adapter ADAPTER_NAME_OR_ID
-i, --instance-id INSTANCE_ID
示例
以下是 kp kmip cert-delete
的示例
示例 1
$ ibmcloud kp kmip cert-delete -a myadapter mycert
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Deleting KMIP Client Certificate...
OK
kp kmip 对象
KMIP 对象是通过使用 KMIP 协议通过 KMIP 客户机执行的操作创建的。 它们无法通过 API 创建,但可以读取和删除。 对象属于单个适配器。
对象没有名称,必须按标识进行检索。
$ ibmcloud kp kmip object OBJECT_ID
-a, --adapter ADAPTER_NAME_OR_ID
-i, --instance-id INSTANCE_ID
[-o, --output OUTPUT]
示例
以下是 kp kmip object
的示例
示例 1
$ ibmcloud kp kmip object 12365a82-5404-4bd9-a4c7-2b628ee18304 -a testadapter
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Getting KMIP Object...
OK
Object ID Object Type Object State Created At Updated At
12365a82-5404-4bd9-a4c7-2b628ee18304 Symmetric Key Active 2024-03-14 21:01:45 +0000 UTC 2024-03-14 21:01:45 +0000 UTC
示例 2
将 KMIP 对象作为 JSON 获取将显示正常表视图中不可见的一些额外属性。
$ ibmcloud kp kmip object 12365a82-5404-4bd9-a4c7-2b628ee18304 -a testadapter -o json
{
"id": "12365a82-5404-4bd9-a4c7-2b628ee18304",
"kmip_object_type": 2,
"state": 2,
"created_by_kmip_client_cert_id": "531c18f3-4e37-447e-a7e0-e8676407bb75",
"created_by": "IBMid-123456",
"created_at": "2024-03-14T21:01:45Z",
"updated_by_kmip_client_cert_id": "531c18f3-4e37-447e-a7e0-e8676407bb75",
"updated_by": "IBMid-123456",
"updated_at": "2024-03-14T21:01:45Z"
}
kp kmip 对象
列出 KMIP 对象并查看有关其对象类型和对象状态以及其他元数据的信息。 使用 -f
标志来过滤仅处于特定状态的对象。 缺省情况下,状态过滤器设置为 1,2,3,4
。
数字对应于对象状态,如下所示:
- 预活动 = 1
- Active = 2
- 已取消激活 = 3
- 已泄密 = 4
- 已销毁 = 5
- 已损坏的已泄密 = 6
请参阅 KMIP 状态枚举
ibmcloud kp kmip objects
-a, --adapter ADAPTER_NAME_OR_ID
[-n, --limit LIMIT]
[-s, --starting-offset OFFSET]
[-t, --total-count]
-i, --instance-id INSTANCE_ID
[-o, --output OUTPUT]
示例
以下是 kp kmip objects
的示例。
示例 1
$ ibmcloud kp kmip objects -a myadapter
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Listing KMIP Objects...
OK
Object ID Object Type Object State Created At Updated At
00196c59-c5c2-42d8-9729-703cd0389f60 Symmetric Key Compromised 2024-03-14 20:47:54 +0000 UTC 2024-03-14 20:47:54 +0000 UTC
02f1043c-0494-4399-82af-5395a14b019f Symmetric Key Pre-Active 2024-03-14 20:58:06 +0000 UTC 2024-03-14 20:58:06 +0000 UTC
08082ff4-821b-4689-83ec-15cac5bd1939 Symmetric Key Pre-Active 2024-02-22 00:10:46 +0000 UTC 2024-02-22 00:11:23 +0000 UTC
0c1ea28d-dfaa-404a-b9c4-fcdc3f5d8b02 Symmetric Key Deactivated 2024-03-14 21:05:48 +0000 UTC 2024-03-14 21:05:48 +0000 UTC
10b49b05-0101-4234-927b-20a3356da291 Symmetric Key Pre-Active 2024-03-14 21:26:54 +0000 UTC 2024-03-14 21:26:54 +0000 UTC
12365a82-5404-4bd9-a4c7-2b628ee18304 Symmetric Key Active 2024-03-14 21:01:45 +0000 UTC 2024-03-14 21:01:45 +0000 UTC
示例 2
使用 -f
标志来过滤特定状态的对象。 使用逗号来指定多个状态。
$ ibmcloud kp kmip objects -a testadapter -f 5,6
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Listing KMIP Objects...
OK
Object ID Object Type Object State Created At Updated At
03d38805-2bb2-4aa0-bbf3-dc4a6d5d0475 Symmetric Key Destroyed 2024-03-14 20:47:58 +0000 UTC 2024-03-14 20:47:58 +0000 UTC
08c94f34-0100-4331-b759-5937ed5b1228 Symmetric Key Destroyed 2024-03-14 20:46:38 +0000 UTC 2024-03-14 20:46:38 +0000 UTC
1a13e112-41f8-4d52-be08-a0946b8c22fa Symmetric Key Destroyed Compromised 2024-03-14 20:58:20 +0000 UTC 2024-03-14 20:58:20 +0000 UTC
kp kmip 对象-删除
删除 KMIP 对象。 只能成功删除状态为“不活动”或“未销毁”的对象。
$ ibmcloud kp kmip object-delete OBJECT_ID
-a, --adapter ADAPTER_NAME_OR_ID
-i, --instance-id INSTANCE_ID
[-f, --force]
[-y, --skip-confirm]
示例
以下是 kp kmip object-delete
的示例
示例 1
$ ibmcloud kp kmip object-delete 9b2f5af5-3534-4f02-8836-f89af37c4351 -a testadapter
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Deleting KMIP Object...
OK
后续步骤
在 API 文档 中查找相关操作。