JenkinsでVault SSH OTPバックエンドを使用する


8

シークレットを保存するようにVaultを設定しています。OTP認証を使用したSSHバックエンドは、アクセス用のSSHキーの管理を停止するための良い方法のように見えます。

SSHバックエンドが機能していて、JenkinsをSSH-OTP認証で接続して、展開キーも削除できるようにしています。

Vault用のJenkinsプラグインを確認しましたが、Vaultからシークレットを取得する場合にのみ機能します。

この目的のためのプラグインまたはJenkinsのハッキングはありますか。それ以外の場合は、独自のプラグインを作成することはできますか?

:現在、JenkinsはSSHキーを使用しています。キーの使用を排除し、デプロイのためにホストにSSHで接続する必要があるたびにVaultからSSH OTPを取得するようにJenkinsを構成します。


何がうまくいかないのか説明してもらえますか?
030

1
略語を使用する場合は、最初に定義してください。とりあえず、OTPについて話すときは、ワンタイムSSHパスワードを意味していると思います。読んだドキュメントへのリンクを質問に追加することもできます。
030

問題を解決したかどうかを教えていただけますか?
030

回答:


1

Vault用のJenkinsプラグインを確認しましたが、Vaultからシークレットを取得する場合にのみ機能します。

それは、現在の構成がアプリのデプロイにどのように使用されるかによって異なります。

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

Jenkinsパイプラインを使用する場合、keyIdを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'
  }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.