For the complete documentation index, see llms.txt. This page is also available as Markdown.

Google Chatアプリ

Keeperボルトおよびエンドポイント特権マネージャーとのGoogle Chat承認ワークフロー連携

概要

Keeper Google Chatアプリは、Google Workspace環境内でのジャストインタイムアクセス管理と、安全な認証情報の共有を実現します。Google Chatと直接連携することで、チームはコラボレーションプラットフォームを離れずに、Keeperボルトへのアクセスを申請、承認、管理できます。

このセルフホスト型ソリューションは、コマンダーサービスモードとともにお客様のインフラストラクチャ上で完全に稼働し、Keeperのゼロ知識セキュリティモデルを維持します。Google Chatとお客様のKeeperボルト間のすべての通信は、エンドツーエンド暗号化された状態が保たれます。

本ドキュメントでは、リアルタイムのメッセージ配信にCloud Pub/Subを使用したGoogle Chatアプリのデプロイ方法を取り扱います。KeeperシークレットマネージャーまたはKeeperPAMのライセンスが必要です。これらの機能の有効化が必要な場合は、担当のアカウントマネージャーまでお問い合わせください。

機能

機能
説明

レコードアクセス申請

ユーザーは、KeeperPAMリソースを含む個々のボルトレコードに対して、期限付きまたは永続的なアクセスを申請できます。承認者は申請の詳細をすべて確認し、カスタムの権限レベルを付与できます。PAMユーザーレコードでは、一時アクセスの期限切れ時に認証情報を自動ローテーションする設定も任意で可能です。

フォルダアクセス申請

クラシック共有フォルダまたは階層型共有フォルダ (NSF) へのアクセスを、細かい権限制御付きでユーザーに付与できます。期限付きアクセスに対応し、PAMユーザーフォルダでは期限切れ時のパスワードローテーションも任意で設定できます。

外部共有 / ワンタイム共有申請

パスワード、認証情報、機密データ向けに、安全な自己消滅型の共有リンクを生成できます。リンクは表示専用にすることも、双方向共有向けに編集可能にすることもできます。

セルフサーブレコード作成

エンジニアは、すでにアクセス権を持つ共有フォルダに直接新しい認証情報を追加できます。/keeper-create-secret コマンドは、フォルダ選択からレコード作成までをフォーム形式で案内し、作成後は管理者に自動で通知されます。

エンドポイント特権マネージャー承認

KEPMの昇格リクエストをリアルタイムで処理します。ユーザーがエンドポイント上で一時的な管理者権限を必要とする場合、承認カードが指定のGoogle Chatスペースに即時表示されます。

SSOクラウドデバイス承認

Keeperオートメーターを導入していない場合でも、Google Chat経由で新しいSSOクラウドデバイスを承認できます。管理者はデバイス承認リクエストを受け取り、ワンクリックで承認または拒否できます。


要件

インフラストラクチャ要件

Keeper Google Chatアプリは、連携コンポーネントに対する完全な管理をお客様の組織が維持できるセルフホスト型アーキテクチャを採用しています。この設計により、機密性の高い認証情報データが外部サービスを経由することはありません。

要件
詳細

Linux VM

Google ChatおよびKeeperサービスへのアウトバウンドHTTPS接続が可能な、クラウドまたはオンプレミス上の任意のVM。

Docker

サービスのセットアップにはDockerの使用を推奨。

Keeperコマンダー

サービスモードが実行中で、アクセス可能であること。

Keeperシークレットマネージャー

シークレット設定データの取得に、KeeperシークレットマネージャーまたはKeeperPAMライセンスが必要。

Google Workspaceアカウント

Chatアプリの登録およびAPI有効化のための管理者アクセス権が必要。

Google Cloudプロジェクト

Pub/Subインフラストラクチャおよびサービス認証情報を格納。

セットアップ手順

Google Chatアプリの設定では、Google Cloudリソースのセットアップ、Chatアプリケーションの登録、コンテナ化されたサービスのデプロイを行います。

Google Chatアプリの設定は、次の手順で行います。

  1. IAM権限の付与


1. Google Cloudプロジェクトのセットアップ

  1. Google Cloud Console にアクセスします。

  2. Keeper専用のプロジェクトを作成します (名前の例: Keeper Security Google chat App)。

