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 をボルトにアップロードする必要があります。ホスト環境で以下の手順を実行してください。
Keeperへのログイン
keeper shell # 認証情報を使用してログイン login [email protected]デバイス登録
this-device register永続ログインの有効化
this-device persistent-login onタイムアウトの設定
this-device timeout 43200構成ファイルのアップロード ホストの
.keeperディレクトリにあるconfig.jsonを見つけ、共有フォルダ内のレコードに添付ファイルとしてアップロードします。元の構成ファイルの削除 同じデバイストークンやクローンコードを持つ構成が重複しないよう、ホスト環境の
.keeperディレクトリからconfig.jsonを削除します。
Dockerコンテナの実行
KSM構成ファイル認証を使用する場合
A. Base64形式のKSM構成を使用する
ファイルのマウントが難しい環境 (例: コンテナオーケストレーション環境) では、KSM構成をBase64エンコードした文字列として渡す方法が利用できます。
要件
KSM構成ファイル認証を使用する前に、以下を完了しておく必要があります。
KSMアプリケーションをKeeperボルト内で作成する
KSM構成のBase64値を生成する
サービス用
config.json構成ファイルを添付したKeeperレコードを作成するそのレコードをKSMアプリケーションと共有する
セットアップ手順
一般的な構成ファイルの準備手順を完了する
KSM構成ファイルの作成
ボルト → [シークレットマネージャー] → [アプリケーション] へ移動する
新しいアプリケーションを作成し、共有フォルダへのアクセス権を付与する
アプリケーションを選択し、[デバイス] から [デバイスを追加] をクリックする
構成ファイル方式を選択し、構成タイプとして
Base64を指定する表示されたKSM構成のBase64文字列を安全な場所にコピーして保管する
コンテナの実行
docker run -d -p <port>:<port> \
keeper/commander:latest \
service-create -p <port> -c '<commands>' -f <json-or-yaml> \
--ksm-config <BASE64_ENCODED_CONFIG> \
--record <RECORD_UID_OR_TITLE>例
docker run -d -p 9007:9007 \
keeper/commander:latest \
service-create -p 9007 -c 'ls,tree' -f json \
--ksm-config eyJhcHBsaWNhdGlvbiI6ZXN0LWNsaWVudC1pZCJ9 \
--record ABC123-DEF456-GHI789B. KSM構成ファイルをコンテナ内にマウントする方法
要件
KSM構成ファイルによる認証を利用するには、次の準備が必要です。
KeeperボルトでKSMアプリケーションを作成する
KSM構成ファイル (
ksm-config.json) を生成するサービスの
config.jsonを添付したKeeperレコードを作成するそのレコードを作成したKSMアプリケーションと共有する
手順
1. 一般的な構成ファイル準備手順を完了する
2. KSM構成ファイルを作成する
ボルト → [シークレットマネージャー] → [アプリケーション] へ移動する
新しいアプリケーションを作成し、共有フォルダへのアクセス権を付与する
作成したアプリケーションを選択し、[デバイス] へ移動してから [デバイスを追加] をクリックする
構成ファイル方式を選択してJSONファイルをダウンロードする
ダウンロードしたファイルの名前を
ksm-config.jsonに変更する (.keeper/config.jsonとの衝突を避けるため)
コンテナの実行
docker run -d -p <port>:<port> \
-v /path/to/local/ksm-config.json:/home/commander/ksm-config.json \
keeper/commander:latest \
service-create -p <port> -c '<commands>' -f <json-or-yaml> \
--ksm-config /home/commander/ksm-config.json \
--record <RECORD_UID_OR_TITLE>例
docker run -d -p 9007:9007 \
-v /path/to/local/ksm-config.json:/home/commander/ksm-config.json \
keeper/commander:latest \
service-create -p 9007 -c 'ls,tree' -f json \
--ksm-config /home/commander/ksm-config.json \
--record ABC123-DEF456-GHI789KSMトークン認証を利用する方法
要件
KSMトークン認証を利用する前に、次の準備が必要です。
KeeperボルトでKSMアプリケーションを作成する
生成されたアクセス トークンを安全に保管する
config.jsonを添付したKeeperレコードを作成するそのレコードを作成したKSMアプリケーションと共有する
手順
1. 一般的な構成ファイルの準備手順を完了する
2. KSMアクセス トークンを作成する
ボルト → [シークレットマネージャー] → [アプリケーション] へ移動する
新しいアプリケーションを作成し、共有フォルダへのアクセス権を付与する
編集権限を付与し、アクセストークンを生成する
生成されたアクセス トークンを安全に保管する
コンテナの実行
docker run -d -p <port>:<port> \
keeper/commander:latest \
service-create -p <port> -c '<commands>' -f <json-or-yaml> \
--ksm-token <KSM_TOKEN> \
--record <RECORD_UID_OR_TITLE>例
docker run -d -p 9007:9007 \
keeper/commander:latest \
service-create -p 9007 -c 'ls,tree' -f json \
--ksm-token US:odncsdcindsijiojijj32i3ij2iknm23 \
--record ABC123-DEF456-GHI789ユーザー名/パスワード認証方式
docker run -d -p <port>:<port> keeper/commander:latest \
service-create \
-p <port> \
-c '<comma-separated-commands>' \
-f <json-or-yaml> \
--user <keeper-username> \
--password <keeper-password> \
--server <keeper-server>パラメータ
-p, --port: サービスのポート番号-c, --commands: 許可コマンドのカンマ区切りリスト-f, --fileformat: 構成ファイル形式 (jsonまたはyaml)--user: Keeperユーザー名--password: Keeperパスワード--server: Keeperサーバー (省略時はkeepersecurity.com)
例
docker run -d -p 9009:9009 keeper/commander:latest \
service-create \
-p 9009 \
-c 'tree,ls' \
-f json \
--user [email protected] \
--password mypassword構成ファイル認証方式
要件
構成ファイル認証を利用するには、ホスト側で config.json を正しく構成しておく必要があります。
手順
一般的な構成ファイルの準備手順の1〜4を実行する
構成が完了したら、ホストマシンの
.keeperフォルダにあるconfig.jsonを確認し、Dockerでマウントできるように、その内容を任意のパス (例:/path/to/local/config.json) にコピーするコピーが完了したら、デバイストークンやクローンコードの重複を防ぐため、ホストマシンの
.keeperフォルダから元のconfig.jsonを削除する
構成ファイルをマウントして実行
docker run -d -p <port>:<port> \
-v /path/to/local/config.json:/home/commander/.keeper/config.json \
keeper/commander:latest \
service-create -p <port> -c '<commands>' -f <json-or-yaml>デプロイの確認
コンテナの状態を確認する
docker psコンテナログの確認
docker logs <container-name-or-id>APIキーの取得
コンテナログに出力される次の行を探します。
Generated API key: <API-KEY>リアルタイムでログを確認する
docker logs -f <container-name-or-id>コンテナのアーキテクチャ
ベースイメージ:
python:3.11-slimワーキングディレクトリ:
/commander構成ファイルディレクトリ:
/home/commander/.keeper/Entrypoint:
docker-entrypoint.sh(自動認証セットアップを実行)
コマンダ実行API エンドポイント
# v2 (非同期キュー有効)
curl --location 'http://localhost:<port>/api/v2/executecommand-async' \
--header 'Content-Type: application/json' \
--header 'api-key: <your-api-key>' \
--data '{
"command": "<command>"
}'
# v1 (キュー無効・同期実行)
curl --location 'http://localhost:<port>/api/v1/executecommand' \
--header 'Content-Type: application/json' \
--header 'api-key: <your-api-key>' \
--data '{
"command": "<command>"
}'ログイン状態維持モード
Keeperコマンダーには、セッションを一定期間維持するログイン状態維持モードがあり、指定した時間ログイン状態を維持できます。
このモードを有効にするには、次のコマンドを実行する。
this-device persistent-login on
this-device register
this-device timeout 43200上記のタイムアウト設定を適用すると、次の30日間 (43200分) はコマンダーで認証を求められずに利用できます。ログイン状態の維持は、サービスモードAPIをバックグラウンドで継続して実行するために必要で、ログイン要求なしでシームレスに認証できます。
ログイン状態維持セッションについて、詳しくはこちらのページをご覧ください。
ログ記録
サービスには包括的なログ記録機能があり、以下の項目が記録されます。
サービスの起動と停止
構成変更
API実行
セキュリティ関連イベント
エラー状況
ログ構成
Service Mode を開始すると、logging_config.yaml がデフォルトパス( ~.keeper ) に生成されます。デフォルトのログレベルは INFO です。ログを無効にする場合は enabled: false に変更します。ログレベルを変更する場合は level に INFO、DEBUG、ERROR のいずれかを指定します。
logging:
enabled: true
level: INFOバックグラウンド プロセスのログ
バックグラウンドモードで実行されている場合、サービスログは以下に保存されます。
場所:
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トンネリングを構成してサービスを開始すると自動的に作成される
最終更新

