Dockerによるデプロイ

Dockerを使用したコマンダーのサービスモードデプロイ

Dockerによるコマンダーサービスモードのデプロイ

Dockerコンテナを利用すると、コマンダーをサービスモードでデプロイする際に必要な処理が自動化され、デバイス登録や永続ログインの設定を含めて、サービスの起動までの手順を簡略化できます。

要件

Dockerがインストールされていること

Dockerイメージの取得

最新のDockerイメージをDocker Hubから取得します。

docker pull keeper/commander:latest

イメージが取得されたことを確認します。

docker images | grep keeper/commander

認証方法

Dockerコンテナでは、次の4つの認証方法を利用できます。

1. KSM構成ファイルを使用する

Keeperシークレットマネージャー (KSM) の構成ファイルを利用して、Keeperレコードから config.json を取得する方法です。コンテナ側では次の処理が行われます。

  • マウントしたKSM構成ファイルを使用して、指定したレコードに添付されている config.json を取得する

  • 取得した構成ファイルを使用してコマンダーの認証を行う

アプローチは2種類あります。

  • KSM構成をBase64形式で渡す

  • ksm-config.json ファイルをコンテナへマウントする

2. KSMトークンを使用する

Keeperシークレットマネージャーのワンタイムアクセストークンを利用して、Keeperレコードから config.json 構成ファイルを取得する方法です。コンテナでは以下の処理が行われます。

  • 指定したKSMトークンを使用してレコードから config.json を取得する

  • 取得した構成ファイルを使用してコマンダーの認証を行う

3. 認証情報を使用する

コマンドライン引数として資格情報を直接渡す方法です。コンテナは次の処理を自動で実行します。

  • Keeperへのデバイス登録

  • 永続ログインの有効化

  • サービスの起動

4. 構成ファイルを使用する

既存のKeeper構成ファイルをコンテナにマウントして使用します。

一般的な構成ファイルの準備手順

KSM構成ファイル方式、KSMトークン方式、構成ファイル方式を利用する場合は、事前に config.json をボルトにアップロードする必要があります。ホスト環境で以下の手順を実行してください。

  1. Keeperへのログイン

  2. デバイス登録

  3. 永続ログインの有効化

  4. タイムアウトの設定

  5. 構成ファイルのアップロード ホストの .keeper ディレクトリにある config.json を見つけ、共有フォルダ内のレコードに添付ファイルとしてアップロードします。

  6. 元の構成ファイルの削除 同じデバイストークンやクローンコードを持つ構成が重複しないよう、ホスト環境の .keeper ディレクトリから config.json を削除します。

Dockerコンテナの実行

KSM構成ファイル認証を使用する場合

A. Base64形式のKSM構成を使用する

ファイルのマウントが難しい環境 (例: コンテナオーケストレーション環境) では、KSM構成をBase64エンコードした文字列として渡す方法が利用できます。

要件

KSM構成ファイル認証を使用する前に、以下を完了しておく必要があります。

  1. KSMアプリケーションをKeeperボルト内で作成する

  2. KSM構成のBase64値を生成する

  3. サービス用 config.json 構成ファイルを添付したKeeperレコードを作成する

  4. そのレコードをKSMアプリケーションと共有する

セットアップ手順

  1. KSM構成ファイルの作成

    • ボルト → [シークレットマネージャー][アプリケーション] へ移動する

    • 新しいアプリケーションを作成し、共有フォルダへのアクセス権を付与する

    • アプリケーションを選択し、[デバイス] から [デバイスを追加] をクリックする

    • 構成ファイル方式を選択し、構成タイプとして Base64 を指定する

    • 表示されたKSM構成のBase64文字列を安全な場所にコピーして保管する

Docker Composeファイル

Dockerの実行

--record パラメータには、レコードのUIDとタイトルの両方を指定できます。同じタイトルのレコードが複数存在する場合は、UIDを指定する必要があります。

B. KSM構成ファイルをコンテナ内にマウントする方法

要件

KSM構成ファイルによる認証を利用するには、次の準備が必要です。

  1. KeeperボルトでKSMアプリケーションを作成する

  2. KSM構成ファイル (ksm-config.json) を生成する

  3. サービスの config.json を添付したKeeperレコードを作成する

  4. そのレコードを作成したKSMアプリケーションと共有する

手順

1. 一般的な構成ファイル準備手順を完了する

2. KSM構成ファイルを作成する

  • ボルト → [シークレットマネージャー][アプリケーション] へ移動する

  • 新しいアプリケーションを作成し、共有フォルダへのアクセス権を付与する

  • 作成したアプリケーションを選択し、[デバイス] へ移動してから [デバイスを追加] をクリックする

  • 構成ファイル方式を選択してJSONファイルをダウンロードする

  • ダウンロードしたファイルの名前を ksm-config.json に変更する (.keeper/config.json との衝突を避けるため)

Docker Composeファイル

Dockerの実行

