サービスモードREST API

KeeperコマンダーサービスモードでREST APIをを作成

Keeperコマンダーサービスモード

Keeperコマンダーのサービスモードモジュールは、最小限の設定で導入可能な、安全で設定可能なAPIサーバーを提供することで、REST APIの統合を可能にします。このモジュールにより、ユーザーはセキュリティと設定の柔軟性を維持しながら、REST APIインターフェースを介してコマンダーのCLIコマンドを実行できます。このサービスはローカルで実行でき、オプションでNgrokと統合して、既存のNgrokネットワークにルーティング可能なアドレスを作成することもできます。

特徴

コア機能

  • API サーバー: コマンダーCLI コマンドを実行するためのFlaskベースのREST APIサーバー

  • サービス管理: APIサービスのライフサイクル全体を管理

  • 構成管理: インタラクティブなセットアップと簡略化されたセットアップの両方を備えた柔軟な構成システム

  • セキュリティ制御: API キー管理、アクセス制御、レート制限、IP 許可/拒否などの包括的なセキュリティ機能

  • APIバージョン管理 同期処理 (v1) と非同期処理 (v2) の両方をサポートする2種類のAPIバージョンを提供しています。

  • リクエストキューシステム 高度な非同期リクエスト処理機能を備え、リクエストの追跡とステータスの監視が可能です。

  • 柔軟なホスティングオプション: オンプレミス、Dockerコンテナ、統合されたNgrokエージェントを使用したクラウドでの実行

サービスコマンド

コマンド
説明

service-create

カスタマイズ可能な設定でサービスを初期化および構成する

service-start

既存の構成でサービスを開始する

service-stop

実行中のサービスを正常に停止する

service-status

現在のサービスステータスを表示する

service-config-add

新しいAPI構成とコマンドアクセス設定を追加する

セキュリティ機能

  • APIキー認証

  • 設定可能なトークンの有効期限 (分/時間/日)

  • API応答のオプションのAES-256 GCM暗号化

  • 提供された証明書 (.pem) を使用したTLS対応

  • 構成可能なルールでレート制限

  • IP許可リスト (ホワイトリスト) とIP拒否リスト (ブラックリスト) の管理

  • リクエストの検証とポリシーの適用

  • 秘密鍵を使用したローカルサービス構成のJSONまたはYAMLファイル暗号化

セキュリティ

Keeperコマンダーサービスモード機能は、既存のコマンダーセッションをREST APIでラップするセルフホステッドミドルウェアです。この機能は、高速なリクエストとシンプルなHTTPSベースのAPIが求められる環境に適しています。

この機能を最も安全に使用するためには、以下のことをお勧めします。

  • 使用ケースに基づいて必要なコマンドに限定したコマンドアクセス制御を適用する。

  • REST APIエンドポイントへのアクセスにIPホワイトリストを適用する。

  • コマンダーサービスを実行しているマシンへのアクセスを保護する。

  • 異なるコマンドや使用ケースごとに異なるAPIトークンを使用する。

使用法

基本設定

Keeperコマンダーを起動します。

keeper shell

プロンプトが表示されたら、Keeperの認証情報でログインします。操作をスムーズにするため、起動時に生体認証ログインまたは永続ログインを有効にしておくことを推奨します。

生体認証ログイン

biometric register

永続ログインセッション

My Vault> this-device persistent-login on
My Vault> this-device register
My Vault> this-device timeout 30d

※ 上記の設定により、30日間ログイン状態が維持されます。

サービスモードの作成: 対話的設定を使用

対話形式のプロンプトを使ってサービスを作成・構成します。

My Vault> service-create

実行すると、以下の項目の設定を順に求められます。

  • ポート番号

  • Ngrok認証トークン (任意)

  • Cloudflareトンネルトークン (任意)

  • TLS証明書のパス (任意)

  • リクエストキューシステムの有効化 (y/n)

  • セキュリティ設定 (任意)

  • 設定フォーマット (yaml/json) (未作成の場合)

  • 実行モード (フォアグラウンド/バックグラウンド)

  • コマンドアクセス制御

例: TLS証明書(https)を使用してサービスモードを作成する

My Vault> service-create
Enter Port No:9090
Enable Ngrok Tunneling? (y/n):n
Enable TLS Certificate (y/n):y
Enter Certificate Path:/Users/profile/Documents/cert.pem
Enter Certificate Password:/Users/profile/Documents/key.pem
Enable Request Queue? (y/n):y
Enable Advanced Security? (y/n):n
Select Run Mode (foreground/background):background
List of supported commands, Enter comma separated:whoami,record-add,tree,ls
Select configuration format (json/yaml):yaml
Generated API key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Uploading service_config.yaml ...
Commander Service starting on http://localhost:9090/api/v2/
Generated ngrok URL: https://myname.ngrok.io
Commander Service started with PID: 35215

