IBM Cloud Docs
配置 Secrets Manager

配置 Secrets Manager

IBM Cloud® Secrets Manager 可帮助您在 IBM Cloud 服务中安全地存储和应用应用程序的私钥。

私钥 是提供对敏感信息 (例如 API 密钥) 的访问权的任何内容。 您可以使用 Secrets Manager 工具集成在工具链工作流程中需要私钥的任何位置访问私钥。

在配置 Secrets Manager 工具集成之前,请确保 供应 Secrets Manager 服务的实例

您可以配置 Secrets Manager 工具集成,以通过名称或 云资源名称(CRN) 来识别私钥。

按名称标识私钥

配置 Secrets Manager 工具集成以按名称标识私钥时,工具链可以访问以下私钥类型:

  • Identity and Access Management (IAM) 凭证私钥。
  • 存储在 Secrets Manager中的任意私钥。
  • 键值私钥。

目前,通过名称引用秘密无法解析秘密名称中包含句号字符的秘密,因为该字符用于分隔规范路径的每个部分。

有关 Secrets Manager中的 IAM 凭证私钥,任意私钥和密钥值私钥的更多信息,请参阅 使用不同类型的私钥

配置 Secrets Manager 以安全地管理属于工具链的私钥:

  1. 如果您在创建工具链时配置此工具集成,请在“可配置的集成”部分中,单击 Secrets Manager。 如果 Secrets Manager 定义为可选工具集成,那么它位于 更多工具下。 选择通过服务实例名称来标识此实例。 要在工具链与 Secrets Manager 服务实例之间创建授权,请从 授权类型 下拉列表中选择 为此工具链创建授权 选项。 这将授予工具链对存储在 Secrets Manager 服务实例中的私钥材料的访问权。

  2. 如果您有一个工具链并要将此工具集成添加到其中,请从IBM Cloud控制台单击菜单图标汉堡包图标>平台自动化>工具链。 在“工具链”页面,单击工具链打开其“概述”页面。 或者,在应用程序的“概述”页面的Continuous Delivery卡片上,单击“查看工具链”。 然后,单击概述

    a. 单击添加工具

    b. 在“工具集成”部分中,单击 Secrets Manager

  3. 指定要在工具链中使用的 Secrets Manager 工具集成实例的名称。 您指定的名称将在选择 Secrets Manager 私钥的 UI 工具中使用。 它还用作在工具链运行时解析私钥值的引用的一部分。 此实例名称还显示在工具链工作空间中的 Secrets Manager 工具集成磁贴上。

  4. 选择通过服务实例名称来标识此实例。

  5. 查看 区域资源组 的缺省值,并根据需要进行更新。

  6. 选择要使用的 Secrets Manager 服务的实例。

  7. 要在工具链与 Secrets Manager 服务实例之间创建授权,请单击 创建授权 按钮。 这将授予工具链对存储在 Secrets Manager 服务实例中的私钥材料的访问权。

  8. 单击创建集成

应用私钥

配置 Secrets Manager 工具集成后,您可以使用它在工具链所需的任何位置应用私钥。 此工具集成和“私钥”对话框支持任意私钥类型和 IAM 凭证私钥类型。

您可以使用任意私钥来存储任何预定义的私钥值,或者使用“私钥”对话框来动态存储已生成的 IBM Cloud API 密钥。 必须直接在 Secrets Manager 服务实例中创建 IAM 凭证私钥。 创建这些私钥后,可以通过在任何安全字段上使用“私钥”对话框,选择 IAM 凭证私钥以在工具链中使用这些私钥。 “私钥”对话框显示任意私钥类型和 IAM 凭证私钥类型,将私钥类型追加到私钥名称的方括号中。

使用存储在 Secrets Manager 中的任意私钥