--record パラメータには、レコードのUIDとタイトルの両方を指定できます。同じタイトルのレコードが複数存在する場合は、UIDを指定する必要があります。

KSMトークン認証を利用する方法

要件

KSMトークン認証を利用する前に、次の準備が必要です。

  1. KeeperボルトでKSMアプリケーションを作成する

  2. 生成されたアクセス トークンを安全に保管する

  3. config.json を添付したKeeperレコードを作成する

  4. そのレコードを作成したKSMアプリケーションと共有する

手順

1. 一般的な構成ファイルの準備手順を完了する

2. KSMアクセス トークンを作成する

  1. ボルト → [シークレットマネージャー][アプリケーション] へ移動する

  2. 新しいアプリケーションを作成し、共有フォルダへのアクセス権を付与する

  3. 編集権限を付与し、アクセストークンを生成する

  4. 生成されたアクセス トークンを安全に保管する

Docker Composeファイル

コンテナの実行

--record パラメータには、レコードのUIDとタイトルの両方を指定できます。同じタイトルのレコードが複数存在する場合は、UIDを指定する必要があります。

ユーザー名/パスワード認証方式

パラメータ

  • -p, --port: サービスのポート番号

  • -c, --commands: 許可コマンドのカンマ区切りリスト

  • -f, --fileformat: 構成ファイル形式 (jsonまたはyaml)

  • --user: Keeperユーザー名

  • --password: Keeperパスワード

  • --server: Keeperサーバー (省略時は keepersecurity.com)

Docker Composeファイル

Dockerの実行

構成ファイル認証方式

要件

構成ファイル認証を利用するには、ホスト側で config.json を正しく構成しておく必要があります。

手順

  1. 構成が完了したら、ホストマシンの .keeper フォルダにある config.json を確認し、Dockerでマウントできるように、その内容を任意のパス (例: /path/to/local/config.json) にコピーする

  2. コピーが完了したら、デバイストークンやクローンコードの重複を防ぐため、ホストマシンの .keeper フォルダから元の config.json を削除する

構成ファイルをマウントして実行

Docker Composeファイル

Dockerの実行

デプロイの確認

コンテナの状態を確認する

コンテナログの確認

APIキーの取得

コンテナログに出力される次の行を探します。

リアルタイムでログを確認する

コンテナのアーキテクチャ

  • ベースイメージ: python:3.11-slim

  • ワーキングディレクトリ: /commander

  • 構成ファイルディレクトリ: /home/commander/.keeper/

  • Entrypoint: docker-entrypoint.sh (自動認証セットアップを実行)

コマンダ実行API エンドポイント

ログイン状態維持モード

Keeperコマンダーには、セッションを一定期間維持するログイン状態維持モードがあり、指定した時間ログイン状態を維持できます。

このモードを有効にするには、次のコマンドを実行する。

上記のタイムアウト設定を適用すると、次の30日間 (43200分) はコマンダーで認証を求められずに利用できます。ログイン状態の維持は、サービスモードAPIをバックグラウンドで継続して実行するために必要で、ログイン要求なしでシームレスに認証できます。

ログイン状態維持セッションについて、詳しくはこちらのページをご覧ください。

ログ記録

サービスには包括的なログ記録機能があり、以下の項目が記録されます。

  • サービスの起動と停止

  • 構成変更

  • API実行

  • セキュリティ関連イベント

  • エラー状況

ログ構成

Service Mode を開始すると、logging_config.yaml がデフォルトパス( ~.keeper ) に生成されます。デフォルトのログレベルは INFO です。ログを無効にする場合は enabled: false に変更します。ログレベルを変更する場合は levelINFODEBUGERROR のいずれかを指定します。

バックグラウンド プロセスのログ

バックグラウンドモードで実行されている場合、サービスログは以下に保存されます。

  • 場所: keepercommander/service/core/logs/service_subprocess.log

  • 内容: サブプロセスの出力、エラー、サービスイベント

  • 自動作成: サービスがバックグラウンドで開始されると自動的に作成される

Ngrokログ

ngrokトンネリングが有効になっている場合、追加ログが記録されます。

  • 場所: keepercommander/service/core/logs/ngrok_subprocess.log

  • 内容: ngrokの起動、接続イベント、パブリックURL生成、トンネルエラー

  • 含まれる情報: トンネル確立、再接続試行、ngrok固有のエラーメッセージ

  • 自動作成: ngrokトンネリングを構成してサービスを開始すると自動的に作成される

Cloudflareログ

Cloudflareトンネリングが有効になっている場合、追加ログが記録されます。

  • 場所: keepercommander/service/core/logs/cloudflare_tunnel_subprocess.log

  • 内容: Cloudflareトンネルの起動、接続イベント、パブリックURL生成、トンネルエラー

  • 含まれる情報: トンネル確立、再接続試行、Cloudflare固有のエラーメッセージ

  • 自動作成: Cloudflareトンネリングを構成してサービスを開始すると自動的に作成される

最終更新