Docker Writerイメージ
シークレットを取得するための汎用Dockerイメージ
概要
Docker Writer Image for KSMは、シークレットファイルをダウンロードし、シークレットを含むファイルを生成できるイメージです。
このイメージは、次のコマンドで取得できます。
実行すると、そのパラメータが環境変数で渡されます。
このライターは、ボルトからファイルをコピーし、シークレットを含むファイルを作成するために使用されます。情報をディスクに書き込むため、漏洩のリスクが常にあります。別の手段としては、Dockerコンテナイメージとexec
コマンドがあります。
パラメータ
パラメータは、コンテナに環境変数を渡すことによって処理されます。
パラメータ | 説明 |
---|---|
| Base64でエンコードされた設定ファイル。 |
| Keeper表記法と代入先の改行区切りのリスト。 |
| ファイル以外のシークレットを書き込むファイル名。 |
| シークレットファイルの形式。有効な形式は、export、setenv、set、JSONです。デフォルトはJSONです。 |
| 設定すると、作成されたファイルがすべてシェルファイルに追加され、実行時に削除されます。このファイルを実行すると、作成されたファイルを削除できます。 |
Secretsリスト
SECRETS
は、Keeper表記法と代入先のリストです。値は改行で区切られています。以下に例を示します。
各行は、「Keeper表記法 > 代入先」になっています。代入先には、環境変数/JSONキーまたはファイルのパスと名前を指定できます。ファイルの場合、パスの先頭にfile:
テキストが付きます。文字列エンコーディングが不明なため、バイナリデータを環境変数に格納しないことをお勧めします。
Secret File Type
secretsファイルには、環境変数SECRETS
の値が格納されます。ファイル形式は、SECRETS_FILE_TYPE
の値に基づいています。タイプには以下の値を指定できます。
json - JSON形式で格納される値。
export - BASHシェルで一般的に使用されるエクスポートコマンドとして格納される値。
setenv - Cシェルで一般的に使用されるsetenvコマンドとして格納される値。
set - Cシェルで一般的に使用されるsetコマンドとして格納される値。
シェルに関連するタイプを読み込んで、シークレットを環境変数に格納できます。
例
Docker Writer Image for KSMは、多くのアプリケーションで使用できます。いくつかの例を紹介します。
Kubernetes
ライターイメージは、Initコンテナで使用するのが最適です。
このコンテナでは、ライターイメージを使用してファイルを保存し、メインコンテナがアクセスできるシークレットファイルを作成します。これを行うには、ボリュームをマウントし、ファイルを書き込み、メインコンテナに同じ値をマウントさせます。PodのemptyDirがお勧めです。
Docker Compose
mainサービスでdepends_on
オプションを使用すると、Docker Writer Image for KSMを初期化サービスで使用できます。以下の例では、Docker Writerはボルトからシークレットを取得し、ボリュームマウントでmainイメージと共有します。
通常、サービスは同時に開始されますが、depends_on
オプションを使用すると、サービスの開始を制御できます。上記では、main サービスは、initサービスに依存します。
initサービスが開始し、ファイルを取得してkeys-volumeに保存した後、終了します。service_completed_successfully
条件を使用すると、initサービスが正常終了した後、mainサービスが開始されます。また、mainサービスはkeys-volume
をマウントし、格納された鍵を使用します。
Dockerコマンドライン
ライターイメージは、docker run
を使用してコマンドラインで実行できます。
SECRETS
に複数のシークレットが設定されている場合、改行文字(\n)を表記するのは困難です。解決策は、--env,-e
値を$"で囲むことです。以下に例を示します。
file:my.pngと次のUID記録の間に「\n」があります。値全体を$''で囲まない場合、my.pngファイル名に改行コードと次のUID記録が含まれてしまいます。
最終更新