github編集

Dockerによるデプロイ

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

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

Dockerコンテナを使用すると、自動デバイス登録および永続的なログイン設定を備えたKeeperコマンダーのサービスモードを、簡単にデプロイできます。

クイックセットアップコマンド

アカウントでKeeperPAMまたはKeeperシークレットマネージャー (KSM) が有効になっている場合は、Keeperコマンダーの service-docker-setup コマンドを使用して、Dockerデプロイのセットアップ全体を自動化できます。このコマンドでは、デバイス登録、ボルトの構成、KSM連携、docker-composeファイルの生成までを、単一の対話型ワークフローでまとめて行えます。

circle-info

スムーズにセットアップを行うには、service-docker-setup の使用を推奨します。手動で構成したい場合や、KSMが有効になっていない場合は、以下の認証方法の項をご参照ください。

要件

  • Dockerarrow-up-rightをインストールしていること

  • 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) を有効にするかどうかを指定します (既定値: 有効)。

circle-info

-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が稼働しているリモートサーバーでサービスを起動します。

  • デプロイを確認します。

コマンドの再実行

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 をボルトにアップロードする必要があります。ホスト環境で以下の手順を実行してください。

  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の実行

circle-info

--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の実行

circle-info

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

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

要件

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

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

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

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

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

手順

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

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

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

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

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

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

Docker Composeファイル

Dockerの実行

circle-info

--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キーの取得

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 に変更します。ログレベルを変更する場合は 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トンネリングを構成してサービスを開始すると自動的に作成される

最終更新