检索 Key Protect 键的列表

IBM® Key Protect for IBM Cloud® 提供了用于查看、管理和审计加密密钥的集中式系统。 请对您的密钥及其访问限制进行审核,以确保资源的安全。

虽然可以 为单个密钥分配细粒度的访问 权限,但 列表密钥 API 不会返回具有单个访问权限的密钥。 换句话说,它不会返回只有您才能访问的密钥。 不过,调用此 API 会返回您可以访问的密钥环中的密钥。 如果可以访问实例中的所有键,则可以看到所有键。 您可以按照“通过 IAM 查看细粒度访问密钥”中的说明,查看具有单个访问权限的密钥。 或者,使用 API 传递特定的密钥 ID。

最好定期审计密钥配置:

有关审核资源访问权限的更多信息,请参阅“管理用户访问权限”。

在控制台中查看密钥

如果想要使用图形界面来检查服务中的密钥,那么可以使用 Key Protect 仪表板。

创建密钥或将现有密钥导入服务后,请完成以下步骤以查看密钥。

  1. 登录到 IBM Cloud 控制台

  2. 转到 “菜单” > “资源列表” 以查看您的资源列表。

  3. 从 IBM Cloud 资源列表中,选择您供应的 Key Protect 实例。

  4. 单击密钥,查看服务实例中所有密钥的列表。 您可以通过以下方式管理表格视图:

    • 筛选密钥 ——使用表格筛选面板中的下拉列表,按密钥状态 (例如 “已启用”或密钥环 ID 进行筛选。
    • 排序键 ——点击列标题可按 “最后旋转日期”等值进行排序。
    • 搜索键 ——使用搜索栏按显示名称、键 ID 或别名进行搜索。 要快速找到某个特定密钥,请通过其密钥 ID 进行搜索。
    • 自定义列 ——点击 “设置”按钮,选择要显示的列。

    默认情况下,该表格显示以下列:

描述密钥表。
描述
名称 您赋予密钥的显示名称。
密钥标识 Key Protect 服务指定给密钥的唯一密钥标识。 您可以使用该 ID 值通过 Key Protect API 向该服务发起调用。
密钥环标识 与钥匙相关联的 钥匙圈。 这些状态包括_停用_、删除禁用_和_启用
上次轮换时间 上次轮换密钥的日期。
密钥别名 密钥的 密钥别名 (或别名)。
类型 密钥的 密钥类型 (根密钥或标准密钥)。
状态 密钥的 关键状态,即 已停用, 已删除, 残疾已启用 中的一个。

表中的其他可用字段包括:

  • 上次修改:表示密钥最后一次被修改的时间。
  • 创建时间:密钥的创建日期。
  • 已删除: 显示密钥是否处于已删除状态 (正在等待清除)。
  • 导入:表示密钥是否由用户提供的密钥材料创建。
  • 轮换策略:显示此密钥是否附加了轮换策略。
  • 关联资源: 显示密钥是否保护任何资源。

搜索功能仅限于 5,000 个键的卷。 如果键的数量超过 5000 个,但又无法过滤到 5000 个以下,那么除非与键 ID 或别名完全匹配,否则搜索将失败。 例如,可以根据按键状态进行筛选,只显示 Enabled 按键。 有关密钥搜索 API 规范的更多信息,请参阅 GET /keys

如果您想缩小搜索返回结果的数量,请尝试使用以下一个或多个参数组合:

  • not: 时,会反转搜索使用的逻辑(例如,not:foo 搜索具有别名或名称不包含 foo 的键)。
  • escape: 该选项之后的所有内容都将被视为明文(例如:escape:not: 搜索具有包含子字符串 not: 的别名或名称的密钥)。
  • exact: 仅查找完全匹配项。
  • alias: 仅查找密钥别名。
  • name: 仅查找密钥名称。

not:exact:foobar 查找键名或别名完全是 foobar 的键,而 exact:not:foobar 查找键名或别名完全是 not:foobar 的键。

搜索作用域的行为方式为 OR。 这意味着在使用多个搜索范围时,至少有一个范围的匹配结果会返回键值。 缺省情况下 (如果未提供作用域),将在 namealias 作用域中执行搜索。

未看到存储在 Key Protect 实例中的密钥的完整列表? 向管理员确认,您已被分配到适用于 Key Protect 实例或个人密钥的正确角色。 有关角色的更多信息,请参阅角色和许可权

按状态检索密钥

通过对 Key Protect 实例中特定密钥的状态进行过滤,可以检索处于指定状态的密钥。

例如,您的 Key Protect 实例中可能有处于活动,已暂挂和已破坏状态的密钥,但您仅希望在查看密钥列表时检索处于活动状态的密钥。

有关密钥状态的更多信息,请参阅 密钥状态和过渡

在创建现有密钥或将现有密钥导入到服务中之后,您可以使用两个选项来查看密钥。 第一个选项“通过资源列表查看键值”适用于所有键值,但具有 细粒度访问权限 的键值除外。 有关查看细粒度访问密钥的信息,请参阅 查看细粒度访问密钥 IAM

通过资源列表查看密钥

  1. 登录到 IBM Cloud 控制台

  2. 转到 “菜单” > “资源列表” 以查看您的资源列表。

  3. 从 IBM Cloud 资源列表中,选择您供应的 Key Protect 实例。

  4. “键” 页面上,单击筛选图标以打开筛选面板。

  5. “状态” 下拉菜单中,选择您要检索的密钥所属的关键状态。

  6. 单击应用按钮。

  7. 此外,在表行标题中,可以单击 Last updated 以按最近更新表中的键的日期对列表进行排序,或者单击 Type 以将所有根键和标准键作为组列出。

通过 IAM 查看细颗粒度访问密钥

  1. 从菜单栏中,单击 管理 > 访问权 (IAM),然后选择 用户 以浏览帐户中的现有用户。

  2. 选择表行,然后单击 ⋯ 图标以打开该用户的选项列表。 然后从下拉列表中选择 管理访问权

  3. 在这里可以看到该用户的所有 IAM 信息,包括其所属的访问组。 要专门查看此用户的访问策略,请单击 访问策略 选项卡。

账户所有者或具有相应权限的用户可以查看分配给该用户的所有策略,包括对密钥的任何细粒度访问。

使用 API 查看密钥

您可以通过使用 Key Protect API 来检索密钥的内容。

检索键列表

对于高级视图,可以通过向以下端点发出 GET 调用,浏览在供应的 Key Protect 实例中管理的密钥。

https://<region>.kms.cloud.ibm.com/api/v2/keys
  1. 检索认证凭证以使用服务中的密钥

  2. 通过运行以下 curl 命令来查看有关密钥的常规特征。

    $ curl -X GET \
        "https://<region>.kms.cloud.ibm.com/api/v2/keys" \
        -H "accept: application/vnd.ibm.collection+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>" \
        -H "x-kms-key-ring: <key_ring_ID>" \
        -H "correlation-id: <correlation_ID>"
    

    根据表 1 中的信息,替换示例请求中的变量。 有关查看密钥集合 (包括搜索密钥的功能) 时可用的可选参数的更多信息,请参阅 有关 List keys 方法的 API 文档

表 1. 使用 Key Protect API 查看密钥所需的变量
变量 描述
区域 必填。 区域缩写(例如 us-southeu-gb ),用于表示您的 Key Protect 实例所在的地理区域。 有关更多信息,请参阅区域服务端点
键名或别名 必填。 要检查的密钥的唯一标识或别名。
IAM_token 必填。 您的 IBM Cloud 访问令牌。 在 curl 请求中包含 IAM 令牌的完整内容,包括 Bearer 值。 如需了解更多信息,请参阅“获取访问令牌”。
instance_ID 必填。 指定给您的 Key Protect 服务实例的唯一标识。 如需了解更多信息,请参阅 “检索实例 ID”
键环 ID 可选。 目标密钥环的唯一标识。 如果未指定,则响应包括用户在指定实例中可以访问的所有资源。 如果提供,响应将只包括用户在指定钥匙圈中可以访问的资源。 有关更多信息,请参阅 分组密钥
correlation_ID 可选。 用于跟踪和关联事务的唯一标识。

成功的 GET api/v2/keys 请求会返回 Key Protect 服务实例中可用的密钥的集合。

{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.key+json",
        "collectionTotal": 2
    },
    "resources": [
        {
            "id": "02fd6835-6001-4482-a892-13bd2085f75d",
            "type": "application/vnd.ibm.kms.key+json",
            "name": "Root-key",
            "state": 1,
            "crn": "crn:v1:bluemix:public:kms:us-south:a/f047b55a3362ac06afad8a3f2f5586ea:12e8c9c2-a162-472d-b7d6-8b9a86b815a6:key:02fd6835-6001-4482-a892-13bd2085f75d",
            "createdBy": "...",
            "creationDate": "2020-03-11T16:30:06Z",
            "lastUpdateDate": "2020-03-11T16:30:06Z",
            "algorithmMetadata": {
                "bitLength": "256",
                "mode": "Deprecated"
            },
            "extractable": false,
            "imported": true,
            "algorithmMode": "Deprecated",
            "algorithmBitSize": 256,
            "dualAuthDelete": {
                "enabled": false
            }
        },
        {
            "id": "2291e4ae-a14c-4af9-88f0-27c0cb2739e2",
            "type": "application/vnd.ibm.kms.key+json",
            "name": "Standard-key",
            "state": 1,
            "expirationDate": "2020-03-14T03:50:12Z",
            "crn": "crn:v1:bluemix:public:kms:us-south:a/f047b55a3362ac06afad8a3f2f5586ea:30372f20-d9f1-40b3-b486-a709e1932c9c:key:2291e4ae-a14c-4af9-88f0-27c0cb2739e2",
            "createdBy": "...",
            "creationDate": "2020-03-12T03:50:12Z",
            "lastUpdateDate": "2020-03-12T03:50:12Z",
            "algorithmMetadata": {
                "bitLength": "256",
                "mode": "Deprecated"
            },
            "extractable": true,
            "imported": false,
            "algorithmMode": "Deprecated",
            "algorithmBitSize": 256,
            "dualAuthDelete": {
                "enabled": false
            }
        }
    ]
}

