Docker Writerイメージ
シークレットを取得するための汎用Dockerイメージ
概要
KSM用のDocker Writerイメージは、シークレットファイルをダウンロードし、シークレットを含むファイルを生成できるイメージです。
以下のコマンドでイメージを取得できます。
$ docker pull keeper/keeper-secrets-manager-writer実行時は、パラメータを環境変数で渡します。
$ docker run \
-v $PWD:/wd --workdir /wd \
-e "KSM_CONFIG=BASE64 CONFIG" \
-e "SECRETS=JfXpSQ2nZG6lkdl1rxB0dg/file/example.crt > file:example.crt"
keeper/keeper-secrets-manager-writerパラメータ
パラメータは環境変数としてコンテナに渡します。
KSM_CONFIG
Base64でエンコードされた設定ファイル
SECRETS
Keeper表記法と代入先の改行区切りのリスト
SECRETS_FILE
ファイル以外のシークレットを書き込むファイル名
SECRETS_FILE_TYPE
シークレットファイルの形式。有効な形式はexport、setenv、set、JSON。デフォルトはJSON
CLEANUP_FILE
設定時、作成ファイルを削除用シェルスクリプトに追加。実行で一括削除可能
シークレットリスト
SECRETS は、Keeper表記法と代入先のリストです。値は改行で区切られています。以下に例を示します。
各行は「Keeper表記法 > 代入先」です。代入先には、環境変数/JSONキーまたはファイルのパスと名前を指定できます。ファイルの場合、パスの先頭に file: を付けます。文字列エンコーディングが不明なため、バイナリデータを環境変数に格納しないことをお勧めします。
シークレットファイルの形式
シークレットファイルには、環境変数 SECRETS の値が格納されます。ファイル形式は SECRETS_FILE_TYPE の値に基づいています。タイプには以下の値を指定できます。
json: JSON形式で格納される値
export: BASHシェルで一般的に使用されるエクスポートコマンドとして格納される値
setenv: Cシェルで一般的に使用されるsetenvコマンドとして格納される値
set: Cシェルで一般的に使用されるsetコマンドとして格納される値
シェルに関連するタイプを読み込んで、シークレットを環境変数に格納できます。
例
KSM用のDocker Writerイメージは、多くのアプリケーションで使用できます。いくつかの例を紹介します。
Kubernetes
ライターイメージは、Initコンテナで使用するのが最適です。
このコンテナでは、ライターイメージでファイルを保存し、メインコンテナがアクセスできるシークレットファイルを作成します。ボリュームをマウントしてファイルを書き込み、メインコンテナに同じボリュームをマウントします。PodのemptyDirが適しています。
Docker Compose
mainサービスで depends_on オプションを使用すると、KSM用のDocker Writerイメージを初期化サービスで使用できます。以下の例では、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が含まれてしまいます。
最終更新