プロジェクトIDを記録しておきます。このIDは、セットアップ手順全体を通して必要になります。

  1. 必要なAPIを有効化します。

  • [APIs & Services] (APIとサービス) → [Library] (ライブラリ) を開きます。

  • Google Chat APIを検索して有効化します。

  • Cloud Pub/Sub APIを検索して有効化します。


2. サービスアカウントとキーの作成

このアカウントにより、アプリはPub/SubからイベントをPullし、Chatにメッセージを投稿できます。

  1. [IAM & Admin] (IAMと管理) → [Service Accounts] (サービスアカウント) に移動します。

  2. [Create Service Account] (サービスアカウントを作成) を選択します。

  1. わかりやすい名前を入力します (例: keeper-chat-worker) → 作成します。

  2. アカウントを開きます → [Keys] (キー) → [Add key] (キーを追加) → [Create new key] (新しいキーを作成) → [JSON]

  3. ダウンロードしたファイルの名前を service-account.json に変更して保存します。

service-account.json は手順8で使用します。


3. Pub/Subメッセージングの設定

Cloud Pub/Subは、Google Chatとお客様のセルフホスト型アプリケーションとの間のメッセージブローカーとして機能します。このPullベースの方式により、パブリックエンドポイントやインバウンドファイアウォールルールを設ける必要がありません。

a. トピックの作成

  1. Cloud Consoleで [Pub/Sub][Topics] (トピック) を開きます。

  2. トピックIDを入力します (keeper-chat-events)。

  3. 「Add a default subscription」(デフォルトのサブスクリプションを追加) のチェックを外します (カスタムのサブスクリプションを別途作成するため)。

その他の項目は既定値のままにして [Create] (作成) をクリックし、確認画面で作成を確定します。

b. サブスクリプションの作成

  1. [Pub/Sub][Subscriptions] (サブスクリプション) に移動します (直接リンク)。

  2. [Create Subscription] (サブスクリプションを作成) を選択します。

  1. サブスクリプションIDを入力します (keeper-chat-events-sub)。

  2. 手順3(a) で作成したトピックを選択します。

  3. 配信設定を行います。

    • 配信タイプ: Pull

    • 確認応答の期限: 60秒

  4. その他の項目は既定値のままにして [Create] (作成) をクリックします。


4. IAM権限の付与

2つの権限付与が別々に必要です。いずれかが不足すると、「Keeper Securityが応答していません」というエラーが発生するか、イベントが届かなくなります。

a. Google Chatがトピックに発行できるようにする

  1. [Pub/Sub][Topics] (トピック) → keeper-chat-events[Permissions] (権限) → [Add Principle] (プリンシパルを追加)。

以下を Pub/Sub Publisher として追加します。

プリンシパル
ロール

chat-api-push@system.gserviceaccount.com

Pub/Sub Publisher

b. ワーカーがサブスクリプションを読み取れるようにする

[Pub/Sub][Subscriptions] (サブスクリプション) → keeper-chat-events-sub[Permissions] (権限) → [Add Principle] (プリンシパルを追加)。

プリンシパル
ロール

keeper-chat-worker@<YOUR_PROJECT_ID>.iam.gserviceaccount.com

Pub/Sub Subscriber


5. Chatアプリケーションの登録

  1. Google Cloud Console に戻ります。

  2. [APIs & Services] (APIとサービス) → [Enabled APIs & services] (有効なAPIとサービス) を開きます。

  3. Google Chat APIをクリックします。

  1. [Configuration] (構成) タブを選択します。

  2. アプリケーションプロフィールを入力します。

Build this Chat app as a Google Workspace add-on (このChatアプリをGoogle Workspaceアドオンとして構築する) は、チェックを外したままにします。

項目

App name

Keeper Security

Description

Keeper vault credentials access in chat

Interactive features

有効

Join spaces and group conversations

有効

Connection settings

Cloud Pub/Sub

Pub/Sub topic name

projects/YOUR_PROJECT_ID/topics/keeper-chat-events

  1. スラッシュコマンドを登録します。

コマンド
コマンドID
説明

/keeper-request-record

1

Keeperボルトレコードへのアクセスを申請

/keeper-request-folder

2

Keeper共有フォルダへのアクセスを申請

/keeper-external-share

3

外部共有用にKeeperボルトレコードへのアクセスを申請

/keeper-create-secret

4

Keeperの共有フォルダに新しいレコードを作成

  1. [Visibility] (公開範囲) セクションで表示設定を行います。

    • [Development/Testing Users] (開発 / テストユーザー) に自分のメールアドレスを追加します。

