Jenkinsプラグイン
Keeper Secrets ManagerのJenkinsへの統合によるシークレットの動的な取得
機能
Jenkinsを使用して、Keeperボルトからシークレットを取得します。
Jenkins FreestyleプロジェクトまたはJenkins PipelineプロジェクトとKeeperシークレットマネージャーを連携して使用します。
Keeperボルトからファイルを取得します。
Keeperシークレットマネージャー機能の完全なリストについては、概要をご参照ください。
要件
この統合を利用するには、以下が必要となります。。。
Keeperシークレットマネージャーへのアクセス (詳細についてはクイックスタートガイドのページをご参照ください)
Keeperアカウントでシークレットマネージャーのアドオンが有効である
シークレットマネージャー強制適用ポリシーが有効になっているロールのメンバーシップ
シークレットを共有するKeeperシークレットマネージャーアプリケーション
アプリケーションの作成手順については、クイックスタートガイドをご参照ください
このプラグインではSecureRandomを使用しており、エントロピーが少なすぎるために一部のシステムで速度が低下する可能性があります。
Linuxでは、cat /proc/sys/kernel/random/entropy_avail
を実行すると、利用可能なエントロピーが表示されます。200未満の場合は、エントロピーを生成するためにrng-tools
のようなソフトウェアが必要になります。
概説
Keeperシークレットマネージャー用のJenkinsプラグインを使用すると、Keeperボルトからシークレットを取得し、ビルドパイプラインおよびワークフローパイプライン内の環境変数またはファイルに値を格納できます。
インストール
Keeperシークレットプラグインは、Jenkinsで利用できるプラグインのリストから選んでインストールできます。Jenkins内で、[Manage Jenkins] (Jenkinsの管理) -> [Manage Plugins] (プラグインの管理) -> [Available] (インストール可能) に移動します。検索バーを使用して「Keeper Secrets Manager」を検索し、プラグインを見つけます。[Install] (インストール) チェックボックスをオンにして、インストールボタンをクリックします。Jenkinsをすぐに再起動するか、後にしてインストールを完了するかを選択できます。Jenkinsを再起動すると、プラグインが使用できるようになります。
Keeperシークレットマネージャープラグインのベータ版がインストールされている場合は、まずそれを削除する必要があります。[Manage Jenkins] (Jenkinsの管理) -> [Manage Plugins] (プラグインの管理) -> [Installed] (インストール済み) のタブで、[Uninstall] (アンインストール) ボタンをクリックします。すでにインストールされている場合は、[Available] (インストール可能) タブには表示されません。
ソースコード
GitHubリポジトリでKeeper Secrets Manager Jenkinsプラグインのソースコードを検索します。
シークレットマネージャークライアントの作成
まだの場合は、クイックスタートガイドをご参照の上、Jenkins専用のシークレットマネージャーアプリケーションとクライアントデバイスを作成してください。
Keeperコマンダーを使用して、Jenkins用のクライアントデバイスを生成します。ワンタイムアクセストークンをメモします。
デフォルトでは、クライアントデバイスはワンタイムアクセストークンを使用する最初のIPアドレスに固定されます。Jenkinsサーバーに複数の外部IPアドレスが設定されている可能性がある場合は、ワンタイムアクセストークンを生成するときに--unlock-ip
パラメータを追加してください。
シークレットマネージャーアプリケーションおよびクライアントの作成の詳細については、Secrets Managerコマンドのページをご参照ください。
Jenkinsにクレデンシャルを追加
プラグインを使用する最初の手順は、ワンタイムアクセストークンからJenkinsのクレデンシャルを作成することです。
Jenkins内で、[Manage Jenkins] (Jenkinsの管理) > [Manage Credentials] (クレデンシャルの管理) > [Scope] (スコープ) > [Add Credentials] (クレデンシャルの追加) に移動し、[Kind] (種類) のドロップダウンで[Keeper Secrets Manager]を選択します。以下のようなフォームが表示されます。
クレデンシャルがJenkinsの他の領域で見つけやすくなるように、クレデンシャルの[Description] (説明) を設定します。
ワンタイムアクセストークンをフォームフィールドに貼り付けて保存します。
初回接続
クレデンシャルを保存すると、JenkinsサーバーがKeeperシークレットマネージャーサービスに接続し、ワンタイムアクセストークンを初期化します。続いて、以降のリクエストに備えて、必要な暗号化鍵とクライアント識別子をJenkins内に格納します。この時点で、ワンタイムアクセストークンフィールドは消去されます。
ワンタイムアクセストークンの初期化に問題があった場合は、エラーメッセージがフィールドに表示されます。Jenkinsのクレデンシャルは、エラーがない状態になるまで使用できません。新しいワンタイムアクセストークンを作成して、クレデンシャルの既存の情報を置き換えることができます。コマンダーを使用して新たなトークンを作成し、それを[Token] (トークン) フィールドに貼り付けてて保存します。
クライアントID、秘密鍵、アプリキーは閲覧できなくなります。[Replace Keys...] (鍵の置換) ボタンをクリックすると、既存の設定から鍵を置き換えることができます。
[Replace] (置換) ボタンをクリックすると、既存の設定からJenkinsに値をカットアンドペーストできます。次に、[Validate Credential] (クレデンシャルの検証) ボタンをクリックして、IDと鍵を検証できます。
使用例: フリースタイルプロジェクト
フリースタイルプロジェクトの場合、環境変数の挿入はビルドステップを介して行われます。
[Add build step] (ビルドステップの追加) ドロップダウンで、[Keeper Secrets Manager]を選択します。
[Credential] (クレデンシャル) ドロップダウンで、前の手順で作成したKeeperシークレットマネージャーのクレデンシャルを選択します。
Keeper表記法を使用すると、環境変数はKeeperボルト内のレコードから一致する値に自動的に置き換えられます。Keeperボルト内のシークレットに含まれるログイン、パスワード、カスタムフィールド、ファイル名など、任意のフィールドを参照できます。
次に、シークレットの代入先を選択します。シークレットは、ビルドのワークスペース内の環境変数またはファイルに格納できます。
ビルドステップに複数の環境変数を追加するには、[Add Secret] (シークレットの追加) をクリックし、環境変数と表記法のフィールドに値を入力します。
Keeper表記法
Keeper表記法を使用して、シークレットとして使用するレコードフィールドを選択します。Keeper表記法では以下の形式を使用します。
keeper://<レコードUID>/field/<フィールド名>
ここで、「レコードUID」は、フィールドとしてシークレットのクレデンシャルを含むレコードのUIDであり、「フィールド名」は、クレデンシャルが「パスワード」などとして格納されるフィールドです。
例: keeper://3FXqmP5nFKwju0H8pl0DmQ/field/password
レコードUIDは、Keeperコマンダーまたはウェブボルトユーザーインターフェース内で確認できます。
シークレットの使用
設定された環境変数は、以下のビルドステップで使用できます。Keeper Secrets Managerステップを新たに追加し、別のアカウントまたはアプリケーションからシークレットを選択することもできます。
環境変数は、シェルの実行ステップで使用および表示できます。以下に例を示します。
上記では、環境変数MY_LOGINはアプリケーションmy_appにパラメータとして渡されますが、echo命令文はコンソールに「****」というテキストを出力します。テキストベースのシークレットは、コンソールで自動的に編集されます。
使用例: パイプライン連携 (ワークフロー)
Keeperシークレットマネージャープラグインでは、以下のようにwithKsm
ラベルの付いたステップを使用するJenkinsfileファイル内で使用できます。
Keeperシークレットマネージャーのスニペットは、Jenkins内のパイプライン構文スニペット生成ツールを使用して作成できます。[Sample Step] (サンプルステップ) ドロップダウンから[withKsm]を選択して、Keeperシークレットマネージャーアプリケーションを追加します。これでクレデンシャルを選択してシークレットを追加できるようになります。
アプリケーション、クレデンシャル、シークレットの設定が完了したら、[Generate Pipeline Script] (パイプラインスクリプトの生成) をクリックしてwithKsmブロックを生成できます。これで、このスニペットをJenkinsfileに追加できます。
シークレットを含む環境変数は、それらが定義されているwithKsmブロック内でのみアクセスできます。ブロックを終了すると、シークレットにアクセスできなくなります。
最終更新