Dockerによるデプロイ
Dockerを使用したコマンダーのサービスモードデプロイ
Dockerによるコマンダーサービスモードのデプロイ
Dockerコンテナを使用すると、自動デバイス登録および永続的なログイン設定を備えたKeeperコマンダーのサービスモードを、簡単にデプロイできます。
クイックセットアップコマンド
アカウントでKeeperPAMまたはKeeperシークレットマネージャー (KSM) が有効になっている場合は、Keeperコマンダーの service-docker-setup コマンドを使用して、Dockerデプロイのセットアップ全体を自動化できます。このコマンドでは、デバイス登録、ボルトの構成、KSM連携、docker-composeファイルの生成までを、単一の対話型ワークフローでまとめて行えます。
スムーズにセットアップを行うには、service-docker-setup の使用を推奨します。手動で構成したい場合や、KSMが有効になっていない場合は、以下の認証方法の項をご参照ください。
要件
Dockerをインストールしていること
Dockerイメージを取得していること
docker pull keeper/commander:latestアカウントでKeeperシークレットマネージャー (KSM) が有効になっていること
Keeperコマンダーがローカル環境にインストールされていること
概要
service-docker-setup コマンドでは、以下の処理が自動的に実行されます。
デバイスのセットアップ
デバイスをKeeperに登録
永続的なログインを有効化
ログアウトのタイムアウトを30日に設定
ボルトの構成
共有フォルダを作成 (
Commander Service Mode - Docker)構成レコードを作成 (
Commander Service Mode - Docker Config)最小化された
config.jsonを添付ファイルとしてアップロード
KSM連携
KSMアプリケーションを作成 (
Commander Service Mode - Docker App)共有フォルダをKSMアプリと共有 (編集権限付き)
クライアントデバイスを作成し、KSM構成を生成
Docker Composeの生成
サービス構成 (ポート、コマンド、キューモード、トンネリング、TLS) を対話形式で指定
そのまま利用できる
docker-compose.ymlファイルを生成
使用方法
Keeperコマンダーのシェル内で、以下のコマンドを実行します。
オプションのパラメータ
--folder-name
共有フォルダの名前を指定します。
Commander Service Mode - Docker
--app-name
KSMアプリケーションの名前を指定します。
Commander Service Mode - Docker App
--record-name
構成レコードの名前を指定します。
Commander Service Mode - Docker Config
--config-path
使用する config.json ファイルのパスを指定します。
~/.keeper/config.json
--timeout
デバイスのタイムアウト設定を指定します。
30d
--skip-device-setup
すでに構成済みの場合に、デバイス登録をスキップします。
false
対話型構成
このコマンドでは、以下の構成項目について対話形式で設定を行います。
サービス構成
ポート コマンダーサービスが待ち受けるポート番号を指定します (既定値: 8900)。
コマンド 実行を許可するコマンドまたはエイリアスを、カンマ区切りで指定します (既定値: tree,ls)。
キューモード パフォーマンス向上のため、非同期API (v2) を有効にするかどうかを指定します (既定値: 有効)。
-ur フラグを指定すると、生成されたAPIキーとサービスURLが構成レコードに自動的に保存され、後から安全に取得できます。
トンネリングオプション (任意)
Ngrok ngrokを使用して公開URLを生成します。
Ngrok認証トークン
Ngrokカスタムドメイン (任意)
Cloudflare ngrokを無効にしている場合に、Cloudflareを使用して公開URLを生成します。
Cloudflareトンネルトークン
Cloudflareカスタムドメイン
出力
コマンドが正常に完了すると、以下の情報が表示されます。
作成されたリソース
共有フォルダUID
KSMアプリUID
構成レコードUID
KSM Base64構成 (Dockerの環境変数用)
生成されたファイル
docker-compose.yml: そのままデプロイに使用できるDocker Compose構成ファイル
docker-compose.yml の出力例
docker-compose.yml の出力例サービスのデプロイ
コマンドが正常に完了したら、以下の手順を実行することを推奨します。
コマンダーのセッションを終了します。
競合を防ぐため、ローカルの構成ファイルを削除します。
Dockerが稼働しているリモートサーバーでサービスを起動します。
デプロイを確認します。
コマンドの再実行
service-docker-setup コマンドを複数回実行した場合の動作は以下のとおりです。
既存のボルトリソース (フォルダ、アプリ、レコード) は再利用されます。
config.json の添付ファイルが更新されます。
新しいKSMクライアントデバイスが作成されます。
docker-compose.ymlファイルが再生成されます。
手動Dockerセットアップ
手動で構成したい場合や、KSMが有効になっていない場合は、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ディレクトリにある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 Composeファイル
Dockerの実行
例
--record パラメータには、レコードのUIDとタイトルの両方を指定できます。同じタイトルのレコードが複数存在する場合は、UIDを指定する必要があります。
B. KSM構成ファイルをコンテナ内にマウントする方法
要件
KSM構成ファイルによる認証を利用するには、次の準備が必要です。
KeeperボルトでKSMアプリケーションを作成する
KSM構成ファイル (
ksm-config.json) を生成するサービスの
config.jsonを添付したKeeperレコードを作成するそのレコードを作成したKSMアプリケーションと共有する
手順
1. 一般的な構成ファイル準備手順を完了する
2. KSM構成ファイルを作成する
ボルト → [シークレットマネージャー] → [アプリケーション] へ移動する
新しいアプリケーションを作成し、共有フォルダへのアクセス権を付与する
作成したアプリケーションを選択し、[デバイス] へ移動してから [デバイスを追加] をクリックする
構成ファイル方式を選択してJSONファイルをダウンロードする
ダウンロードしたファイルの名前を
ksm-config.jsonに変更する (.keeper/config.jsonとの衝突を避けるため)
Docker Composeファイル
Dockerの実行
例
--record パラメータには、レコードのUIDとタイトルの両方を指定できます。同じタイトルのレコードが複数存在する場合は、UIDを指定する必要があります。
KSMトークン認証を利用する方法
要件
KSMトークン認証を利用する前に、次の準備が必要です。
KeeperボルトでKSMアプリケーションを作成する
生成されたアクセス トークンを安全に保管する
config.jsonを添付したKeeperレコードを作成するそのレコードを作成したKSMアプリケーションと共有する
手順
1. 一般的な構成ファイルの準備手順を完了する
2. KSMアクセス トークンを作成する
ボルト → [シークレットマネージャー] → [アプリケーション] へ移動する
新しいアプリケーションを作成し、共有フォルダへのアクセス権を付与する
編集権限を付与し、アクセストークンを生成する
生成されたアクセス トークンを安全に保管する
Docker Composeファイル
Dockerの実行
例
--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〜4を実行する
構成が完了したら、ホストマシンの
.keeperフォルダにあるconfig.jsonを確認し、Dockerでマウントできるように、その内容を任意のパス (例:/path/to/local/config.json) にコピーするコピーが完了したら、デバイストークンやクローンコードの重複を防ぐため、ホストマシンの
.keeperフォルダから元のconfig.jsonを削除する
構成ファイルをマウントして実行
Docker Composeファイル
Dockerの実行
デプロイの確認
コンテナの状態を確認する
コンテナログの確認
APIキーの取得
APIキーは、Keeperボルト内に安全に保存されます。Dockerのログでは、セキュリティ上の理由からキーの一部がマスク表示されます。
完全なAPIキーを取得するには、以下の手順を行います。
Keeperボルトを開きます。
「Commander Service Mode - Slack App」 フォルダに移動します。
「Commander Service Mode Slack App Config」 レコードを開きます。
api-keyフィールドを確認します。
リアルタイムでログを確認する
コンテナのアーキテクチャ
ベースイメージ:
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 に変更します。ログレベルを変更する場合は level に INFO、DEBUG、ERROR のいずれかを指定します。
バックグラウンド プロセスのログ
バックグラウンドモードで実行されている場合、サービスログは以下に保存されます。
場所:
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トンネリングを構成してサービスを開始すると自動的に作成される
最終更新