必须在 Secrets Manager 中保存第三方私钥 (例如 Slack Webhook 或 Artifactory API 令牌),才能创建新的工具链。 在使用“私钥”对话框处理工具链时,可以将 IBM管理的私钥 (例如 IBM Cloud API 密钥) 作为任意私钥类型存储在 Secrets Manager中。 但是,必须先在 Secrets Manager 中直接删除 IAM 凭证私钥,然后才能使用“私钥”对话框在工具链中选择这些私钥类型。

以下示例将存储在 Secrets Manager 中的任意私钥类型应用于 Delivery Pipeline 工具集成 所需的 IBM Cloud API 密钥。 您可以遵循相同的步骤将私钥应用于需要私钥值的任何 Continuous Delivery 工具集成。

  1. 单击密钥图标以从安全商店 (例如,IBM Cloud API 密钥的 Secrets Manager ) 中检索密钥。

  2. 提供者 字段中,指定用于管理工具链私钥的 Secrets Manager 工具集成的提供者和名称。 例如,要使用 Secrets Manager 工具集成,请选择 Secrets Manager: ibm-secrets-manager-1。 您可以使用其他提供程序来管理工具链私钥,例如 HashiCorp VaultKey Protect

  3. 选择私钥组和私钥名称,然后单击 确定 以将存储的私钥应用于与其关联的字段。

    对保险库的秘密引用
    的秘密引用*

    您选择的私钥的名称将以胶囊形式显示。 您无法内联编辑私钥名称,但可以单击 除去图标 以删除该名称。 您还可以通过再次选择私钥名称来替换现有私钥名称。 如果手动输入私钥名称或将其粘贴到“私钥”字段中,那么将以不同的格式显示该私钥名称:

    字面秘密值
    秘密
    *

    显示私钥的格式指示值是引用存储在后端保险库文件中的私钥还是存储在工具链中的私钥。 通过使用对密钥提供程序 (例如 Secrets Manager) 管理的私钥的引用,私钥值将集中并安全地存储在单个位置。 此方法可解决私钥蔓延和扩散问题,这意味着您可以在不更新工具链的情况下更新私钥。 使用私钥引用时,通过从 Secrets Manager动态检索工具链运行时,将解析实际私钥值。 当您必须定期轮换工具链私钥的值时,此方法很有用。

使用 IAM 凭证私钥

IAM 凭证密钥类型与 IAM 完全集成。Secrets Manager 自动管理与 IAM 凭证私钥关联的动态服务标识和 API 密钥。Continuous Delivery 和 Secrets Manager 服务 API 用于解析 Continuous Delivery 工具链和管道工作负载中的授权 IAM 凭证私钥引用。

在 Secrets Manager中创建 IAM 凭证私钥时,请确保选中 在租赁到期之前复用 IAM 凭证 复选框。 另外,在使用公共工作程序代理程序来运行管道时,请指定至少为 12 小时的租赁持续时间。 如果使用专用工作程序代理程序,请确保将最小租赁持续时间设置为管道的强制取消持续时间。 建议您与帐户管理员确认这些设置。 通过设置复用选项和适当的租赁持续时间,您可以确保动态管理的 IAM 凭证服务标识 API 密钥在管道运行期间持续存在。

IAM 凭据租用期限和重复使用 API 密钥*
凭据租用期限和重复使用 API 密钥* IAM 凭据租用期限和重复使用 API

通过从 Secrets Manager 仪表板对 IAM 凭证运行“旋转”操作,可以维护 Continuous Delivery 管道所使用的 API 密钥旋转的合规性态势需求。Secrets Manager 使用 IAM 为 IAM 凭证私钥生成新的 API 密钥,并管理私钥的版本控制。

IAM 凭证私钥类型还有助于在私钥轮换期间和之后提供服务的连续性:

  • 新的 Continuous Delivery 管道工作负载使用新轮换的 API 密钥,直到其租赁持续时间到期为止。
  • 使用在轮换之前发出的 API 密钥运行的现有 Continuous Delivery 管道工作负载可以继续使用先前版本运行,直到先前版本的租赁持续时间到期为止。

