IBM Cloud Docs
在工具链中使用秘密集成

在工具链中使用秘密集成

工具链设置和管道用户界面提供的机密管理功能可通过使用 IBM Cloud® Secrets Manager, IBM® Key Protect 或 HashiCorp Vault 的机密集成来选择保险库机密。 通过使用机密选取器对话框,工具链或管道编辑器可从绑定的机密集成中选取命名的机密,该集成可通过 按 CRN(云资源名称)或 按名称配置,然后在运行时在工具链和管道中通过引用解析。 选择秘密后,CRN 或规范秘密引用会被注入相应的工具链或管道安全属性中,如果是配置了 由 CRN 提供 的 Secrets Manager 集成,则格式为 crn:v1:...secret:<secret-guid> ;如果是使用任何支持的提供商并配置了 按姓名 的保险库集成,则格式为 {vault::integration-name.secret-name}

规范 by name 引用格式目前无法解析在密文名称中包含句点字符的密文,因为该字符用于分隔规范路径的每个部分。

无论使用哪种类型的秘密引用(by CRNby name),前端用户界面组件和秘密选取对话框都只使用秘密引用。 by CRNby name 秘密引用的解析值永远不会暴露给前端,并且总是在运行时根据允许的 授权(通过使用 IAM 授权和访问策略进行配置)在工具链和管道中动态解析。

在 IBM Cloud® 中,解析工具链和管道中 由 CRN 提供按姓名 秘密引用的动态过程,是通过使用内部虚拟专用端点 (VPE) 到所有区域中的所有 IBM Cloud® Secrets Manager 和 IBM® Key Protect 提供商实例来执行的。 这可确保工具链、管道和 IBM Cloud® Secrets Manager 与 IBM® Key Protect 提供商实例之间的所有请求和响应数据都保存在边界内的私有 IBM Cloud 网络中,不会通过任何公共网络通道传输。

除了从工具链中任何绑定的秘密集成中逐一手动选择所选秘密外,还可使用 Secret Hint 选项。 通过该选项,可以在工具链模板中预定义建议的秘密名称(也称为 Hints),这些名称是简短的秘密参考。 秘密提示的格式是 {vault::secret-name},其中不包括秘密集成名称。 这为工具链作者提供了灵活性,因为所有需要的秘密名称都可以预先填充到 toolchain.yml 中,然后这些名称会自动根据为工具链配置的任何秘密集成进行解析。

如前所述,您可以配置 Secrets Manager 以引用秘密 按 CRN。 更多信息,请参阅 云资源名称(CRN)。 这种格式具有更大的灵活性,因为如果有正确的 授权,您可以在不同的账户中引用 Secrets Manager 实例中的秘密。 有关详细信息,请参阅 配置 Secrets Manager

Hint 是一个建议的默认名称,它会自动与绑定到工具链的任何可用 根据名称 秘密集成中第一个匹配的同名秘密进行解析。

DevSecOps 管道机密

CI 和 CD 中使用的秘密概述如下:

DevSecOps秘密
私钥 提示 信息
IBM Cloud API 密钥 ibmcloud-api-key 需要:CI & CD 用于验证 IBM公共云并执行各种操作
GPG 私钥 signing_key 需要:仅限传播和信息 这是用于签署 CI 管道构建的图像的证书
IBM 私有 Worker 服务 API 密钥 private-worker-service-api-key 需要:仅限传播和信息 服务 ID API 密钥 用于在 Tekton 私有 Worker 服务上运行交付管道工作负载
GitHub 访问令牌 git-token 可选:CI & CD 用于与 GitHub 进行身份验证,并提供对存储库的访问权限
Artifactory API 标记 artifactory-token 需要:CI & CD 用于访问管道任务使用的图像
Slack 网络钩子 slack-webhook 可选:CI & CD 如果您选择使用 Slack 工具集成来发布工具链状态通知,则需要此 Webhook
ServiceNow API 令牌 servicenow-api-token 需要:仅光盘 用于访问 Service Now 以进行变更管理操作
HashiCorp保险库角色 ID role-id 需要:CI & CD 用于验证 HashiCorp Vault 服务器
HashiCorp保险库秘密 ID secret-id 需要:CI & CD 用于验证 HashiCorp Vault 服务器
IBM Cloud Object Storage 作家 API 密钥 cos-api-key 必需:CI & CD 用于验证 Object Storage 服务 - 此密钥必须具有 writer 权限
SonarQube 密码或验证令牌 sonarqube-password 可选:CI 用于验证SonarQube源代码分析器

如果使用 HashiCorp Vault 服务器,请确保 HashiCorp Vault 工具集成使用 AppRole Auth Method 方法。 使用 AppRole 身份验证方法时,需要 role-idsecret-id 才能成功将 HashiCorp Vault 服务器与工具链集成。 由于 role-idsecret-id 本身就是机密,因此建议使用 IBM Key Protect 工具集成来存储它们,以便在工具链工作流中安全地检索和应用它们。 所有其他工具链机密都应通过使用 HashiCorp Vault 工具集成来存储和检索。

如果未设置管道环境属性 git-token,则默认使用 ibmcloud-api-key 来检索 Git Repos and Issue Tracking 访问令牌。 但是,如果 ibmcloud-api-key 无法访问 git,则必须设置 git-token

配置秘密存储

通过IBM Cloud,您可以选择各种机密管理和数据保护产品,帮助您保护敏感数据并集中管理机密。 您可以根据自己的要求选择保险库集成,详见 管理 IBM Cloud 秘密。 本文档提供了有关先决条件的信息,以及如何使用规定的秘密名称列表(也称为提示)。 通过在模板中使用提示,工具链可以自动填充预配置的机密,而无需从附加到工具链的各种保险库集成中手动选择。

使用 IBM Cloud® Secrets Manager 安全地存储和应用 API 密钥、图像签名或作为工具链一部分的 HashiCorp Vault 凭据等秘密。

Secrets Manager工具集成表单
IBM Secrets Manager工具集成

这些模板还与 HashiCorp Vault 工具集成,如下面的示例:

HashiCorpVault 工具集成表单,带必填字段和示例值 '
'HashiCorpVault 工具集成

要使用 HashiCorp Vault,您必须提供以下信息:

名称
该工具集成的名称。 该名称会显示在工具链中。
服务器 URL
您的 HashiCorp 保管库实例的服务器 URL。 例如,https://<vault-service>.<org>.com:8200
整合 URL
当您点击 HashiCorp 保险库集成磁贴时,您想要导航到的 URL。
秘密之路
HashiCorp Vault 实例中存储秘密的挂载路径。
认证方法
HashiCorp Vault 实例的验证方法。 使用 AppRole
角色标识
标识符,用于选择AppRole,并据此评估其他凭证。
私钥标识
默认情况下,任何登录都需要的凭证(带 secret_id),并应始终保持机密性。

模板还集成了 IBM® Key Protect for IBM Cloud® 工具:

![Key Protect工具集成表单,包含必填字段和示例值 "](images/kp-int.png ""Key Protect工具集成表单,包含必填字段和示例值 "")

如果事先将 role idsecret id 存储在 Key Protect 中,则可以在工具卡中选择包含这些秘密的 Key Protect 实例,如图 2 所示。 完成后,您可以单击 HashiCorp Vault 工具卡中 role idsecret id 字段上的按键图标,然后使用拾取器将秘密应用到这些字段。

同样,工具链中使用的任何其他秘密都有一个附加到文本字段的密钥图标。 您可以使用相同的拾取器控件,将 HashiCorp Vault 秘密应用到所有剩余实例。