Sử dụng phụ trợ Vault SSH OTP với Jenkins


8

Tôi đang thiết lập Vault để lưu trữ bí mật. Phần cuối SSH với OTP auth có vẻ như là một cách tốt để ngừng quản lý các khóa SSH để truy cập.

Tôi có chương trình phụ trợ SSH hoạt động và đang tìm cách kết nối Jenkins với auth SSH-OTP để tôi cũng có thể xóa các khóa triển khai.

Tôi đã xem các plugin của Jenkins cho vault, nhưng chúng chỉ hoạt động để lấy các bí mật từ Vault.

Có plugin hay bất kỳ hack nào của Jenkins cho mục đích này không, hoặc nếu không, có thể viết một cái của riêng tôi không?

Lưu ý : Ngay bây giờ, Jenkins sử dụng các khóa SSH. Tôi muốn loại bỏ việc sử dụng các khóa và định cấu hình Jenkins để nhận SSH OTP từ Vault mỗi khi nó cần SSH vào một số máy chủ để triển khai.


Bạn có thể giải thích những gì không hoạt động?
030

1
Nếu bạn sử dụng chữ viết tắt, vui lòng xác định chúng lần đầu tiên. Trong lúc này, tôi cho rằng bạn có nghĩa là Mật khẩu SSH một lần khi bạn nói về OTP. Bạn cũng có thể thêm các liên kết tài liệu bạn đã đọc vào câu hỏi.
030

Bạn có thể cho biết liệu bạn đã giải quyết vấn đề?
030

Câu trả lời:


1

Tôi đã xem các plugin của Jenkins cho vault, nhưng chúng chỉ hoạt động để lấy các bí mật từ Vault.

Nó phụ thuộc vào cách cấu hình hiện tại trông giống như được sử dụng để triển khai các ứng dụng.

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

Nếu một người sử dụng các đường ống Jenkins, thì người ta có thể thay thế keyId bằng một đường dẫn được xác định trong hầm 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'
  }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.