默认情况下,GET api/v2/keys 会返回前 200 个键,但您可以在查询时使用 limit 参数来调整此限制。 要了解有关 limitoffset 的更多信息,请参阅检索密钥子集

未看到完整的密钥列表? 您可能需要使用 limitoffset 或向管理员咨询,以帮助确保您在实例中被分配到正确的密钥访问级别。 要了解更多信息,请参阅 无法查看或列出密钥

检索密钥子集

通过在查询时指定 limitoffset 参数,可检索密钥子集,从指定的 offset 值开始。

例如,你的 Key Protect 实例中总共存储了3000个键,但当你发出 GET /keys 请求时,只想检索第200到300个键。

您可以使用以下示例请求来检索一组不同的密钥。

$ curl -X GET \
    "https://<region>.kms.cloud.ibm.com/api/v2/keys?offset=<offset>&limit=<limit>" \
    -H "accept: application/vnd.ibm.collection+json" \
    -H "authorization: Bearer <IAM_token>" \
    -H "bluemix-instance: <instance_ID>"

根据下表替换请求中的 limitoffset 变量。

表 2. 限值和偏移量变量的使用
变量 描述
offset 要跳过的密钥数。 例如,如果你的实例中有 50 个键,且你想列出第 26 到 50 个键,请使用 ../keys?offset=25。 您还可以将偏移量与限制结合使用,以逐页浏览可用的资源。
limit 要检索的密钥数。 例如,如果您的实例中有 100 个键,而您只想列出其中 10 个键,请使用 ../keys?limit=10。 limit 的最大值为 5000。

