Dockerイメージ
コンテナ化された環境での環境変数置換の使用
最終更新
コンテナ化された環境での環境変数置換の使用
最終更新
KeeperボルトのシークレットのクレデンシャルをDockerイメージに渡します
ビルド引数を指定し、Keeperボルトのシークレットのクレデンシャルを使用して、Dockerイメージをビルドします
KeeperボルトからDockerコンテナにファイルをコピーします
Keeper Secrets Manager機能の完全なリストについては、概要をご参照ください。
このページでは、Secrets ManagerとDockerイメージのビルドアクションとの連携について説明します。 この連携を利用するための必要条件は以下のとおりです。
Keeper Secrets Managerへのアクセス(詳細は、クイックスタートガイドをご参照ください)
KeeperアカウントのSecrets Managerアドオンの有効化
Secrets Manager強制ポリシーが有効化されたロールを割り当てられたメンバーシップ
シークレットを共有するKeeper Secrets Managerアプリケーション
アプリケーションの作成手順については、クイックスタートガイドをご参照ください
Keeper Secrets Manager(KSM)CLIツール
KSM CLIの設定手順については、こちらをご参照ください
Secrets Manager CLIは、実行時にDockerイメージからシークレットを取得するために使用することも、Dockerイメージに組み込んで使用することもできます。このドキュメントでは、いくつかのユースケースについて説明します。
Keeperボルトのシークレットは、Docker BuildKitを使用してDockerコンテナに埋め込めます。Docker 18.09以降のイメージのビルドでは、マウントされたファイルシステムを使用して、シークレットを渡す機能がサポートされています。この機能を示す簡単な例として、Keeper Secrets Managerから取得したユーザー名とパスワードを使用して、マウント先イメージにユーザーアカウントを作成することにしましょう。
手順 1: 必要なシークレットにKeeper表記法を使用して環境変数を設定します。表記法の詳細については、こちらをご参照ください。
手順 2: ksm exec
コマンドを使用すると、2つのシークレット (ログインとパスワード) でDockerビルドが作成されます。 --secret
パラメータは、Keeperシークレットで置き換えられた環境変数から値を取得します。
手順 3: dockerfileでは、useradd
を使用してLinuxユーザーアカウントを作成し、chpasswd
でパスワードを設定します。このDockerファイルは以下のとおりです。
この例では、各シークレットはファイルとしてマウントされます。「dst」値でシークレットを一時的に格納したい場所を指定します。RUNコマンドが終了すると、一時ファイルは削除され、アンマウントされます。ファイル名を引数として渡すか、この例では、cat $(/path/to/secret)
を使用してファイルの内容を変数に読み込みます。
例1と同様に、--build-arg
を使用して、シークレットを渡すことができます。この例では、Dockerのビルドプロセスでシークレットを使用する機能も示します。
手順 1: 必要なシークレットにKeeper表記法を使用して、環境変数を設定します。表記法の詳細は、こちらをご参照ください。
手順 2: ksm exec
コマンドを使用すると、2つのシークレット (ログインとパスワード) でDockerビルドが作成されます。 --inline
フラグは、シークレットの置換を処理します。以下に例を示します。
手順 3: dockerfileでは、useradd
を使用してLinuxユーザーアカウントを作成し、chpasswd
でパスワードを設定します。このDockerファイルは以下のとおりです。
printenv
コマンドでシークレットが標準出力に送信されないようにするには、--null
オプションを使用して改行を削除します。
この例では、docker-composeを使用してイメージをビルドします。Docker-composeは環境変数からビルド引数を読み込めません。表記をシークレット値に置き換えるには、コマンドラインでビルド引数を設定する必要があります。表記をコマンドラインで使用するため、--inline置換フラグを設定する必要があります。
手順 1: 単純なdocker-compose.yaml
ファイルを作成します。
手順 2: ksm exec
コマンドを使用すると、2つのシークレット (ログインとパスワード) でDockerビルドが作成されます。 --inline
フラグは、シークレットの置換を処理します。以下に例を示します。
手順 3: dockerfileでは、useradd
を使用してLinuxユーザーアカウントを作成し、chpasswd
でパスワードを設定します。このDockerファイルは以下のとおりです。
printenv
コマンドでシークレットが標準出力に送信されないようにするには、--null
オプションを使用して改行を削除します。
この実際の例では、SSL証明書とパスフレーズをKeeperボルトからTomcatコンテナにコピーします。
デフォルトでは、公式のTomcat dockerには、SSLが有効になっていないデフォルトのサーバー設定が含まれています。server.xmlをインストールし、キーストアファイルをコピーして、SSLを有効にするカスタムイメージをビルドすることになります。server.xmlファイルには、キーストアファイルのシークレットのパスフレーズも含まれています。
手順1:Keeper Secretの記録を作成
以下に示すように、Keeperボルトでserver.xml
とlocalhost-rsa.jks
の2つのファイル添付を含むシークレットの記録を作成します。
情報ダイアログに表示された、dockerfileで使用するUID記録をメモします。UID記録(Record UID)をクリックして、クリップボードにコピーします。
手順 2: dockerfileを作成
以下のdockerfileの例では、server.xmlファイルとkeystoreファイルをボルトからTomcatフォルダにコピーします。
このユースケースでは、ksm
はビルド後に不要になるため、削除します。
手順 3: dockerビルドを実行するシェルスクリプトを作成
docker buildを実行するには、以下のスクリプトでSecrets Managerのデバイス設定と、シークレットファイルを含むUID記録を渡します。
Dockerイメージがビルドされると、Keeperボルトが管理するSSL、キーストアファイル、パスフレーズが完全に設定されます。
Keeper Secrets Managerは、KSM Writer Dockerイメージを使用したDocker Composeとの直接連携をサポートしています。
KSM Writer Dockerイメージの詳細は、こちらをご参照ください。
このページに貢献できる素晴らしい例をお持ちであれば、Slackでメッセージを送信するか、またはメールでお知らせくださいsm@keepersecurity.com。