IBM Cloud Docs
与保险库文件 Jenkins 插件集成

与保险库文件 Jenkins 插件集成

是否已使用保险库文件 Jenkins 插件? 您可以将此工具与 IBM Cloud® Secrets Manager 集成,以最大程度地减少设置中的更改。

准备工作

  1. 请确保您具有必需的访问级别。 您需要 SecretsReader 服务角色才能查看私钥。
  2. 使用具有 SecretsReader 许可权的服务标识来创建 IAM API 密钥。

设置保险库文件 Jenkins 插件集成

通过执行以下步骤,可以将 Secrets Manager 与您在 Jenkins 作业或项目中使用的插件集成。 有关 Jenkins 插件的更多信息,请参阅 Hashicorp Vault

  1. 在 Jenkins 仪表板中,选择要在其中使用插件的作业或项目。
  2. 单击配置部分中的 构建环境
  3. 选择 保险库插件
  4. 凭证认证类型 字段中选择 保险库令牌凭证
  5. 令牌 字段创建占位符值 (例如,temp)。
  6. 设置标识 (例如,sm-vault-token)。
  7. 单击添加
  8. 保险库 URL 字段中,指向 Secrets Manager 实例的 URL。
  9. 单击 高级 以显示 前缀路径
  10. 前缀路径 设置为 ibmcloud/kv
  11. 确保 K/V 引擎版本2

更新插件的保险库文件令牌

您可以将 vault-refresh 作业配置为定期运行,以便在保险库令牌到期之前刷新该令牌。

  1. 创建定期重复的作业以刷新令牌。 令牌使用 Jenkins CLI 命令 update-credentials-by-xml 来更新您在 设置 部分的步骤 2 中定义为占位符值的令牌凭证的值。

  2. 例如,创建名为 vault-refresh 的 Jenkins 作业。

  3. 构建环境 部分中,添加私钥名称作为 私钥文本 变量。 建议您根据服务标识生成 API 密钥。 向服务标识分配读取使用 Jenkins 插件处理的私钥所需的最低访问权。

  4. 构建步骤 部分中,添加 执行 Shell 并输入以下脚本。

    wget YOUR-TAAS-JENKINS-INSTANCE-NAME.swg-devops.com/jnlpJars/jenkins-cli.jar
    export IAM_TOKEN=$(curl -X POST 'https://iam.cloud.ibm.com/identity/token' -H 'Content-Type: application/x-www-form-urlencoded' -d "grant_type=urn:ibm:params:oauth:grant-type:apikey&apikey=${IAM_API_KEY}" | jq --raw-output '.access_token')
    export NEW_VAULT_TOKEN=$(curl -X PUT -H "X-Vault-Request: true" -d "{\"token\":\"${IAM_TOKEN}\"}" ${VAULT_ADDR}/v1/auth/ibmcloud/login | jq --raw-output '.auth.client_token')
    
    printf "<com.datapipe.jenkins.vault.credentials.VaultTokenCredential plugin=\"hashicorp-vault-plugin@3.8.0\"><scope>GLOBAL</scope><id>sm-vault-token</id><description>Vault token for Secrets Manager</description><token>$NEW_VAULT_TOKEN</token></com.datapipe.jenkins.vault.credentials.VaultTokenCredential>" > creds.xml
    java -jar jenkins-cli.jar -s https://YOUR-TAAS-JENKINS-INSTANCE-NAME.swg-devops.com/ -auth <Jenkins user>:<user token> update-credentials-by-xml system::system::jenkins '(global)' sm-vault-token < creds.xml
    

    Jenkins user 表示用于运行 Jenkins 自动化的用户或 FID。user token 是属于用户的令牌。 要获取 Jenkins API 密钥或令牌,请单击用户名并选择 配置> API 令牌> 新令牌*。

    提供与环境关联的值。 XML 中保险库文件令牌的标识与您在步骤 2 中分配的标识相同。 运行作业后,将使用实际值更新保险库文件令牌。

有关 Secrets Manager 认证和保险库文件令牌的更多信息,请参阅 保险库文件 API 参考

后续步骤

现在,您已使用保险库文件插件集成了 Jenkins 作业,您可以从 Secrets Manager 访存私钥,并像往常一样添加环境变量,而无需进行其他代码更改。