Offset 是数据集中特定密钥的位置。 offset 值从 0 开始,这意味着数据集中的第 10 个加密密钥位于 offset 9。

按状态检索密钥

通过在查询时指定 state 参数,可以检索处于指定状态的密钥。

例如,您的 Key Protect 实例中可能有处于活动状态,已暂挂状态和已破坏状态的密钥,但您仅希望在发出 GET /keys 请求时检索处于活动状态的密钥。

状态查询参数采用从 0 到 5 的整数列表,以逗号分隔,不含空格或尾部逗号。 有关密钥状态的更多信息,请参阅 密钥状态和过渡

您可以使用以下示例请求来检索一组不同的密钥。

$ curl -X GET \
    "https://<region>.kms.cloud.ibm.com/api/v2/keys?state=<state_integers>" \
    -H "accept: application/vnd.ibm.collection+json" \
    -H "authorization: Bearer <IAM_token>" \
    -H "bluemix-instance: <instance_ID>"

根据下表替换请求中的 state 变量。

表 3. 状态变量
变量 描述
状态 要检索的键的状态。 状态为整数,其中预激活 = 0,激活 = 1,暂停 = 2,停用 = 3,销毁 = 5。 例如,如果只想列出 Key Protect 实例中处于活动状态的键,请使用 ../keys?state=1。 您还可以通过可用资源将状态与偏移量和页面限制进行配对。

