使用 HashiCorp Vault 插件从 jenkins 管道中的 HashiCorp Vault 检索机密

问题描述 投票:0回答:2

我已经在 Jenkins 和 Vault 之间设置了连接,并使用“withVault”方法 https://www.jenkins.io/doc/pipeline/steps/hashicorp-vault-plugin/#hashicorp-vault-plugin

我正在詹金斯管道中从 Vault 检索 Vault 机密。 Secret 存储在环境变量 github_token 中,然后用于形成管道中访问 git 的 URL。检索秘密是有效的,问题是 $github_token 变量包含星号。

我需要它包含令牌的实际价值

def secrets = [
    [path: 'ddci/data/test', engineVersion: 2, secretValues: [
        [envVar: 'github_token', vaultKey: 'token']
  ]]     
]

def configuration = [vaultUrl: 'https://vault.tools.sap/',
                     vaultNamespace: 's4',
                     vaultCredentialId: 'hashicorp_vault',
                     skipSslVerification: true,
                     engineVersion: 2]

管道{ 任何代理

stages{  
stage('use token to authenticate GITHub') { 
    steps {
  withVault([configuration: configuration, vaultSecrets: secrets]) {
    sh 'git_url= https://username:${github_token}@github.tools.sap/AZURE-PIPELINES-SYSDEV/decdev-ci-verification'
    git url: '$git_url', branch: 'master'
    
    }
   }
  }
 }
}

jenkins jenkins-pipeline jenkins-plugins hashicorp-vault
2个回答
1
投票

$github_token 变量不包含星号,Jenkins 在控制台上使用星号显示任何 Vault 密钥,以保护真实值。

如果您想检查 $github_token 值,请将其写入工作区中的文件,执行如下操作:

echo $github_token > token.txt

其他一些问题是阻止您访问 GitHub 服务器(令牌是否正确?路径是否正确?Jenkins 节点是否可以访问 GitHub?)。登录 Jenkins 节点并尝试手动执行相同的命令。


0
投票

根据您发布的屏幕截图,似乎“找不到”URL 资源。这意味着 HTTP 状态代码为 404。

确保您的服务器 URL 正确,并且服务器配置为处理动态生成的 URL - 令牌可能每次都会不同,当然,除非您使用某种缓存机制并且脚本中有一些刷新令牌部分。 就我个人而言,我会使用一次性令牌(OTP),但是当然,这取决于您的安全要求。 祝你好运。

© www.soinside.com 2019 - 2024. All rights reserved.