注: ここに追加したメールアドレスのユーザーのみが、開発およびテスト段階でアプリを表示・操作できます。残りのセットアップを完了し、Keeper Google Chatアプリが想定どおりに動作することを確認してください。確認が済んだら、アプリを組織内向けに公開し、組織内のユーザーが利用できるようにします。

  1. 設定を保存します。


6. 承認用スペースの準備

アクセス申請および管理者への通知は、承認者が確認して対応できる、指定のGoogle Chatスペースに投稿されます。

  1. Google Chat を開きます。

  2. [Spaces] (スペース) で [Create space] (スペースを作成) を選択します。

  3. スペースを設定します。

    • 名前: Keeper-vault-Approvers (任意の名前に変更可)

    • アクセス申請への対応を行うチームメンバーを追加します。

  1. このスペースにKeeperアプリをインストールします。

  • スペース名をクリック → [View details] (詳細を表示)

  • [Apps & integrations] (アプリと連携) → [Add apps] (アプリを追加) を選択

  • 「Keeper Security」を検索して追加します。

  1. スペースIDを取得します。

  • URLは次の形式で表示されます: https://chat.google.com/chat/XXXXXXXXX

  • スペースIDは次のとおりです: spaces/XXXXXXXXX

Space ID (スペースID) は手順8で使用します。


7. コマンダーサービスモードの設定

Keeperテナント内でサービスが認証およびコマンド実行を行えるようにするには、Keeperコマンダーの構成ファイルを作成し、あらかじめ認可しておく必要があります。この構成は、ホストコンピューターまたはワークステーション上で生成できます。

  • ローカル環境にKeeperコマンダーをインストールします。

  • 必要に応じて、本連携専用のKeeperサービスアカウントを新規作成します。対象となるレコードおよびフォルダへのアクセス権と、レコードおよびフォルダの共有を実行できる権限を付与してください。

  • Keeperサービスアカウント (serviceuser@company.com) でコマンダーにログインします。

  • 2要素認証を含む認証プロセスを完了します。完全に認証が完了したら、手順4へ進みます。


8. Google Chatアプリ設定コマンドの実行

gchat-app-setup コマンドを実行すると、Google Chatアプリおよびコマンダーサービスモードを運用するための docker-compose.yml ファイルが生成されます。

コマンダーのシェルから、次のコマンドを入力します。

コマンドラインオプション

パラメータ
説明
既定値

--folder-name (任意)

共有フォルダの名称

Commander Service Mode - Google Chat App

--app-name (任意)

シークレットマネージャーアプリの名称

Commander Service Mode - KSM App

--config-record-name (任意)

コマンダー設定レコードの名称

Commander Service Mode Docker Config

--gchat-record-name (任意)

Google Chat設定レコードの名称

Commander Service Mode Google Chat App Config

--config-path (任意)

config.jsonファイルのパス

~/.keeper/config.json

--timeout (任意)

デバイスタイムアウトの設定

30d

--skip-device-setup (任意)

既に構成済みの場合、デバイス登録をスキップ

false

カスタム名称を指定した例:

1. Dockerサービスモードの設定

このコマンドは、KSMの構成を行い、Dockerサービスモード用の構成ファイルをアップロードします。

サービス設定

コマンダーサービスのポートを設定します。

プロンプト
説明

Port

コマンダーサービスモードで使用するポート番号 (1024~65535)。

8900

トンネリング設定 (任意)

プロンプト
説明

Ngrok Auth Token

公開URLを生成するためのngrok認証トークン。

Ngrok Custom Domain

カスタムngrokドメイン (例: myapp.ngrok.io)。

Cloudflare Tunnel Token

公開URLを生成するためのCloudflareトンネルトークン。

Cloudflare Custom Domain

設定済みのCloudflareカスタムドメイン (例: gchat.company.com)。

2. Google Chatアプリ連携の設定

前段のGCPおよびGoogle Chatのセットアップ手順で取得した値を入力します。

プロンプト
説明

サービスアカウントJSONファイルのパス (必須)

Pub/SubのPullおよびGoogle Chat APIに使用するGCPサービスアカウントJSONキーのパス。JSONのインライン貼り付けは受け付けられません。

/path/to/service-account.json

プロジェクトID (必須)

GCPプロジェクトID。Enterキーを押すと、サービスアカウントJSON内の project_id が使用されます。サービスアカウントのプロジェクトと異なる場合は、続行前に確認してください。

your-gcp-project-id

トピックID (必須)

