与保险库文件 Jenkins 插件集成
是否已使用保险库文件 Jenkins 插件? 您可以将此工具与 IBM Cloud® Secrets Manager 集成,以最大程度地减少设置中的更改。
准备工作
- 请确保您具有必需的访问级别。 您需要 SecretsReader 服务角色才能查看私钥。
- 使用具有
SecretsReader
许可权的服务标识来创建 IAM API 密钥。
设置保险库文件 Jenkins 插件集成
通过执行以下步骤,可以将 Secrets Manager 与您在 Jenkins 作业或项目中使用的插件集成。 有关 Jenkins 插件的更多信息,请参阅 Hashicorp Vault。
- 在 Jenkins 仪表板中,选择要在其中使用插件的作业或项目。
- 单击配置部分中的 构建环境。
- 选择 保险库插件。
- 从 凭证认证类型 字段中选择 保险库令牌凭证。
- 为 令牌 字段创建占位符值 (例如,
temp
)。 - 设置标识 (例如,
sm-vault-token
)。 - 单击添加。
- 在 保险库 URL 字段中,指向 Secrets Manager 实例的 URL。
- 单击 高级 以显示 前缀路径。
- 将 前缀路径 设置为
ibmcloud/kv
。 - 确保 K/V 引擎版本 为
2
。
更新插件的保险库文件令牌
您可以将 vault-refresh
作业配置为定期运行,以便在保险库令牌到期之前刷新该令牌。
-
创建定期重复的作业以刷新令牌。 令牌使用 Jenkins CLI 命令
update-credentials-by-xml
来更新您在 设置 部分的步骤 2 中定义为占位符值的令牌凭证的值。 -
例如,创建名为
vault-refresh
的 Jenkins 作业。 -
在 构建环境 部分中,添加私钥名称作为 私钥文本 变量。 建议您根据服务标识生成 API 密钥。 向服务标识分配读取使用 Jenkins 插件处理的私钥所需的最低访问权。
-
在 构建步骤 部分中,添加 执行 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 访存私钥,并像往常一样添加环境变量,而无需进行其他代码更改。