Gunakan backend SSH OTP OTP dengan Jenkins


8

Saya menyiapkan Vault untuk menyimpan rahasia. Backend SSH dengan OTP auth sepertinya cara yang baik untuk berhenti mengelola kunci SSH untuk akses.

Saya memiliki backend SSH yang berfungsi, dan saya sedang mencari cara untuk menghubungkan Jenkins dengan auth SSH-OTP sehingga saya dapat menghapus kunci penyebaran juga.

Saya melihat plugin Jenkins untuk vault, tetapi mereka hanya bekerja untuk mengambil rahasia dari Vault.

Apakah ada plugin atau hacks Jenkins untuk tujuan ini, atau jika tidak, apakah mungkin untuk menulis salah satu dari saya sendiri?

Catatan : Saat ini, Jenkins menggunakan kunci SSH. Saya ingin menghilangkan penggunaan kunci, dan mengkonfigurasi Jenkins untuk mendapatkan SSH OTP dari Vault setiap kali perlu SSH ke beberapa host untuk digunakan.


Bisakah Anda menjelaskan apa yang tidak berhasil?
030

1
Jika Anda menggunakan singkatan, silakan tentukan pertama kali. Sementara itu, saya berasumsi bahwa yang Anda maksud adalah Kata Sandi SSH Satu Kali ketika Anda berbicara tentang OTP. Anda juga dapat menambahkan tautan dokumentasi yang telah Anda baca ke pertanyaan.
030

Bisakah Anda menunjukkan apakah Anda telah menyelesaikan masalah?
030

Jawaban:


1

Saya melihat plugin Jenkins untuk vault, tetapi mereka hanya bekerja untuk mengambil rahasia dari Vault.

Tergantung bagaimana konfigurasi saat ini terlihat seperti yang digunakan untuk menggunakan aplikasi.

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

Jika seseorang menggunakan jaringan pipa Jenkins, maka seseorang bisa mengganti keyId dengan yang didefinisikan dalam kubah Hashicorp.

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'
  }
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.