Google Chatのイベントを受け取るPub/Subトピック。

keeper-chat-events

サブスクリプションID (必須)

イベントのPullに使用するPub/Subサブスクリプション。

keeper-chat-events-sub

スペースID (必須)

承認カードを投稿するGoogle Chatスペース。spaces/ で始まり、スペースIDを含む必要があります。

spaces/<YOUR_ID>

/keeper-request-recordコマンドID

コンソールで登録したスラッシュコマンドIDと一致させる必要があります。

1

/keeper-request-folderコマンドID

コンソールで登録したスラッシュコマンドIDと一致させる必要があります。

2

/keeper-external-shareコマンドID

コンソールで登録したスラッシュコマンドIDと一致させる必要があります。

3

/keeper-create-secretコマンドID

コンソールで登録したスラッシュコマンドIDと一致させる必要があります。

4

Enable PEDM? (任意)

エンドポイント特権マネージャー承認を有効化するかどうか (y/n)。

y

PEDM Polling Interval (任意)

秒数。既定値は120。

120

Enable Device Approvals? (任意)

SSOクラウドデバイス承認を有効化するかどうか (y/n)。

y

Device Approval Polling Interval (任意)

秒数。既定値は120。

120

セットアップが完了すると、コマンドはGoogle Chat設定レコードを作成します。このレコードには以下のフィールドが含まれます。

  • google_service_account_json (シークレット)、google_project_idgoogle_topic_idgoogle_subscription_id

  • chat_approvals_space_idchat_command_request_record_idchat_command_request_folder_idchat_command_external_share_idchat_command_create_secret_id

  • 任意項目の pedm_* および device_approval_* の各フィールド

このコマンドは、コマンダーサービスモードとGoogle Chatアプリ用の docker-compose.yml を生成します。

セットアップが完了したら、コマンダーのセッションを終了します。デバイストークンの競合を防ぐため、ローカルの .keeper/config.json ファイルを削除します。


9. Docker環境へのデプロイ

コマンダーサービスモードを実行するLinux VMまたはホスト上に、Docker Composeをセットアップします。

  • Linux VMを起動するか、Linuxホストを準備し、SSHで接続します。

  • docker および docker-compose をインストールします。LinuxへのDockerインストール をご参照ください。

  • 手順7で生成した docker-compose.yml ファイルを、対象のホストへ転送します。

サービスを起動します。

サービス起動の流れ

  1. コマンダーサービスが起動し、APIキーとURLをボルトレコードに保存します。

  2. ヘルスチェックにより、コマンダーサービスの状態を検証します。

  3. ヘルスチェック完了後にGoogle Chatアプリが起動します。

起動の確認

コンテナの状態を確認します。

コマンダーサービスのログを確認します。

Google Chatアプリのログを確認します。

アプリが想定どおりに動作していることを確認したら、以下のリンクの手順に従ってアプリを組織内向けに公開します。公開後、組織内のユーザーはKeeper Google Chatアプリをインストールし、アクセス申請を行えるようになります。


申請ユーザー向けコマンドリファレンス

/keeper-request-record

特定のKeeperレコードへのアクセスを申請します。

構文:

/keeper-request-folder

共有フォルダへのアクセスを申請します。

構文:

/keeper-create-secret

自分と共有されている共有フォルダ内に、新しいシークレットレコードを作成します。

構文:

/keeper-external-share

外部ユーザーまたはベンダー向けに、レコードのワンタイム共有リンクを申請します。

構文:


スクリーンショット

以下のスクリーンショットでは、Keeper Google Chatアプリの主要機能を紹介しています。

Google Chatアプリを使用したリクエスト操作


レコードへのアクセス申請 (UID未指定)


レコードへのアクセス申請 (UID指定あり)


階層型 / 新レコードタイプ [NSF] の検索 - 管理者ビュー


レコードアクセス申請 - 管理者ビュー


フォルダへのアクセス申請 (UID指定あり)


フォルダアクセス申請 - 管理者ビュー


NSFフォルダの権限付き検索 - 管理者ビュー


ベンダー向け外部 / ワンタイム共有申請


クラシックおよび新レコード作成 - 管理者ビュー


セルフサーブレコード作成 (申請ユーザー)


ワンタイム共有 - 既存レコード検索付き管理者ビュー


エンドポイント特権マネージャー - 昇格承認


SSOクラウドデバイス承認 - 管理者ビュー


アップデート

