Jenkins用PAM360プラグイン

Jenkinsは、ソフトウェアプロジェクトを継続的に構築およびテストするためDevOps 環境で広く使用されている、Javaベースの主要なオープンソースオートメーションツールです。ソフトウェアの構築、テスト、配信またはデプロイに関連する SDLC タスクは、[ジョブ]という名称の自動化スケジュールとして作成できます。これらの[ジョブ]の実行には、多くの場合、ユーザーの認証情報や、特権パスワード、API キー、他のシステムやサービスと接続するためのアクセス トークンなどの同様の機密情報が必要です。ほとんどの DevOps 環境では、このような認証情報は Jenkins サーバーのプレーン テキスト ファイル内に保存されるため、セキュリティと管理に関する多くの問題が発生する可能性があります。

Jenkinsでシークレット管理用に開発されたPAM360プラグインで、組織のDevOpsパイプラインのセキュリティを高めることができます。プラグインがJenkinsで有効になると、スクリプトファイルにプレインテキストで埋め込まれるのではなく、ジョブが実行されるごとに、必要な認証情報がPAM360の保管庫から取り込まれるようになります。安全に取得すると、ビルドのアクティブ化のためにリモート サーバーに接続するなど、認証情報を環境変数で使用できます。また、このプラグインにより、ユーザーは、更新があるたびにスクリプト ファイル内のパスワードを手動で更新するという面倒な作業から解放されます。スクリプト ファイル内のパスワードが古いために、ユーザーがターゲット アプリケーションまたはサーバーからロックアウトされ、ジョブを実行できない場合がよくあります。これで、PAM360に保存された認証情報で、ローテーションされ、各リモートデバイスで更新も行われ、ジョブの実行中、最新のパスワードのみ保管庫から取り込まれることになります。現在、このプラグインはジョブ レベルでのシークレット管理、つまりフリースタイル プロジェクト ジョブに使用できます。

Jenkinsでのシークレット管理用PAM360プラグインの使用方法は、詳細をお読みください:

  1. Jenkins連携をPAM360で有効化
  2. PAM360プラグインをJenkinsにインストールおよび有効化
  3. Jenkinsのフリースタイルプロジェクトジョブ用にパスワードをPAM360から取り込む
  4. 利用可能なPAM360属性のリスト

1.Jenkins連携をPAM360で有効化

  1. PAM360にログインし、[管理〛>>[DevSecOps〛>>[CI/CDプラットフォーム連携〛の順に移動します。
  2. AUTHトークン: 「生成」をクリックすると、認証トークンが自動的に生成されます。これは、後で Jenkins のコンソールでプラグインを構成するときに必要になります。セットアップが完了したら、Jenkinsからのすべての着信接続は、認証トークンを使って、PAM360に認証されます。
    jenkins
  3. ユーザー名: ここで、アカウントがJenkinsにより自動的に使用され、PAM360のVaultから必要なパスワードを安全に取り込むアクティブPAM360ユーザーのユーザー名を入力します。

    メモ:

    指定するユーザー アカウントに、このワークフローに必要な最小限の権限 (Jenkins が接続する必要があるリソースのパスワードを表示/取得する権限) があることを確認してください。

  4. [有効にする]をクリックします。

    メモ:

    Jenkins には複数のインスタンスがある可能性があるため、Jenkins 要求に対してホスト名のチェックは無効になります。

2.PAM360プラグインをJenkinsにインストールおよび有効化

Jenkins のコンソールで実行される次のアクションには、ツールのプラグインを管理する権限を持つユーザー役割が必要です。

2.1 JenkinsでPAM360プラグインのインストール

  1. 初めに、Jenkins用のPAM360プラグインをこちらからダウンロードします。

    メモ:

    ファイルをダウンロードする際にSHA256値を確認してください — SHA256 Checksum: 91f9392d4b2b8f03f400118a3bb443702665dd69c0f799ecb1ce1fce0e068faa

  2. Jenkins のコンソールを開き、[Manage Jenkins] >> [Manage Plugins] >> [Advanced]に移動します。
  3. [Upload Plugin] セクションで、プラグイン ファイルをアップロードします。
  4. また、Jenkinsには、接続の確立中、PAM360インストールのSSL証明書も必要です。したがって、SSL 証明書を Jenkins のキーストアに追加する必要があります。以下のコマンドを使用して SSL 証明書を追加します:
    keytool -import -trustcacerts -keystore <<PATH_TO_JENKINS_JAVA_KEYSTORE>> -alias <<ALIAS_NAME>> -import <<PATH_TO_PAM360_SSL_CERTIFICATE>>
  5. インストール後、Jenkins サーバーを再起動して変更を適用します。

2.2 Jenkinsでプラグインを有効化

  1. [Manage Jenkins] >> [Configure System] に移動します。
  2. 取り込まれるUIで、 PAM360プラグインセクションにスクロールダウンして特定します。
    1. PAM360 URL: URLをPAM360インスタンスに、形式https://<hostname>:<portnumber>で入力します
    2. PAM360 AUTH Token: ここで、PAM360のインターフェイスで先に生成された認証トークンをコピーして貼り付けます。プラグイン構成とパスワード取り込みが正常に行われるには、PAM360とJenkinsの両方の認証トークンは常に一致する必要がありますので、注意してください。
    3. 変更をSaveして、PAM360プラグインをJenkinsで有効化して使用を開始します。

3.Jenkinsのフリースタイルプロジェクトジョブ用にパスワードをPAM360から取り込む

現在、プラグインは、PAM360からJenkinsのフリースタイルプロジェクトジョブ用に必要な認証情報を取り込むのに使用できます。これには、ジョブ構成中にリソース名、アカウント名、およびパスワード等、各種のPAM360属性の追加が必要です。ジョブレベルでのこの属性構成時、これらのPAM360属性の値は、ジョブ実行中、「環境変数」として利用できます。JenkinsがPAM360に接続され、個別パスワードを取り込むとき、環境変数は、前者が後者の必要値を識別する方法になります。以下に、関連するアクションを段階的に説明します:

  1. 個別フリースタイルプロジェクトジョブを作成したら、「Build Environment」セクションにそのジョブのPAM360プラグインを使用するオプションがあります。
  2. [Manage credentials with PAM360 Plugin]の横のチェックボックスを有効にして、[Add an Account]をクリックします。
  3. Resource NameAccount Nameフィールドで、JenkinsがPAM360から取り込むリソースとアカウントの各名前を指定します。
    jenkins2
  4. 次の手順では、JenkinsがPAM360から必要値を取り込むのに使う変数・属性ペアを作成します。ペアを作成するには、初めに、下に与えられた利用可能なPAM360属性のリストを参照し、PAM360 Attributeフィールドで必要な属性を指定します。次に、対応するPAM360属性の値が自動的に割り当てられるEnvironment Variable,に、必要な名前を追加します。
  5. [Add a variable/attribute pair]をクリックし、すべてのPAM360属性を同様な形で含め、続いて、その構成を保存します。これで、プラグインを Jenkins で使用できるようになりました。

4.Jenkinsで利用可能なPAM360属性のリスト

Jenkinsでは、以下のPAM360属性を使用できます:

  • RESOURCE_NAME
  • RESOURCE_DESCRIPTION
  • OPERATINGSYSTEM
  • DNSNAME
  • DEPARTMENT
  • LOCATION
  • RESOURCE_URL
  • ACCOUNTNAME
  • NOTES
  • PASSWORD
  • ファイルベースの追加フィールドを除く、リソースレベルおよびアカウントレベルの追加フィールド