GitLab
KeeperシークレットマネージャーのGitLabへの統合によるシークレットの動的な取得

機能
GitLab Pipeline内でKeeperボルトからシークレットを取得
ビルド引数または環境変数としてシークレット認証情報を設定
Keeperボルトからセキュリティで保護されたファイルをコピー
Keeperシークレットマネージャーの機能一覧については、概要をご参照ください。
前提条件
本ページでは、シークレットマネージャーとGitLabの連携について取り扱います。本連携を利用するには、以下が必要です。
Keeperシークレットマネージャーへのアクセス(クイックスタートガイドをご参照ください)
Keeperのサブスクリプションでシークレットマネージャーアドオンが有効になっていること
シークレットマネージャーポリシーが有効なロールに所属していること
シークレットが共有されているKeeperシークレットマネージャーアプリケーション
アプリケーションの作成手順については、クイックスタートガイドをご参照ください
初期化済みのKeeperシークレットマネージャー構成
GitLab連携では、JSON形式とBase64形式の構成を使用できます
パイプライン作成権限を持つGitLabアカウント
GitLab PipelineジョブにPython 3がインストールされていること
概説
この連携では、Keeperからシークレットを安全に取得し、環境変数やファイルなど、GitLab Pipelineの目的の保存先に配置します。
設定
構成をシークレット変数として保存
GitLab連携を利用するには、Keeperシークレットマネージャー構成が必要です。
1) Keeperシークレットマネージャー構成を作成します。詳細はドキュメントをご参照ください。GitLab連携はBase64とJSON形式の構成に対応しています。
2) GitLabに構成を保存するには、[GitLab Settings] -> CI/CD -> Variablesに移動します。

3) 新しい変数を作成します。キーには任意の変数名を設定できます(KSM_CONFIG を変数名にすると、シークレットマネージャーSDKが構成を自動認識できます)。値にはBase64またはJSON形式のシークレットマネージャー構成を設定します。
KSM_CONFIG を変数名にすると、シークレットマネージャーSDKが構成変数を自動認識できます

変数を作成すると、以下のようにGitLab変数一覧に表示されます。

KeeperシークレットマネージャーとGitLabの連携設定が完了しました
使用方法
シークレットマネージャー用にパイプラインを準備
GitLabでKeeperシークレットマネージャーを使用するには、まずPyPIレジストリからインストールします。before_script セクションに以下の行を追加します。
シークレットマネージャー構成の変数名を KSM_CONFIG にしていない場合は、before_script セクションで以下のように設定します。
シークレットを取得
GitLabジョブ内で、以下の形式を使用してKeeperボルトからシークレットを取得します。
上記のコマンドはKSM CLIツールを使用し、Keeper表記法でシークレットを取得します。
シークレットを取得したら、環境変数またはファイルとして設定できます。
環境変数としてシークレットを設定
- export <VARIABLE NAME>=$(ksm secret notation <KEEPER NOTATION>) を使用して、シークレットを環境変数に設定します。
例:
以下のジョブは、パスワードシークレットを MY_PWD という環境変数に、カスタム isbncode フィールドを MY_ISBNCODE という環境変数に設定します。
上記の例の XXX をレコードUIDに置き換えます。
Keeperシークレットマネージャーは、すべてのジョブステージで使用できます。この例では build ステージを使用します。
シークレットからファイルを作成
- ksm secret download -u <UID> --name <SECRET FILENAME> --file-output "<OUTPUT FILENAME>" を使用して、Keeperボルトからファイルを取得し、GitLab Pipelineジョブに保存します。
例:
以下のジョブは、Keeperレコードに添付された mykey.pub ファイルを取得し、ローカルの /tmp フォルダに mykey.pub として保存します。
上記の例の XXX をレコードUIDに置き換えます。
Keeperシークレットマネージャーは、すべてのジョブステージで使用できます。この例では build ステージを使用します。
完全な例
以下の例は、この連携で利用可能なすべての機能を示しています。
上記の例の XXX をレコードUIDに置き換えます。
最終更新

