Jenkins凭证管理(下)

2021-06-03 18:04:11 浏览数 (1)

四.优雅使用凭证

上面写法比较啰嗦,为了解决这个问题,声明式pipeline提供了credentials helper方法(只能在environment中使用)来简化凭证的使用。

通过credentials helper方法,我们可以像使用环境变量一样使用凭证。 但遗憾的是,credentials helper方法只支持Secret text、Username with password、Secret file三种凭证。

保密文本

  1. environment {
  2.     AWS_ACCESS_KEY_ID = credentials('aws-secret-key-id')
  3.     AWS_SECRET_ACCESS_KEY = credentials('aws-secret-access-key')
  4. }

AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY使我们预先定义的凭证ID。creden-tials方法将凭证赋值给变量后,就可以正常使用了。如 echo “${AWS_ACCESS_KEY_ID}”

账号密码

  1. environment {
  2.     BITBUCKET_CREDS = credentials('jenkins-bitbucket-creds')
  3. }

与Secret text不同的是,我们需要通过BITBUCKET CREDS USR拿到用户名的值,通过BITBUCKET CREDS PSW拿到密码的值。而变量BITBUCKET CREDS的值则是一个字符串,格式为:<用户名>:<密码>

保密文件

  1. environment {
  2.     KNOWN_HOSTS = credentials('known_hosts')
  3. }

五.凭证插件

如果觉得Jenkins的凭证管理功能太弱,无法满足你的需求,则可以考虑使用HashiCorp Vault。

HashiCorp Vault是一款对敏感信息进行存储,并进行访问控制的工具。敏感信息指的是密码、token、秘钥等。它不仅可以存储敏感信息,还具有滚动更新、审计等功能。

集成HashiCorp Vault

1.安装HashiCorp Vault插件

2.添加Vault Token凭证

3.配置插件

pipeline

HashiCorp Vault插件并没有提供pipeline步骤,提供此步骤的是Hashicorp Vault Pipeline插件。但是它依赖的是2.138.1或以上的版本

如果你的Jenkins版本较低,但又想用这个插件。可以将该插件的源码下载到本地,将pom.xml的Jenkins。version值改成你的Jenkins版本。然后运行mvn clean package进行编译打包。若没有报错,则找到target/hashicorp-vault-pipeline.hpi进行手动安装

首先我们使用vault命令向vault服务写入私密数据以方便测试:vault write secret/hello value=word

  1. pipeline {
  2.     agent any
  3.     environment {
  4.         SECRET = vault path: 'secret/hello', key:'value'
  5. }
  6.     stages {
  7.         stage("read vault key") {
  8.             steps {
  9.                 script{
  10.                     def x = vault path: 'secret/hello', key:'value'
  11.                     echo "${x}"
  12.                     echo "${SECRET}"
  13. }
  14. }
  15. }
  16. }
  17. }

我们可以在environment和steps中使用vault步骤。推荐在environment中使用

  • path 存储键值对的路径
  • key 存储内容的键
  • vaultUrl(可选),vault服务地址
  • credentialsld(可选),vault服务认证的凭证。

如果不填vaultUrl与credentialsld参数,则使用系统级别的配置

0 人点赞