IBM Cloud Docs
Key Protect CLI 参考

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 部分,其中显示了如何在工作流程的上下文中使用该命令。

这些示例假定您具有 openssl 和 已安装 jq

许多示例利用有关 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-tokenkp 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]

示例

此示例创建导入令牌。 导入令牌由 noncepublic 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 materialnonce 进行加密。

现时标志是可以在加密通信中仅使用一次的任意数字。

# 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

检索与 Key Protect 关联的导入令牌 实例。

导入令牌包含公用加密密钥和现时标志。 提供检索到的公用密钥和现时标志作为参数 ibmcloud kp import-token nonce-encryptibmcloud 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-privateprivate-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-privateprivate-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-privateprivate-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_ipkeykeysmetadatapolicypoliciesregistrationregistrationsringringsrotatewrapunwraprewrapversionversions

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 策略的密钥。

  1. 创建密钥并启用 dual-auth-delete 策略

  2. 用户 1 调度 (授权) 密钥删除 kp key schedule-delete 命令

  3. 用户 2 调度 (授权) 密钥删除

  4. 在执行第二个 schedule-delete 后删除密钥,在用户界面,API 和 CLI 中支持该密钥

  5. 如果在 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 键删除

删除存储在 Key Protect 服务中的密钥

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

此工作流程使用导入令牌创建根密钥,删除该密钥,然后复原该密钥。

这是一个两步过程。

  1. 使用导入令牌创建根密钥,然后删除该密钥

  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 或导入的令牌密钥。

首先,从 base64 值已导入令牌

# 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

这个例子展示了如何……

  1. 创建根密钥

  2. 创建数据加密密钥 (DEK),这是 plaintext

  3. 使用根密钥合并 DEK,这将创建 ciphertext

  4. 旋转根密钥

  5. 解包密文以揭示原始 DEK (明文) 和新密文 (新密文是用新旋转的根密钥包装的明文)

  6. 解包新密文以揭示原始 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 策略的密钥。

  1. 创建密钥并启用 dual-auth-delete 策略

  2. 用户 1 调度 (授权) 密钥删除 kp key schedule-delete 命令

  3. 用户 2 调度 (授权) 密钥删除

  4. 在执行第二个 schedule-delete 后删除密钥,在用户界面,API 和 CLI 中支持该密钥

  5. 如果在 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_IDALIAS 参数标识) 包装的 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 实例中的密钥状态 (ActiveSuspended) 列出密钥。

# 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

    待取回的钥匙的状态。 包含有效状态的字符串的列表- ActiveSuspendedDeactivatedDestroyed。(缺省值: active,suspended,deactivated)。

  • -l, --key-search

    根据带有预写限定符的搜索字符串 (例如 exactnotaliasname) 列出键。有关更多详细信息,请参阅 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 namelocation

# 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 文档 中查找相关操作。