> For the complete documentation index, see [llms.txt](https://docs.keeper.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.keeper.io/keeperpam/jp/secrets-manager/integrations/google-chat-app.md).

# Google Chatアプリ

<figure><img src="/files/xSSP3CgDCOcqYcPdE0Am" alt=""><figcaption></figcaption></figure>

## 概要

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

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

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

## 機能

<table><thead><tr><th width="309.94140625">機能</th><th>説明</th></tr></thead><tbody><tr><td><strong>レコードアクセス申請</strong></td><td>ユーザーは、KeeperPAMリソースを含む個々のボルトレコードに対して、期限付きまたは永続的なアクセスを申請できます。承認者は申請の詳細をすべて確認し、カスタムの権限レベルを付与できます。PAMユーザーレコードでは、一時アクセスの期限切れ時に認証情報を自動ローテーションする設定も任意で可能です。</td></tr><tr><td><strong>フォルダアクセス申請</strong></td><td>クラシック共有フォルダまたは階層型共有フォルダ (NSF) へのアクセスを、細かい権限制御付きでユーザーに付与できます。期限付きアクセスに対応し、PAMユーザーフォルダでは期限切れ時のパスワードローテーションも任意で設定できます。</td></tr><tr><td><strong>外部共有 / ワンタイム共有申請</strong></td><td>パスワード、認証情報、機密データ向けに、安全な自己消滅型の共有リンクを生成できます。リンクは表示専用にすることも、双方向共有向けに編集可能にすることもできます。</td></tr><tr><td><strong>セルフサーブレコード作成</strong></td><td>エンジニアは、すでにアクセス権を持つ共有フォルダに直接新しい認証情報を追加できます。<code>/keeper-create-secret</code> コマンドは、フォルダ選択からレコード作成までをフォーム形式で案内し、作成後は管理者に自動で通知されます。</td></tr><tr><td><strong>エンドポイント特権マネージャー承認</strong></td><td>KEPMの昇格リクエストをリアルタイムで処理します。ユーザーがエンドポイント上で一時的な管理者権限を必要とする場合、承認カードが指定のGoogle Chatスペースに即時表示されます。</td></tr><tr><td><strong>SSOクラウドデバイス承認</strong></td><td>Keeperオートメーターを導入していない場合でも、Google Chat経由で新しいSSOクラウドデバイスを承認できます。管理者はデバイス承認リクエストを受け取り、ワンクリックで承認または拒否できます。</td></tr></tbody></table>

***

## 要件

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

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

<table><thead><tr><th width="262.71484375">要件</th><th>詳細</th></tr></thead><tbody><tr><td>Linux VM</td><td>Google ChatおよびKeeperサービスへのアウトバウンドHTTPS接続が可能な、クラウドまたはオンプレミス上の任意のVM。</td></tr><tr><td>Docker</td><td>サービスのセットアップにはDockerの使用を推奨。</td></tr><tr><td>Keeperコマンダー</td><td>サービスモードが実行中で、アクセス可能であること。</td></tr><tr><td>Keeperシークレットマネージャー</td><td>シークレット設定データの取得に、KeeperシークレットマネージャーまたはKeeperPAMライセンスが必要。</td></tr><tr><td>Google Workspaceアカウント</td><td>Chatアプリの登録およびAPI有効化のための管理者アクセス権が必要。</td></tr><tr><td>Google Cloudプロジェクト</td><td>Pub/Subインフラストラクチャおよびサービス認証情報を格納。</td></tr></tbody></table>

{% hint style="warning" %}
重要: `gchat-app-setup` コマンドを実行するには、Keeperシークレットマネージャー (KSM) を有効化しておく必要があります。KSMをご利用いただけない場合は、担当のアカウントマネージャーまでお問い合わせください。
{% endhint %}

## セットアップ手順

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

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

1. [Google Cloudプロジェクトのセットアップ](#step-1.-set-up-google-cloud-project)
2. [サービスアカウントとキーの作成](#step-3.-generate-service-credentials)
3. [Pub/Subメッセージングの設定](#step-3.-configure-pub-sub-messaging)
4. [IAM権限の付与](#step-4.-grant-iam-permissions)
5. [Chatアプリケーションの登録](#step-5.-register-the-chat-application)
6. [承認用スペースの準備](#step-6.-prepare-the-approvals-space)
7. [コマンダーサービスモードの設定](#step-7.-commander-service-mode-setup)
8. [Google Chatアプリ設定コマンドの実行](#step-8.-run-google-chat-app-setup-command)
9. [Docker環境へのデプロイ](#step-9.-deploy-to-docker-environment)

***

### 1. Google Cloudプロジェクトのセットアップ <a href="#step-1.-set-up-google-cloud-project" id="step-1.-set-up-google-cloud-project"></a>

1. [Google Cloud Console](https://console.cloud.google.com/) にアクセスします。
2. Keeper専用のプロジェクトを作成します (名前の例: Keeper Security Google chat App)。

<figure><img src="/files/2rISRvgt4wLK9L4yKLEt" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
プロジェクトIDを記録しておきます。このIDは、セットアップ手順全体を通して必要になります。
{% endhint %}

<figure><img src="/files/OcJZHYP5bzrMcUU17nCV" alt=""><figcaption></figcaption></figure>

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

* **\[APIs & Services]** (APIとサービス) → **\[Library]** (ライブラリ) を開きます。
* Google Chat APIを検索して有効化します。

<figure><img src="/files/npEvhK0wDOhYPQcIDv7E" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/OdZOdzFj5GzK7vmZShGK" alt=""><figcaption></figcaption></figure>

***

#### 2. サービスアカウントとキーの作成 <a href="#step-3.-generate-service-credentials" id="step-3.-generate-service-credentials"></a>

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

1. **\[IAM & Admin]** (IAMと管理) → **\[Service Accounts]** (サービスアカウント) に移動します。
2. **\[Create Service Account]** (サービスアカウントを作成) を選択します。

<figure><img src="/files/gOwpu7jvRm7cTpOtLsch" alt=""><figcaption></figcaption></figure>

3. わかりやすい名前を入力します (例: `keeper-chat-worker`) → 作成します。
4. アカウントを開きます → **\[Keys]** (キー) → **\[Add key]** (キーを追加) → **\[Create new key]** (新しいキーを作成) → **\[JSON]**。
5. ダウンロードしたファイルの名前を `service-account.json` に変更して保存します。

{% hint style="info" %}
`service-account.json` は手順8で使用します。
{% endhint %}

***

### 3. Pub/Subメッセージングの設定 <a href="#step-3.-configure-pub-sub-messaging" id="step-3.-configure-pub-sub-messaging"></a>

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

a. トピックの作成

1. Cloud Consoleで **\[Pub/Sub]** → **\[Topics]** (トピック) を開きます。
2. トピックIDを入力します (`keeper-chat-events`)。
3. 「Add a default subscription」(デフォルトのサブスクリプションを追加) のチェックを外します (カスタムのサブスクリプションを別途作成するため)。

<figure><img src="/files/BGePIBScwFRMAmktraJg" alt=""><figcaption></figcaption></figure>

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

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

1. **\[Pub/Sub]** → **\[Subscriptions]** (サブスクリプション) に移動します ([直接リンク](https://console.cloud.google.com/cloudpubsub/subscription/list))。
2. **\[Create Subscription]** (サブスクリプションを作成) を選択します。

<figure><img src="/files/CT1aKcHqGqiQFcusg1rP" alt=""><figcaption></figcaption></figure>

3. サブスクリプションIDを入力します (`keeper-chat-events-sub`)。
4. 手順3(a) で作成したトピックを選択します。
5. 配信設定を行います。
   * 配信タイプ: Pull
   * 確認応答の期限: `60秒`
6. その他の項目は既定値のままにして **\[Create]** (作成) をクリックします。

***

### 4. IAM権限の付与 <a href="#step-4.-grant-iam-permissions" id="step-4.-grant-iam-permissions"></a>

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 |

<figure><img src="/files/HMzP1XU7gGEiHEdzRrax" alt=""><figcaption></figcaption></figure>

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

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

| プリンシパル                                                         | ロール                |
| -------------------------------------------------------------- | ------------------ |
| `keeper-chat-worker@<YOUR_PROJECT_ID>.iam.gserviceaccount.com` | Pub/Sub Subscriber |

<figure><img src="/files/6JmkLSzXemzKV276ZOCh" alt=""><figcaption></figcaption></figure>

***

### 5. Chatアプリケーションの登録 <a href="#step-5.-register-the-chat-application" id="step-5.-register-the-chat-application"></a>

{% hint style="warning" %}
重要: 「Deploy as a Google Workspace Add-on」(Google Workspaceアドオンとしてデプロイ) はチェックしないでください。有効にすると構成がロックされ、以後の変更ができなくなります。
{% endhint %}

1. [Google Cloud Console](https://console.cloud.google.com/) に戻ります。
2. **\[APIs & Services]** (APIとサービス) → **\[Enabled APIs & services]** (有効なAPIとサービス) を開きます。
3. Google Chat APIをクリックします。

<figure><img src="/files/nGEzxGQznC0y1KBRlPIq" alt=""><figcaption></figcaption></figure>

4. **\[Configuration]** (構成) タブを選択します。
5. アプリケーションプロフィールを入力します。

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

| 項目                                  | 値                                                                                                                                              |
| ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| App name                            | `Keeper Security`                                                                                                                              |
| Avatar URL                          | [`https://keeper-email-images.s3.amazonaws.com/common/256x256_icon.png`](https://keeper-email-images.s3.amazonaws.com/common/256x256_icon.png) |
| 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`                                                                                           |

<figure><img src="/files/gSZeCg3kkK5gVxJntYdo" alt=""><figcaption></figcaption></figure>

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

<table><thead><tr><th width="226.640625">コマンド</th><th width="132.16015625">コマンドID</th><th width="212.26171875">説明</th></tr></thead><tbody><tr><td><code>/keeper-request-record</code></td><td>1</td><td>Keeperボルトレコードへのアクセスを申請</td></tr><tr><td><code>/keeper-request-folder</code></td><td>2</td><td>Keeper共有フォルダへのアクセスを申請</td></tr><tr><td><code>/keeper-external-share</code></td><td>3</td><td>外部共有用にKeeperボルトレコードへのアクセスを申請</td></tr><tr><td><code>/keeper-create-secret</code></td><td>4</td><td>Keeperの共有フォルダに新しいレコードを作成</td></tr></tbody></table>

<figure><img src="/files/XgHMRa5p5xOd4qDgIimm" alt=""><figcaption></figcaption></figure>

7. **\[Visibility]** (公開範囲) セクションで表示設定を行います。
   * **\[Development/Testing Users]** (開発 / テストユーザー) に自分の**メールアドレス**を追加します。

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

7. 設定を保存します。

***

### 6. 承認用スペースの準備 <a href="#step-6.-prepare-the-approvals-space" id="step-6.-prepare-the-approvals-space"></a>

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

1. [Google Chat](https://chat.google.com/) を開きます。
2. **\[Spaces]** (スペース) で **\[Create space]** (スペースを作成) を選択します。
3. スペースを設定します。
   * 名前: `Keeper-vault-Approvers` (任意の名前に変更可)
   * アクセス申請への対応を行うチームメンバーを追加します。

<figure><img src="/files/QsKeGOnafWLxEi3unhgK" alt=""><figcaption></figcaption></figure>

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

* スペース名をクリック → **\[View details]** (詳細を表示)
* **\[Apps & integrations]** (アプリと連携) → **\[Add apps]** (アプリを追加) を選択
* 「Keeper Security」を検索して追加します。

<figure><img src="/files/jTc75KAD5DIZFiSS2QNK" alt=""><figcaption></figcaption></figure>

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

* URLは次の形式で表示されます: `https://chat.google.com/chat/XXXXXXXXX`
* スペースIDは次のとおりです: `spaces/XXXXXXXXX`

{% hint style="info" %}
`Space ID` (スペースID) は手順8で使用します。
{% endhint %}

***

### 7. コマンダーサービスモードの設定 <a href="#step-7.-commander-service-mode-setup" id="step-7.-commander-service-mode-setup"></a>

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

* ローカル環境に[Keeperコマンダーをインストール](/keeperpam/jp/commander-cli/commander-installation-setup.md)します。
* 必要に応じて、本連携専用のKeeperサービスアカウントを新規作成します。対象となるレコードおよびフォルダへのアクセス権と、レコードおよびフォルダの共有を実行できる権限を付与してください。
* Keeperサービスアカウント (`serviceuser@company.com`) でコマンダーにログインします。

```
keeper shell
My Vault> login serviceuser@company.com
```

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

***

### 8. Google Chatアプリ設定コマンドの実行 <a href="#step-8.-run-google-chat-app-setup-command" id="step-8.-run-google-chat-app-setup-command"></a>

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

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

```
gchat-app-setup
```

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

| パラメータ                     | 説明                    | 既定値                                           |
| ------------------------- | --------------------- | --------------------------------------------- |
| --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                                         |

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

```
gchat-app-setup --folder-name "My Google Chat Integration" --timeout 7d
```

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

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

```bash
Phase 1: Running Docker Service Mode Setup
═══════════════════════════════════════════════════════════
    Docker Setup
═══════════════════════════════════════════════════════════

[1/7] Checking device settings...
[2/7] Creating shared folder 'Commander Service Mode - Google Chat App'...
[3/7] Creating record 'Commander Service Mode Docker Config'...
[4/7] Uploading config.json attachment...
[5/7] Creating Secrets Manager app 'Commander Service Mode - KSM App'...
[6/7] Sharing folder with app...
[7/7] Creating client device and generating config...

✓ Docker Setup Complete!
```

**サービス設定**

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

<table><thead><tr><th width="155.578125">プロンプト</th><th>説明</th><th>例</th></tr></thead><tbody><tr><td>Port</td><td>コマンダーサービスモードで使用するポート番号 (1024～65535)。</td><td>8900</td></tr></tbody></table>

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

<table><thead><tr><th width="236.83984375">プロンプト</th><th>説明</th></tr></thead><tbody><tr><td>Ngrok Auth Token</td><td>公開URLを生成するためのngrok認証トークン。</td></tr><tr><td>Ngrok Custom Domain</td><td>カスタムngrokドメイン (例: myapp.ngrok.io)。</td></tr><tr><td>Cloudflare Tunnel Token</td><td>公開URLを生成するためのCloudflareトンネルトークン。</td></tr><tr><td>Cloudflare Custom Domain</td><td>設定済みのCloudflareカスタムドメイン (例: gchat.company.com)。</td></tr></tbody></table>

{% hint style="warning" %}
NgrokとCloudflareは同時に使用できません。Google Chatアプリの利用において必須ではありませんが、Jiraアプリなど他の連携機能を使用する場合は、トンネルの設定が必要になることがあります。Cloudflareドメインの例: `gchat.company.com`
{% endhint %}

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

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

<table><thead><tr><th width="148.7578125">プロンプト</th><th width="214">説明</th><th>例</th></tr></thead><tbody><tr><td>サービスアカウントJSONファイルのパス (必須)</td><td>Pub/SubのPullおよびGoogle Chat APIに使用するGCPサービスアカウントJSONキーのパス。JSONのインライン貼り付けは受け付けられません。</td><td>/path/to/service-account.json</td></tr><tr><td>プロジェクトID (必須)</td><td>GCPプロジェクトID。Enterキーを押すと、サービスアカウントJSON内の <code>project_id</code> が使用されます。サービスアカウントのプロジェクトと異なる場合は、続行前に確認してください。</td><td>your-gcp-project-id</td></tr><tr><td>トピックID (必須)</td><td>Google Chatのイベントを受け取るPub/Subトピック。</td><td>keeper-chat-events</td></tr><tr><td>サブスクリプションID (必須)</td><td>イベントのPullに使用するPub/Subサブスクリプション。</td><td>keeper-chat-events-sub</td></tr><tr><td>スペースID (必須)</td><td>承認カードを投稿するGoogle Chatスペース。<code>spaces/</code> で始まり、スペースIDを含む必要があります。</td><td>spaces/&#x3C;YOUR_ID></td></tr><tr><td>/keeper-request-recordコマンドID</td><td>コンソールで登録したスラッシュコマンドIDと一致させる必要があります。</td><td>1</td></tr><tr><td>/keeper-request-folderコマンドID</td><td>コンソールで登録したスラッシュコマンドIDと一致させる必要があります。</td><td>2</td></tr><tr><td>/keeper-external-shareコマンドID</td><td>コンソールで登録したスラッシュコマンドIDと一致させる必要があります。</td><td>3</td></tr><tr><td>/keeper-create-secretコマンドID</td><td>コンソールで登録したスラッシュコマンドIDと一致させる必要があります。</td><td>4</td></tr><tr><td>Enable PEDM? (任意)</td><td>エンドポイント特権マネージャー承認を有効化するかどうか (y/n)。</td><td>y</td></tr><tr><td>PEDM Polling Interval (任意)</td><td>秒数。既定値は120。</td><td>120</td></tr><tr><td>Enable Device Approvals? (任意)</td><td>SSOクラウドデバイス承認を有効化するかどうか (y/n)。</td><td>y</td></tr><tr><td>Device Approval Polling Interval (任意)</td><td>秒数。既定値は120。</td><td>120</td></tr></tbody></table>

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

* `google_service_account_json` (シークレット)、`google_project_id`、`google_topic_id`、`google_subscription_id`
* `chat_approvals_space_id`、`chat_command_request_record_id`、`chat_command_request_folder_id`、`chat_command_external_share_id`、`chat_command_create_secret_id`
* 任意項目の `pedm_*` および `device_approval_*` の各フィールド

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

{% code overflow="wrap" %}

```yaml
services:
  commander:
    container_name: keeper-service
    ports:
    - 127.0.0.1:<port>:<port>
    image: keeper/commander:latest
    command: service-create -p <port> -c 'search,share-record,share-folder,record-add,one-time-share,pedm,device-approve,get,ls,share-report,tree' -f json -q y -ur <CONFIG_RECORD_UID> --ksm-config <KSM_CONFIG_BASE64_VALUE> --record <CONFIG_RECORD_UID>
    healthcheck:
      test:
      - CMD-SHELL
      - python -c "import sys, urllib.request; sys.exit(0 if urllib.request.urlopen('http://localhost:<port>/health', timeout=2).status == 200 else 1)"
      interval: 60s
      timeout: 3s
      start_period: 10s
      retries: 30
    restart: unless-stopped
  gchat-app:
    container_name: keeper-gchat-app
    image: keeper/gchat-app:latest
    environment:
      KSM_CONFIG: <KSM_CONFIG_BASE64_VALUE>
      COMMANDER_RECORD: <CONFIG_RECORD_UID>
      GCHAT_RECORD: <GCHAT_CONFIG_RECORD_UID>
    depends_on:
      commander:
        condition: service_healthy
    restart: unless-stopped
```

{% endcode %}

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

```
My Vault> quit
$ rm ~/.keeper/config.json
```

***

### 9. Docker環境へのデプロイ <a href="#step-9.-deploy-to-docker-environment" id="step-9.-deploy-to-docker-environment"></a>

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

* Linux VMを起動するか、Linuxホストを準備し、SSHで接続します。
* `docker` および `docker-compose` をインストールします。[LinuxへのDockerインストール](/keeperpam/jp/privileged-access-manager/references/installing-docker-on-linux.md) をご参照ください。
* 手順7で生成した `docker-compose.yml` ファイルを、対象のホストへ転送します。

サービスを起動します。

```
docker compose up -d
```

**サービス起動の流れ**

1. コマンダーサービスが起動し、APIキーとURLをボルトレコードに保存します。
2. ヘルスチェックにより、コマンダーサービスの状態を検証します。
3. ヘルスチェック完了後にGoogle Chatアプリが起動します。

**起動の確認**

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

```bash
$ docker ps
NAME              STATUS                    PORTS
keeper-service    Up (healthy)              127.0.0.1:<port> -> <port>/tcp
keeper-gchat-app  Up
```

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

```bash
$ docker logs keeper-service
[2026-01-21 10:00:00] Starting Commander Service Mode...
Generated API key: ****nQ= (stored in vault record: <CONFIG_VAULT_RECORD>)
Commander Service starting on <SERVICE_URL>/api/v2
Keeper Commander Service initialization complete
```

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

```
docker logs keeper-gchat-app
```

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

[Keeper Google Chatアプリを組織内で公開する](/keeperpam/jp/secrets-manager/integrations/google-chat-app/publishing-the-keeper-google-chat-app-internally.md)

***

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

#### /keeper-request-record

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

構文:

```
/keeper-request-record <record-uid-or-description> <justification>

例:-
/keeper-request-record kR3cF9Xm2Lp8NqT1uV6w Emergency server access
/keeper-request-record "prod db EU region" Need to run migration
```

#### /keeper-request-folder

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

構文:

```
/keeper-request-folder <folder-uid-or-description> <justification>

例:-
/keeper-request-folder kF8zQ2Nm5Wx9PtR3sY7a Need staging access
/keeper-request-folder "Staging Team Folder" Need staging access
```

#### /keeper-create-secret

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

構文:

<pre><code>/keeper-create-secret

このコマンドは、以下の手順を含む対話形式のフォームを開きます。

1.共有フォルダの選択: Keeperアカウントと共有されている共有フォルダのみが表示されます。
<strong>2.サブフォルダの選択 (任意): 選択した共有フォルダにサブフォルダが含まれる場合、いずれかを選択できます。
</strong>3.レコード詳細の入力: レコードの各フィールドに入力します。
   a. タイトル (必須)
   b. ログイン (任意)
<strong>   c. パスワード (任意: パスワードを入力するか、上の自動生成チェックボックスをオンにします)
</strong>   d. URL (任意)
   e. メモ (任意)
確認: モーダルに作成されたレコードのUIDとフォルダパスが表示されます。
管理者には承認用スペースで次のように通知されます。「User @name created record &#x3C;UID> in SharedFolder / Subfolder」

注: フォルダの表示が正しく機能するには、申請ユーザーのGoogle Workspaceのメールアドレスが、Keeperアカウントのメールアドレスと一致している必要があります。
</code></pre>

#### /keeper-external-share

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

構文:

```
/keeper-external-share <record-uid-or-description> <justification>

例:-
/keeper-external-share kR3cF9Xm2Lp8NqT1uV6w Need to share with contractor John
/keeper-external-share "AWS Production Password" Sharing with vendor
```

***

## スクリーンショット

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

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

<figure><img src="/files/WjaQMcaGvMrnJ26fk4ac" alt=""><figcaption></figcaption></figure>

***

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

<figure><img src="/files/Ix0EBHukcJGfaQXhgkek" alt=""><figcaption></figcaption></figure>

***

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

<figure><img src="/files/kv9DNNTHy8XaZqZmzog9" alt=""><figcaption></figcaption></figure>

***

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

<figure><img src="/files/jUlFIq7IcsWz9skDVsDJ" alt=""><figcaption></figcaption></figure>

***

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

<figure><img src="/files/DZibeKhoaUBhWhiUJLEI" alt=""><figcaption></figcaption></figure>

***

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

<figure><img src="/files/k24DQ6RIlGxi0DxjMyHR" alt=""><figcaption></figcaption></figure>

***

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

<figure><img src="/files/FAXFA5DqPW1Qjpx7YNEV" alt=""><figcaption></figcaption></figure>

***

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

<figure><img src="/files/9idW5Dt3dmvM5cTmPMt4" alt=""><figcaption></figcaption></figure>

***

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

<figure><img src="/files/uqjhrn7iJIa4eJEFHInO" alt=""><figcaption></figcaption></figure>

***

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

<figure><img src="/files/FjsknkepCrQlGtl1zWx2" alt=""><figcaption></figcaption></figure>

***

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

<figure><img src="/files/4KXXEV9RkV484H4nRaBc" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/SqQQ4cWWf4jiSeEkaTNP" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/2CEAe66FLwu5mtar2WoS" alt=""><figcaption></figcaption></figure>

***

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

<figure><img src="/files/OJ0JqB1Jaj4cQDdiPk6t" alt=""><figcaption></figcaption></figure>

***

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

<figure><img src="/files/N5zKtc500taGt3ekAXbA" alt=""><figcaption></figcaption></figure>

***

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

<figure><img src="/files/V8NCu7T5HafYPxhYKbS2" alt=""><figcaption></figcaption></figure>

***

## アップデート

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

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

```bash
docker compose down
docker compose pull
docker compose up -d
```

***

## トラブルシューティング <a href="#troubleshooting" id="troubleshooting"></a>

#### 起動エラー

<table><thead><tr><th>エラー</th><th width="230.42578125">原因</th><th>対処方法</th></tr></thead><tbody><tr><td>コマンダーサービスモードがマスターパスワードを要求している</td><td>ボルトレコードに複数のconfig.jsonファイルが添付されている</td><td><code>gchat-app-setup</code> を新しいフォルダ名で実行し、新しいJSON構成ファイルを作成する</td></tr><tr><td>[WARN] Warning: Cannot reach Keeper Service Mode</td><td>サービスモードが稼働していない、またはURLが誤っている</td><td>ボルトレコード内のサービスURLを確認する</td></tr></tbody></table>

***

#### サービスモードのエラー

| エラー                                | 原因                           | 対処方法                                     |
| ---------------------------------- | ---------------------------- | ---------------------------------------- |
| 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 | リクエストの有効期限が切れている可能性がある  | リクエストがまだ保留中か確認する。自動的に期限切れになっている場合がある                          |

### 参考 <a href="#references" id="references"></a>

* [コマンダーCLIの概要](/keeperpam/jp/commander-cli/overview.md)
* [コマンダーサービスモード](/keeperpam/jp/commander-cli/service-mode-rest-api.md)
* [エンドポイント特権マネージャー](/keeperpam/jp/endpoint-privilege-manager/overview.md)
* [クラウドSSOコネクト](https://docs.keeper.io/sso-connect-cloud/jp/)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.keeper.io/keeperpam/jp/secrets-manager/integrations/google-chat-app.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
