在Jenkins机器上存储密码和access_keys / secret_keys的最简单方法是什么?

时间:2018-08-13 22:22:35

标签: security jenkins

在Jenkins机器上存储密码,SSH私钥和AWS access_keys / secret_keys的最简单方法是什么?

我已将所有密码从Git存储库中移出,但是现在已经提供了一些access_keys / secret_keys作为环境变量,以便管道仍然可以使用。

我正在寻找一种简单,简单,不太复杂的解决方案,该解决方案将为我们提供一种存储机密的基本安全性,它比将密码保存为环境变量更安全。

2 个答案:

答案 0 :(得分:0)

您可以定义以下类型的凭据:

  • “秘密”
  • “带密码的用户名”;和
  • “ SSH用户名和私钥”

请确保将“ ID”和“描述”字段设置为“易于阅读”。

一旦定义了这些内容,就可以通过Jenkinsfile这样的安全方式对其进行访问:

“带密码的用户名”类型凭据

withCredentials([usernamePassword(credentialsId: "<human-readable CredID>", passwordVariable: 'p_password', usernameVariable: 'p_username')]) { //do something useful with "${p_username}" and "${p_password}" }

这是获取Jenkins凭证并将其组件即时放入命名环境变量中的过程,这些变量又可以在withCredentials子句中引用和使用。

答案 1 :(得分:0)

您可以使用凭据插件将凭据存储在Jenkins中。有了此插件后,您应该能够在Jenkins中添加以下类型的凭据,并在管道中使用凭据ID:

credential types


示例和用法:

  • 具有密码类型的用户名

    enter image description here

pipeline {
    agent any
    environment{
        SOME_CREDS = credentials('some_cred_id')
        //Credential can directly be used in the url ex:
        PYPI = "https://${SOME_CREDS}@artifactory.com/artifactory/api/pypi/PyPi/simple"
    }
    stages {
        stage('Init') {
            steps {
                script{
                     //User and password env variables will be populated automatically:
                     println "user: ${env.SOME_CREDS_USR}"
                     println "pass: ${env.SOME_CREDS_PSW}"
                }
            }
        }
    }
}  
  • 带有私钥的SSH用户名

    另一种使用凭据的方法是使用sshagent(但凭据ID必须为“ 带私钥的SSH用户名”, “ 已安装SSH代理插件”)。例如:

    enter image description here

script {
    sshagent(['some_cred_id']) {
        sh(script: 'git fetch origin master')
    }
}