Jenkins: расшифровка всех паролей в credentials.xml (через консоль выполнения Jenkins) - PullRequest
0 голосов
/ 08 мая 2019

Как расшифровать все учетные данные в Jenkins credentials.xml, используя консоль Jenkins, оптом?

Я могу сделать это один секрет за раз, используя этот фрагмент groovy:

node {
    def creds

    stage('Sandbox') {
        withCredentials([string(credentialsId: 'VAC_USER',variable: 'C_PASS')]) {
            creds = "\nUser: ${C_USER}\nPassword: ${C_PASS}\n"
        }

        println creds
    }
}

Однако я знаю Groovy как 0, и не совсем понятно, как распечатать весь файл учетных данных, расшифрованный так, чтобы каждый расшифрованный пароль показывался рядом с его идентификатором.

1 Ответ

0 голосов
/ 08 мая 2019

В моем случае решение состояло в том, чтобы запустить отличный код извлечения через терминал Jenkins (при условии, что у вас есть права администратора).

Приведенный ниже код извлекает основную часть учетных данных, настроенных в Jenkins (имя пользователя + пароли, ssh-ключи, секретные тексты), и может быть расширена на другие виды секретов в хранилище учетных данных:

def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
    com.cloudbees.plugins.credentials.common.StandardUsernameCredentials.class,
    Jenkins.instance,
    null,
    null
);

//SSH-Secrets

for (c in creds) {
     println( ( c.properties.privateKeySource ? "ID: " + c.id + ", UserName: " + c.username + ", Private Key: " + c.getPrivateKey() : ""))
}

//Username+Password Combination

for (c in creds) {
     println( ( c.properties.password ? "ID: " + c.id + ", UserName: " + c.username + ", Password: " + c.password : ""))
}

//Secret Text
def creds2 = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
    com.cloudbees.plugins.credentials.common.StandardCredentials.class,
    Jenkins.instance,
    null,
    null
);

//Secret Strings
for (c in creds2) {
     println( ( c.properties.secret ? " ID: " + c.id + " DESCRIPTION: " + c.description +  " SECRET: " + c.secret : ""))
}
...