凭据简介
Jenkins在调用svn、ssh等第三方工具时需要账号密码等信息。如果在调用第三方工具时在流水线脚本中直接传递这些敏感信息,既不方便,也有安全隐患。
基于此,Jenkins可以将这些敏感信息存储为凭据,然后在项目中通过凭据ID引用,安全且便于复用。
作为Jenkins管理员,某些情况下你可能面临账号密码等信息遗失的情况,或者你压根不知道其中的某些敏感信息,例如该信息由另外的系统管理员配置。此时,由于信息已被加密,你无法通过Jenkins的凭据管理直接查看到相关信息。如果需要查看这些敏感信息,需要借助Jenkins的脚本命令行工具。
需要说明的是,Jenkins使用对称加密算法来加密字符串,不同的Jenkins安装实例使用不同的加密密钥,因此,相同的内容在不同的Jenkins实例上加密后密文并不相同。
凭据导出
Jenkins > 系统管理 > 工具和动作 > 脚本命令行
执行以下脚本可将全部凭据信息解密导出:
com.cloudbees.plugins.credentials.SystemCredentialsProvider.getInstance().getCredentials().forEach {
it.properties.each { prop, val ->
println(prop + ' = "' + val + '"')
}
println("#########################")
}
加密和解密
Jenkins的凭据信息存储于根目录的credentials.xml文件中。
可以直接取出对应账号的密文进行解密:
Jenkins > 系统管理 > 工具和动作 > 脚本命令行
加密(示例中对字符串“abcd”执行了加密):
println(hudson.util.Secret.fromString("abcd").getEncryptedValue())
解密(示例中对字符串“abcd”的密文执行了解密):
println(hudson.util.Secret.fromString("{AQAAABAAAAAQt33hpeqAVUbJtq/BDWocriigjpYDaQJOztbG/tO6JPA=}").getPlainText())