Gatewayのセキュリティ

Keeper Gatewayサービスのセキュリティおよび暗号化モデル

Keeper Gatewayとは

Keeper Gatewayは、ローテーション、検出、および接続タスクを実行するためにオンプレミスにインストールされるサービスです。Keeper Gatewayは、WebSocketおよびKeeper Secrets Managerのゼロ知識プロトコルセキュリティを使用して、Keeper Routerへのアウトバウンド通信を行います。

Gatewayの認証

Keeper Gatewayは、ターゲットマシンにGatewayサービスをインストールしたときに発行されたワンタイムアクセストークンを使用して、Keeper Routerに対して最初に認証を行います。最初の認証の後、Routerに対する以後のAPIコールは、クライアントデバイス識別子 (ワンタイムアクセストークンのHMAC_SHA512ハッシュ) を使用して認証されます。

ボルトの記録へのアクセスと復号化のために、Keeper Gatewayは、クライアント側のデータの暗号化と復号化を実行する標準のKeeper Secrets Manager APIを使用します。Keeper Secrets Managerのセキュリティモデルでは、特定のフォルダと記録のみがサービスによって復号化できるように指定することで、最小権限とゼロの知識を保証します。KeeperクラウドへのAPIリクエストは、クライアントデバイスの識別子およびクライアントデバイスの秘密鍵で署名されたリクエストのボディと一緒に送信されます。サーバーは、クライアントデバイスの公開鍵を使用して、指定したクライアントデバイス識別子のリクエストのECDSA署名を照合します。

他のSecrets Managerデバイスと同様に、暗号化および署名のプロセスに加えて、IPアドレスに基づいてアクセスを制限することもできます。

Gatewayが命令をフェッチする方法

ローテーションは、オンデマンドまたはスケジュール設定で実行できます。オンデマンドローテーションがWebボルトまたはデスクトップアプリのユーザーによって起動されると、Keeper Routerは適切なGatewayへの有効なWebSocket接続を使用して、ローテーションを実行するための命令をプッシュします。メッセージには、機密情報も暗号化された暗号文も含まれません。WebSocketを使用して送信されるすべてのメッセージには、コマンドタイプ (「rotate」など) と、シークレット値ではない該当するUID記録 (「UID」) のみが含まれます。

スケジュール設定されたローテーションでも、同じ仕組みが使用されます。ローテーションのスケジュールはRouterで追跡され、適切な間隔でローテーション命令がGatewayにプッシュされます。Gatewayがローテーションタスクを受信すると、ローカルのKSM設定を使用して、指定されたUID記録に関連付けられたシークレットを取得し、ローカルでその記録の情報を復号化します。これらのシークレットは、ローテーション、検出、または接続を実行するために使用されます。

ローカルのKSM設定を保護する方法

Gatewayサービスがインストールされている場合、ローカルのKSM設定はローカルファイルシステムの権限によって保護されます。デフォルトでは、設定はGatewayをインストールしたユーザーのホームディレクトリ (.keeperフォルダ) に格納されます。

Unix/Linuxでのインストール

Gatewayをユーザーとして起動する場合:

  • 設定ファイル: ~/.keeper/gateway-config.json

  • ログフォルダ: ~/.keeper/log

Gatewayをサービスとして実行する場合:

  • ユーザー: keeper-gateway-service

  • 設定ファイル: /etc/keeper-gateway/gateway-config.json

  • ログフォルダ: /var/log/keeper-gateway

Windowsでのインストール

コマンドラインを使用してGatewayを起動する場合

  • ログの場所:C:\Users[USER NAME].keeper\logs\

  • 設定ファイルの場所:C:\Users[USER NAME].keeper\gateway-config.json

GatewayをWindowsサービスとして起動する場合

  • ログの場所:C:\ProgramData\KeeperGateway\

  • 設定ファイルの場所:C:\ProgramData\KeeperGatewayPrivate\

    注意:このフォルダにアクセスできるのは、Gatewayサービスをインストールしたユーザーだけです。

