Use o back-end do SSH OTP do Vault com Jenkins


8

Estou configurando o Vault para armazenar segredos. O back-end SSH com autenticação OTP parece uma boa maneira de parar de gerenciar chaves SSH para acesso.

Eu tenho o back-end do SSH funcionando e pretendo conectar o Jenkins à autenticação SSH-OTP para poder remover também as chaves de implantação.

Eu olhei os plugins Jenkins para o Vault, mas eles só funcionam para buscar segredos do Vault.

Existem plugins ou hacks Jenkins para esse fim ou, se não, é possível escrever um dos meus?

Nota : No momento, Jenkins usa chaves SSH. Desejo eliminar o uso de chaves e configurar o Jenkins para obter um SSH OTP do Vault toda vez que for necessário fazer o SSH em algum host para uma implantação.


Você poderia explicar o que não funciona?
030

1
Se você usar abreviações, defina-as pela primeira vez. Enquanto isso, suponho que você queira dizer Senha SSH de uso único ao falar sobre OTP. Você também pode adicionar links de documentação que você leu à pergunta.
030

Você poderia indicar se resolveu o problema?
030

Respostas:


1

Eu olhei os plugins Jenkins para o Vault, mas eles só funcionam para buscar segredos do Vault.

Depende da aparência da configuração atual usada para implantar aplicativos.

https://github.com/jenkinsci/hashicorp-vault-plugin

Se alguém usar pipelines Jenkins, poderá substituir o keyId pelo definido no Hashicorp Vault.

node {
  // define the secrets and the env variables
  def secrets = [
      [$class: 'VaultSecret', path: 'secret/testing', secretValues: [
          [$class: 'VaultSecretValue', envVar: 'testing', vaultKey: 'value_one'],
          [$class: 'VaultSecretValue', envVar: 'testing_again', vaultKey: 'value_two']]],
      [$class: 'VaultSecret', path: 'secret/another_test', secretValues: [
          [$class: 'VaultSecretValue', envVar: 'another_test', vaultKey: 'value']]]
  ]

  // optional configuration, if you do not provide this the next higher configuration
  // (e.g. folder or global) will be used
  def configuration = [$class: 'VaultConfiguration',
                       vaultUrl: 'http://my-very-other-vault-url.com',
                       vaultCredentialId: 'my-vault-cred-id']

  // inside this block your credentials will be available as env variables
  wrap([$class: 'VaultBuildWrapper', configuration: configuration, vaultSecrets: secrets]) {
      sh 'echo $testing'
      sh 'echo $testing_again'
      sh 'echo $another_test'
  }
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.