コマンダーサービスモードおよびGoogle Chatアプリコンテナの更新

コマンダーまたはGoogle Chatアプリを更新するには、サービスを停止し、コンテナを更新したうえで再起動します。


トラブルシューティング

起動エラー

エラー
原因
対処方法

コマンダーサービスモードがマスターパスワードを要求している

ボルトレコードに複数のconfig.jsonファイルが添付されている

gchat-app-setup を新しいフォルダ名で実行し、新しいJSON構成ファイルを作成する

[WARN] Warning: Cannot reach Keeper Service Mode

サービスモードが稼働していない、またはURLが誤っている

ボルトレコード内のサービスURLを確認する


サービスモードのエラー

エラー
原因
対処方法

Failed to submit command: HTTP 403

APIキーが無効または欠落している

構成ボルトレコードのapi_keyがサービスモード側と一致するか確認する

Failed to submit command: HTTP 404

APIエンドポイントのバージョンが誤っている

V2エンドポイントを使用する: /api/v2/ (/api/v1/ ではなく)

Failed to submit command: HTTP 405

間違ったHTTPメソッドを使用している

サービスモードがキュー (queue) を有効にして実行されていることを確認する

Command timed out or failed

サービスモードが過負荷、またはコマンドが登録されていない

サービスモードにコマンドを登録する。タイムアウトを延長する

No request_id received from API

サービスモードがキュー / 非同期モードを使用していない

サービスモードをキュー有効 (V2) で再起動する


アクセス付与エラー

エラー
原因
対処方法

Record Not Found

UIDが無効、またはレコードが削除されている

指定したレコードUIDがKeeperボルト内に存在することを確認する

Folder Not Found

フォルダUIDが無効

指定したフォルダUIDがKeeperボルト内に存在することを確認する

Invalid UID Type (record vs folder)

アイテム種別に対して誤ったコマンドを使用している

フォルダには/keeper-request-folder、レコードには/keeper-request-recordを使用する

This user already has time-limited access...

既存の共有設定と競合している

既存のアクセス権を一度取り消してから、新しい権限を付与する

Share permissions require permanent access

期間指定と共有権限 (Can Share / Edit & Shareなど) を併用している

共有権限 (Can Share、Edit & Share、Change Owner) は常に永続的なアクセスとなる

User share...failed

フォルダ内の権限競合

既存のアクセス権が競合している可能性がある。既存権限を取り消し、再度付与する


検索およびモーダルエラー

エラー
原因
対処方法

No records found matching...

検索条件が限定的すぎる、または一致するレコードが存在しない

検索条件を広げる。対象レコードがボルト内に存在することを確認する

Search command timed out

サービスモードの応答が遅い、またはボルトの規模が非常に大きい

_poll_for_result() のmax_waitを増やす、または検索条件をより具体的にする

Error processing search modal submission

モーダルのデータが破損している、または有効期限切れ

モーダルを閉じて再度実行する。ログで詳細なエラーを確認する

Modal shows "Searching..." forever

結果取得処理が完了していない

サービスモードのログを確認し、検索コマンドが正しく登録されているか確認する


外部 / ワンタイム共有エラー

エラー
原因
対処方法

one-time share links can not be created for PAM records

コマンダーがPAMレコードのワンタイム共有に対応していない

PAM以外のレコードに対して申請する

Share link created but URL not found in response

サービスモードの応答形式が想定外

サービスモードのバージョンを確認し、one-time-shareコマンドが登録されていることを確認する

Failed to create one-time share

レコードが共有可能な状態ではない

対象レコードに対してユーザーが共有権限を持っていることを確認する


レコード作成エラー

エラー
原因
対処方法

Failed to create record

必須フィールドの不足、またはコマンドエラー

title、login、passwordが指定されていることを確認する

Record created but UID could not be retrieved

作成後の検索に失敗している

レコードは作成済みだが検索がタイムアウトしている可能性がある。ボルト内で手動検索する


KEPMエラー

エラー
原因
対処方法

No data returned

KEPM機能が有効になっていない

Keeperエンタープライズ設定でKEPMを有効化する。サービスユーザーに必要な管理者権限が付与されていることを確認する。

KEPM sync failed

サービスモードがKEPMサーバーに接続できない

ネットワーク接続およびKEPMの設定を確認する

Failed to approve/deny KEPM request

リクエストの有効期限が切れている可能性がある

リクエストがまだ保留中か確認する。自動的に期限切れになっている場合がある

参考

最終更新