KSM設定ファイルにアクセスして、Keeperから関連するシークレットをすべて取得できます。不正アクセスを防止するため、この設定ファイルは、インストールするユーザーアカウントおよび管理用アカウントのみで読み取ることができます。Windowsサーバーでは、Windowsシステムアカウントがデフォルトでサービスの実行に使用され、KSM設定にもアクセスできます。

データキャッシュ

キャッシュは検出に使用されますが、ローテーションには使用されません。シークレットがローテーションされるたびに、GatewayはKeeper Secrets Manager APIを使用して関連する記録をリアルタイムに取得します。

Gatewayのシェル

Gatewayには、仮想コマンドシェルが搭載されています。Gatewayをスタンドアロンアプリケーションとして実行すると、ユーザーはシェルを開けます。Gatewayをサービスとして実行すると、シェルにはアクセスできません。

SSHサービスは、シェルの高度なデバッグ機能を利用するためにGatewayにバンドルされています。SSHサービスはデフォルトでは実行されておらず、無効になっている間はシェルにアクセスできません。Gatewayサービスの開始時に、オプションの引数を指定してSSHサービスコンポーネントを有効化できます。 SSHサービスが有効でも、デフォルトでは接続できるアカウントはありません。システム管理者は、SSHを利用するアカウントと鍵ペアを作成する必要があります。

Gatewayのシェルには、シークレットを直接操作するコマンドは搭載されていません。

Commanderによるリモートトラブルシューティング

Keeper Commanderを使用してGatewayにアクセスし、トラブルシューティングを行うこともできます。これにより、GatewayとRouter間の接続、および関連するセキュリティメカニズムを利用できます。たとえば、CommanderでRouterにコマンドを送信して、Gatewayで実行中のタスクの一覧を取得できます。これらのコマンドは、Commanderユーザーと同じ企業内のすべてのGatewayで使用できます。

シークレットとログ出力

ローテーション中に取得されたシークレットは、Gatewayによって生成されたログメッセージからすべて自動的に消去されます。これには、スタックトレースなどの不測のログ出力も含まれます。

ポストローテーションスクリプト

Keeper Gatewayは、ローテーションの実行に成功した後にカスタマイズされた操作を実行するために、PowerShellとBashで管理者が生成したスクリプトを実行する機能をサポートしています。スクリプトは、対応するKeeperの記録のファイル添付を使用してGatewayに送信されます。このスクリプトはGatewayによって復号化された後、Gatewayで実行されます。サービスの再起動などのためのセカンダリデバイスへの接続は、ポストローテーションスクリプト内にうまく組み込む必要があります。

もちろん、Keeperの記録にアップロードされ、Gatewayで実行されるスクリプトは、不正な悪用から保護されなければなりません。Keeper管理者は、Keeperの記録に必ず最小権限を割り当てるようにする必要があります。

ポストローテーションスクリプトを実行すると、スクリプトからの標準出力および標準エラー出力がログとしてディスクに書き込まれます。シークレットはこの出力からも自動的に消去されます。UID記録は、診断のためにこの方法でログに記録できます。 ポストローテーションスクリプトは任意のコードで記述できますが、Keeper Gatewayは、コマンドラインパラメータを使用して標準的なユースケースを実行するために必要な最小限の情報をスクリプトに提供します。これには、以下のパラメータが含まれます。

  • PAMローテーションUID記録 (環境設定を含む)

  • リソースUID記録 (ターゲットリソースデータを含む)

  • アカウントUID記録 (ローテーションされた記録)

  • 旧パスワード (アカウントの記録から)

  • 新パスワード (アカウントの記録から)

  • ユーザー名 (アカウントの記録から)

Keeper Gatewayは、コマンドの実行後、LinuxやWindowsのインスタンスのコマンドライン履歴を消去します。

ポストローテーションスクリプトで、自動的に渡されたシークレット以外の他のシークレットへのアクセスが必要な場合は、Keeper Secrets Manager SDKまたはSecrets Manager CLIツールのご使用を強くお勧めします。

最終更新