IAM 全权证书秘密轮换
IAM 全权证书秘密
* IAM 全权证书秘密轮换

有关 Secrets Manager中 IAM 凭证私钥类型的更多信息,请参阅 创建 IAM 凭证

使用键值私钥

您可以通过在“私钥”对话框中从密钥值私钥中选择单个密钥来选择要在工具链中使用的密钥值私钥。 或者,您可以选择完整的私钥。

  1. 单击密钥图标以从安全商店 (例如,IBM Cloud API 密钥的 Secrets Manager ) 中检索密钥。

  2. 提供者 字段中,指定用于管理工具链私钥的 Secrets Manager 工具集成的提供者和名称。 例如,要使用 Secrets Manager 工具集成,请选择 Secrets Manager: ibm-secrets-manager-1。 您可以使用其他提供程序来管理工具链私钥,例如 HashiCorp VaultKey Protect

  3. 选择私钥组和私钥名称以将存储的私钥应用于与其关联的字段。 可选: 选择密钥。 单击确定。 您选择的私钥的名称将以胶囊形式显示。 您无法内联编辑私钥名称,但可以单击 除去图标 以删除该名称。 您还可以通过再次选择私钥名称来替换现有私钥名称。 如果手动在“私钥”字段中输入或粘贴私钥名称,那么将以不同的格式显示该私钥名称。

将 Secrets Manager 工具集成添加到工具链模板

您可以通过向模板存储库中的 toolchain.yaml 文件添加服务定义,将 Secrets Manager 工具集成添加到工具链模板。 此文件是工具链的设计蓝图,包含根据该模板创建工具链实例时可用的所有工具集成。 要定制现有工具链模板以包含 Secrets Manager 工具集成,请插入 YAML 定义。

  sm-compliance-secrets:
    service_id: secretsmanager
    parameters:
      name: sm-compliance-secrets
      instance-id-type: instance-name
      region: us-south
      resource-group: default
      instance-name: ffs-secrets
      setup-authorization-type: create

通过 CRN 识别私钥

配置 Secrets Manager 工具集成以通过 CRN 识别私钥时,工具链可以访问存储在 Secrets Manager中的任意,键值和 IAM 凭证私钥。 有关 Secrets Manager中不同类型的私钥的更多信息,请参阅 使用不同类型的私钥。 只能将整个密钥值私钥用于 CRN 私钥,而不能使用个别密钥。

配置 Secrets Manager 以安全地管理属于工具链的私钥:

  1. 如果您在创建工具链时配置此工具集成,请在“可配置的集成”部分中,单击 Secrets Manager。 如果 Secrets Manager 定义为可选工具集成,那么它位于 更多工具下。 选择通过服务实例 CRN 来标识此实例。 要在工具链与 Secrets Manager 服务实例之间创建授权,请从 授权类型 下拉列表中选择 为此工具链创建授权 选项。 这将授予工具链对存储在 Secrets Manager 服务实例中的私钥材料的访问权。

  2. 如果您有一个工具链并要将此工具集成添加到其中,请从IBM Cloud控制台单击菜单图标汉堡包图标>平台自动化>工具链。 在“工具链”页面,单击工具链打开其“概述”页面。 或者,在应用程序的“概述”页面的Continuous Delivery卡片上,单击“查看工具链”。 然后,单击概述

    a. 单击添加工具

    b. 在“工具集成”部分中,单击 Secrets Manager

  3. 指定要在工具链中使用的 Secrets Manager 工具集成实例的名称。

  4. 选择通过服务实例 CRN 来标识此实例。

  5. 指定存储私钥的 Secrets Manager 服务实例的 CRN。 如果工具链 有权访问该帐户中的私钥,那么此服务实例可以存在于其他帐户中。

  6. 要在工具链与 Secrets Manager 服务实例之间创建授权,请单击 创建授权 按钮。 这将授予工具链对存储在 Secrets Manager 服务实例中的私钥材料的访问权。

  7. 单击创建集成