有关使用说明,请参考以下示例,了解如何设置 state 查询参数。

表 4. 状态查询参数使用说明
URL 描述
.../keys 列出您所有可用的资源,最多显示前 200 个键。
.../keys?state=5 列出处于已删除状态的密钥。
.../keys?state=2,3 列出处于暂挂和取消激活状态的密钥。

按可抽取值检索密钥

通过在查询时指定 extractable 参数,您可以检索其物料可以离开服务的密钥。

例如,您可能在 Key Protect 实例中同时具有标准密钥和根密钥,但您只希望在发出 GET /keys 请求时使用可抽取的密钥材料来检索密钥。

可抽取查询参数采用布尔值。

您可以使用以下示例请求来检索一组不同的密钥。

$ curl -X GET \
    "https://<region>.kms.cloud.ibm.com/api/v2/keys?extractable=<extractable>" \
    -H "accept: application/vnd.ibm.collection+json" \
    -H "authorization: Bearer <IAM_token>" \
    -H "bluemix-instance: <instance_ID>"

根据下表替换请求中的 extractable 变量。

表 5. 可提取变量
变量 描述
可抽取 要检索的密钥的类型。 根据可抽取属性过滤键。 您可以使用此查询参数来搜索其物料可离开服务的密钥。 如果设置为 true,则会检索标准密钥。 如果设置为 false,则会检索根键。 如果省略,则同时检索根密钥和标准密钥。 例如,如果只想在 Key Protect 实例中列出具有可提取材料的键,请使用 ../keys?extractable=true。 您还可以将 extractable 与 offsetlimit 以及 state 结合使用,以浏览可用的资源。

有关使用说明,请参考以下示例,了解如何设置 extractable 查询参数。

表 6. 可提取查询参数的使用说明
URL 描述
../keys 列出您所有可用的资源,最多显示前 200 个键。
../keys?extractable=true 列出标准密钥。
../keys?extractable=false 列出根密钥。

对键列表进行排序

在基于一个或多个键属性返回的查询字符串 对密钥列表进行排序 中使用 sort 参数。 要按降序对属性进行排序,请在术语前加上"-"。要按多个关键属性排序,请使用逗号分隔每个属性。 先评估逗号分隔列表中的第一个属性,再评估下一个属性。

$ curl -X GET \
    "https://<region>.kms.cloud.ibm.com/api/v2/keys?sort=<sort-value>" \
    -H "accept: application/vnd.ibm.collection+json" \
    -H "authorization: Bearer <IAM_token>" \
    -H "bluemix-instance: <instance_ID>"
表 7. 排序查询参数使用说明
变量 描述
排序值 用于排序的属性列表。 目前可排序的关键属性有 id, state, extractable, imported, creationDate, lastUpdateDate, lastRotateDate, deletionDate, expirationDate