IBM Cloud Docs
访问私钥

访问私钥

在 IBM Cloud® Secrets Manager 服务实例中存储私钥后,可以检索其值。

准备工作

开始之前,请确保您具有所需的访问级别。 要查看可用私钥的列表,您需要 读者 服务角色或更高版本。 要检索私钥的值,您需要 SecretsReader 服务角色或更高角色

在 UI 中检索私钥

您可以使用 Secrets Manager UI 来检索私钥。 执行以下步骤以获取私钥。

  1. 私钥 表中,单击 操作 菜单 "操作" 图标 以打开私钥的选项列表。
  2. 要查看私钥值,请单击 查看私钥
  3. 确保您处于安全环境中后,单击 确认

将显示密钥值 15 秒,然后关闭对话框。

密文旋转后,可以通过版本历史选项查看之前的密文值。

您还可以撤销私钥的详细信息,例如到期日期和轮换时间间隔或状态。

  1. 私钥 表中,单击 操作 菜单 "操作" 图标 以打开私钥的选项列表。
  2. 要查看私钥值,请单击 详细信息

您可以从“私钥”表中的过滤器选项进一步过滤检索的私钥,并选择私钥组和/或私钥类型。

下载证书

要使用 Secrets Manager UI 下载证书,请完成以下步骤。

  1. 在控制台中,单击 菜单 图标 "菜单" 图标 > 资源列表
  2. 从服务列表中,选择 Secrets Manager的实例。
  3. 密钥 表中,打开要下载的证书的溢出菜单。
  4. 单击下载。 证书文件将下载到本地系统。

从 CLI 检索私钥

在实例中存储私钥后,您可能需要检索其值,以便可以连接到外部应用程序或获取对受保护服务的访问权。 您可以使用 Secrets Manager CLI 插件来检索私钥的值。

要获取私钥的值以及查看其详细信息 (例如到期日期和轮换时间间隔或状态),请运行 ibmcloud secrets-manager secret 命令。

ibmcloud secrets-manager secret --id SECRET_ID

此命令将输出私钥的值以及其他元数据。 有关命令选项的更多信息,请参阅 ibmcloud secrets-manager secret

您还可以使用其名称来获取私钥:

ibmcloud secrets-manager secret-by-name --secret-type SECRET_TYPE --name SECRET_NAME --secret-group-name SECRET_GROUP_NAME

您可以使用 --secret-types--match-all-labels 可选标志进一步过滤检索的私钥。

下载证书

使用证书时,可能需要使用 CLI 将证书的有效内容下载到 pem 文件中。 为此,可以使用 Secrets Manager CLI 插件和 jq

要将证书存储到 pem 文件中,请运行 ibmcloud secrets-manager secret 命令。

ibmcloud secrets-manager secret --id=SECRET_ID | jq -r '.certificate' | sed 's/\\n/\n/g' > my-cert-file.pem

该命令输出证书的值并将其存储到 my-cert-file.pem。 有关命令选项的更多信息,请参阅 ibmcloud secrets-manager secret

使用私钥标识通过 API 检索私钥

在实例中存储私钥后,您可能需要检索其值,以便可以连接到外部应用程序或获取对受保护服务的访问权。 您可以使用 Secrets Manager API 来检索私钥的值。

以下示例请求检索私钥及其详细信息,例如到期日期和轮换时间间隔或状态。 调用 API 时,请将标识变量和 IAM 令牌替换为特定于 Secrets Manager 实例的值。

curl -X GET
    -H "Authorization: Bearer {iam_token}" \
    -H "Accept: application/json" \
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{secret_ID}"

成功响应将返回私钥的值以及其他元数据。 有关必需和可选请求参数的更多信息,请参阅 获取私钥

您可以使用 ?secret_types?match_all_labels 可选参数进一步过滤检索的私钥。

使用私钥名称通过 API 检索私钥

您还可以通过引用私钥的名称 (而不是标识) 来检索私钥的值:

curl -X GET
    -H "Authorization: Bearer {iam_token}" \
    -H "Accept: application/json" \
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secret_groups/{secret_group_name}/secret_types/{secret_type}/secrets/{secert_name}"

请注意,您需要指定私钥的 namesecret group namesecret_type

您可以使用 ?secret_types?match_all_labels 可选参数进一步过滤检索的私钥。

检索包含二进制数据的任意私钥

如果使用二进制文件 (例如图像) 创建了任意私钥,那么服务会使用 base64 编码将数据存储为 base64 编码的字符串。 要访问原始形式的密文,您需要完成几个额外步骤,对检索到的密文进行 base64 解码。

首先,通过调用 Secrets Manager API 来检索私钥。 以下示例使用 cURL 和 jq 来收集私钥的 payload 值。

export ARBITRARY_SECRET=`curl -X GET  
    -H "Authorization: Bearer $IAM_TOKEN" \
    -H "Accept: application/json"
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/arbitrary/{id}" | jq --raw-output '.payload | sub(".*,"; "")'`

如果检查 $ARBITRARY_SECRET 的内容,将看到 base64 编码的数据。 以下片段显示了示例输出。

echo $ARBITRARY_SECRET
eUdB68klDSrzSKgWcQS5...(truncated)

要以原始格式 (二进制文件) 查看私钥,可以使用 base64 解码。 以下示例使用 base64 macOS 实用程序对 $ARBITRARY_SECRET 内容进行 base64 解码。

echo $ARBITRARY_SECRET | base64 --decode > my-secret.png

数据将转换回可以从本地计算机打开的二进制文件。

下载证书的先前版本

轮换证书后,可以使用 Secrets Manager API 以编程方式访问其先前版本。

下面的请求示例检索了一个秘密及其内容。 调用 API 时,请将标识变量和 IAM 令牌替换为特定于 Secrets Manager 实例的值。

curl -X GET  
   --header "Authorization: Bearer {iam_token}" \
   --header "Accept: application/json" \
   "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{id}/versions/previous"