应用私钥

在配置 Secrets Manager 工具集成并 授权工具链 访问该帐户中的私钥之后,您可以使用它在工具链所需的任何位置应用私钥。

您可以使用以下任一方法来选择要在工具链中使用的 CRN 私钥:

  • 从 Secrets Manager 服务实例复制私钥的 CRN,并将其粘贴到私钥字段的编辑框中。 私钥必须位于您将 Secrets Manager 工具集成添加到工具链时配置的 Secrets Manager 服务实例中。

  • 使用“私钥”对话框。 有关如何使用此方法的信息,请参阅 按名称标识私钥

    选择 CRN 密钥时,请确保从 提供者 选项中选择 CRN 配置的工具卡。

显示包含 CRN 私钥的字段时,Secrets Manager 工具集成会尝试检索私钥的名称。 要打开密钥所在的 Secrets Manager 服务实例,请单击该密钥。 在以下场景中,无法检索私钥名称并显示警告图标:

  • 工具链未包含正确配置的 Secrets Manager 集成。
  • 工具链授权不正确。
  • 字段不包含有效的 CRN。

授权工具链访问私钥

在工具链运行时,将动态解析对存储在 Secrets Manager 中的私钥的引用。 要访问必需的私钥,必须授权工具链访问 Secrets Manager 实例。 如果要根据模板创建工具链,请在配置 Secrets Manager 集成时使用 授权类型 下拉列表。 如果要将 Secrets Manager 集成添加到现有工具链,请使用 创建授权 按钮。

要在 IBM Cloud中查看授权,请完成以下步骤:

  1. 从IBM Cloud控制台,单击管理>访问 (IAM)

  2. 点击授权

    您还可以在“管理权限”页面上访问权限。

    如果需要,您可以手动创建授权。 要成功解析私钥引用,工具链实例必须对正确的 Secrets Manager 服务实例具有 ViewerSecretsReader 访问权。

    当 Secrets Manager 通过 CRN 识别私钥的工具集成配置为访问其他帐户中的私钥时,必须在存在 Secrets Manager 服务实例的帐户中创建授权。

使用 API 配置 Secrets Manager

当您 创建读取更新 工具集成时,Secrets Manager 工具集成支持可用于 工具链 HTTP API 和 SDK 的以下配置参数。

必须在请求主体中使用 secretsmanager 值指定 tool_type_id 属性。

Secrets Manager工具集成参数
参数 用途 Type Terraform 自变量 描述
名称 必需,可更新 字符串 名称 此工具集成的名称。 基于名称的私钥引用包含此名称以标识私钥所在的私钥存储库。 集成到工具链中的所有私钥存储工具都必须具有唯一名称,才能使私钥解析正常工作。
实例标识类型 必需,可更新 枚举 instance_id_type 服务实例标识的类型。 可接受的值为 instance-nameinstance-crn。 默认情况下,该值设置为 "instance-name
实例-crn 必需,可更新 字符串 实例 (instance_crn) Secrets Manager 服务实例的 CRN。 仅当使用 instance-crn 作为 instance_id_type 时,才会使用此参数。
区域 必需,可更新 字符串 位置 Secrets Manager 服务实例所在的 IBM Cloud 位置。 仅当使用 instance-name 作为 instance_id_type 时,才会使用此参数。
资源组 必需,可更新 字符串 resource_group_name Secrets Manager 服务实例所在的资源组的名称。 仅当使用 instance-name 作为 instance_id_type 时,才会使用此参数。
实例名称 必需,可更新 字符串 instance_name Secrets Manager服务实例的名称。 仅当使用 instance-name 作为 instance_id_type 时,才会使用此参数。

了解有关Secrets Manager的更多信息

要了解有关 Secrets Manager的更多信息,请参阅 Secrets Manager