ストリームライン構成

1つのコマンドでサービスをすばやく構成できます (デフォルトではHTTP・フォアグラウンドモードで実行されます)。

# パラメータの詳細は以下を参照してください
My Vault> service-create -p 9090 -c 'record-add,whoami' -f json

Ngrokを使用してすばやく構成する場合

# 追加パラメータ: -ng Ngrok認証トークン、-cd ドメイン名
My Vault> service-create -p 9090 -c 'record-add,whoami' -ng xxxxxxxxxxx -cd myname

Cloudflareを使用してすばやく構成する場合

My Vault> service-create -p 9090 -c 'record-add,whoami' -cf xxxxxxxxxxx -cfd myname

詳細オプションを使用して構成する場合

My Vault> service-create -p <port> -f <json-or-yaml> -c <command-list> -rm <foreground-or-background> -q <y-or-n> -crtf <certificate-file-path> -crtp <certificate-password-key-path> -aip <allowed-ip-list> -dip <denied-ip-list>

パラメータ

  • -p, --port: サービスのポート番号 (簡易セットアップを開始するために必須)

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

  • -ng, --ngrok: クラウド管理のURLアクセス用のngrok認証トークン (任意)

  • -cd: ngrokのカスタムドメイン。サブドメイン部分のみ (任意)

  • -cf, --cloudflare: Cloudflareトンネルトークン ( クラウド経由でURLアクセスを行うための認証トークン ) ( 任意 )

  • -cfd: Cloudflareカスタムドメイン ( 任意 )

  • -aip, --allowedip: IP許可リスト (任意) - デフォルト: 0.0.0.0/0

  • -dip: IP拒否リスト (任意)

  • -crtf, --certfile: SSL証明書ファイルのパス。拡張子 .crt .pem .key に対応 (任意)

  • -crtp, --certpassword: SSL証明書のパスワード (任意)

  • -q, --queue_enabled: リクエストキュー機構を有効化 (y/n) - デフォルト: y

  • -rm, --run_mode: サービスの実行モード (foreground/background) - デフォルト: foreground

  • -f, --fileformat: 構成ファイル形式 (json/yaml) - セットアップを促す前に、サービスはローカルの構成ファイルとボルトを確認し、既存の構成形式があるかをチェックします。

構成ファイル

初期設定が完了すると、ボルト内に「Commander Service Mode」というタイトルのレコードが作成されます。このレコードにはservice_config.yamlというYAML/JSONファイルが含まれています。

コマンダーサービスモードレコード

次回以降のサービス起動では、パラメータなしの service-create コマンドを実行します。構成はローカルで暗号化済みの service_config ファイルから読み込まれます。

構成はボルトに安全に保存されていますが、サービスは起動時にローカルにキャッシュされた暗号化ファイルを使用します。ボルトからの再読み込みを強制するには、service-start を実行する前にローカルの構成ファイル (~/.keeper/service_config.json または .yaml) を削除してください。

例: ターミナルからフォアグラウンドで起動する場合

サービスはシステムのターミナルから起動できます。以下の例では、/api/v1 をフォアグラウンドモードで実行します ( /api/v2 を使用する場合は -q y でキューモードを有効化します)。

keeper service-create -p 8090 -f json -c 'sync-down,whoami,record-add,login-status' -rm foreground -q n

Ctrl + C でサービスを停止できます。一度サービスを作成した後は、次のようにして再起動できます。

keeper service-start

生体認証ログインまたは永続ログインモードtohaが有効になっている場合、サービスの起動はシームレスに行われます。

サービス管理

サービスステータスを確認します。

My Vault> service-status
Current status: Commander Service is Running (PID: 12345, Terminal: /dev/ttys003)

追加の構成を追加します。

My Vault> service-config-add
List of supported commands, Enter comma separated:tree
Generated API key: zGCJjbbY6u0WkCbzoMu7XIxn5F7LQasWCeMdfTSBW3w=

Uploading service_config.yaml ...
Config Record with API key created successfully.

サービスを開始します。

My Vault> service-start
Commander Service starting on https://localhost:8900/api/v2/
Commander Service started with PID: 12345

サービスを停止します。

My Vault> service-stop
Service stopped successfully

サポート

サポートや機能のリクエストについては、GithubでIssueを提出するか、下記までお問い合わせください。

次の手順

最終更新