# ゲストモード

## 概要

教育環境など、インターネットアクセスを制御してユーザーに提供することが必要となる場合があります。本ページでは、Keeperコネクションマネージャー (KCM) の「ゲストモード」とリモートブラウザ分離を利用して、そのようなアクセスを実現する方法について取り扱います。

この実装例では、ユーザーのウェブブラウジングアクセスを設定し、一連の事前承認されたウェブサイトに制限します。ユーザーには、これらの承認されたウェブサイトから選択できるカスタム「ホームページ」を表示します。このアプローチは、教室や試験環境など、インターネットへの完全なアクセスが許可されていない環境で特に有用となります。

ウェブサイト例: <https://guest-mode-demo.com>

<figure><img src="https://4041518992-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ7s6LQJaKa1G17O787JG%2Fuploads%2FNm135f3iFQ19xUqFtIOo%2Fimage.png?alt=media&#x26;token=bfa2f5b4-485e-4e91-bfd2-ec3b95ea9006" alt=""><figcaption><p>生徒用ゲストモードのデモ</p></figcaption></figure>

Keeperコネクションマネージャーを使用することで、ファイアウォールベースの制限などの従来の方法に比べて、以下のような利点があります。

1. **セッションの監視**: すべてのブラウジングセッションは完全に記録できるので、監査とアカウンタビリティに役立ちます。
2. **アクセスの簡便さ**: ユーザーは追加のソフトウェアをインストールすることなくシームレスに接続できます。
3. **デバイス非依存**: ユーザーのデバイス上のブラウザのバージョンやタイプによって機能に影響が出ることはありません。
4. **セキュリティの強化**: リモートブラウザ分離セッションを使用することで、デバイスがデータの漏洩、悪意のあるサイト、潜在的な操作から保護されます。

本ページでは、教育機関や類似の事例に対応するために、専用のKCMインスタンスで制御されたブラウジング環境を設定する手順について取り扱います。

## **要件**

ゲストモードをセットアップするには、以下が必要となります。

* KCMがドキュメントに記載通り[Docker自動インストール](https://docs.keeper.io/keeper-connection-manager/installation/auto-docker-install)方法でインスタンスにインストールされていること。
* DNS名が割り当てられ、Let's Encryptまたは他の方法でSSLが設定されていること。
* `guacadmin`としてKeeperコネクションマネージャーにログインできること。

この例では、<https://guest-mode-demo.com>のデモサイトを設定します。

## ゲストモードの有効化

ゲストモード機能を有効にするには、以下を実行します。

* [ゲストモード拡張機能をビルドする](#gesutomdowobirudosuru)
* [デフォルトの接続を設定する](#deforutonowosuru)
* [Docker Composeを変更する](#docker-composewosuru)
* [拡張JARファイルをアップロードする](#jarfairuwoappurdosuru)
* [コンテナを更新する](#kontenawosuru)

## ゲストモード拡張機能をビルドする

KCMのゲストモードのソースコードは、以下のGitHubページで公開されています。

{% embed url="<https://github.com/Keeper-Security/kcm-auth-guest>" %}

.zipファイルをダウンロードするか、Gitリポジトリをワークステーションまたはサーバーにクローンします。

最新のJava 17がインストールされていることを確認します。

```
$ java -version

openjdk version "17.0.13" 2024-10-15 LTS
OpenJDK Runtime Environment Corretto-17.......
OpenJDK 64-Bit Server VM Corretto-17......
```

Javaがインストールされていない場合は、[Amazon Corretto](https://aws.amazon.com/corretto)の使用をお勧めします。ご利用の環境に合わせたインストール手順をご参照ください。

ターミナルでリポジトリの場所に移動し、Mavenを使用してビルドします。Mavenがインストールされていない場合は、以下のコマンドを使用します (Macの場合)。

```
brew install maven
```

リポジトリのフォルダからJARファイルをビルドします。

```
mvn clean package
```

生成されたJARファイルは、ローカルのフォルダ構造に保存されます。

```
[INFO] Building jar: /Path/to/kcm-auth-guest-main/target/kcm-auth-guest-1.5.2-2.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  22.350 s
[INFO] Finished at: 2025-01-19T07:58:48-08:00
[INFO] ------------------------------------------------------------------------
```

次の手順のために、`kcm-auth-guest-1.5.2-2.jar` パッケージを保存します。

## デフォルトの接続を設定する

`guacadmin`ユーザーアカウントまたは他の管理者アカウントでKeeperコネクションマネージャーにログインします。

**\[設定]** > **\[接続]**&#x3078;移動し、**リモートブラウザ分離**接続を作成します。

<figure><img src="https://4041518992-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ7s6LQJaKa1G17O787JG%2Fuploads%2FTSooSHi38u58pvurUoul%2Fimage.png?alt=media&#x26;token=1f50d434-86e3-42e0-97cd-a1c59fa4fe77" alt=""><figcaption></figcaption></figure>

ランディングページのURLを使用してホスト名を設定します。この例では、<https://lurey.com/demo.html>を使用します。

<figure><img src="https://4041518992-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ7s6LQJaKa1G17O787JG%2Fuploads%2FNPGAo2mTCzep4DAX20H4%2Fimage.png?alt=media&#x26;token=62d795a9-06c6-43c5-bbaa-1e2c8b924158" alt=""><figcaption></figcaption></figure>

セッション録画が必要な場合は、録画パスに `${HISTORY_PATH}/${HISTORY_UUID}` の値を入力し、接続詳細を保存します。<br>

<figure><img src="https://4041518992-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ7s6LQJaKa1G17O787JG%2Fuploads%2FoYwoOLIibosE4ifJEeHh%2Fimage.png?alt=media&#x26;token=0e5a04d1-ef47-499b-9e04-cd608c149f57" alt=""><figcaption></figcaption></figure>

接続を保存します。

<figure><img src="https://4041518992-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ7s6LQJaKa1G17O787JG%2Fuploads%2FHuI1HnlmN1hExDRemhhd%2Fimage.png?alt=media&#x26;token=1881266d-b40a-4052-b7fd-37c8ac78bed4" alt=""><figcaption></figcaption></figure>

次に、「`guests`」という名前のグループを作成し、それを接続に割り当てます。

<figure><img src="https://4041518992-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ7s6LQJaKa1G17O787JG%2Fuploads%2FPlrD6IumETbrvcViBlax%2Fimage.png?alt=media&#x26;token=d91c09e3-ced7-4d4a-9fda-56e6ed20701d" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4041518992-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ7s6LQJaKa1G17O787JG%2Fuploads%2FYemfiMWrP6lffE6PJ4YI%2Fimage.png?alt=media&#x26;token=0d9ce150-dc03-4be7-8896-0fc6d97ed095" alt=""><figcaption><p>デモホームページを「guests」グループに割り当てる</p></figcaption></figure>

## Docker Composeを変更する

`/etc/kcm-setup/docker-compose.yml`にある**guacamole**セクションに以下の変更を加えます。

* `ADDITIONAL_GUACAMOLE_PROPERTIES`をguacamoleのenvironmentセクションに追加します。
* `XX.XX.XX.XX`を「admin」として扱い、ゲストモードから除外するIPアドレスに置き換えます。これはKCM設定の変更が必要な場合に使用します。
* 最初の手順で作成したKCM Auth Guestプラグインのボリュームマウントを追加します。

{% code overflow="wrap" %}

```
        guacamole:
        ...
        environment:
            ADDITIONAL_GUACAMOLE_PROPERTIES: "kcm-non-guest-networks:XX.XX.XX.XX"
        volumes:
            - "/etc/kcm-setup/kcm-auth-guest-1.5.2-2.jar:/etc/guacamole/extensions/kcm-auth-guest-1.5.2-2.jar:ro"
```

{% endcode %}

#### 備考

`kcm-non-guest-networks`は、ゲストユーザーとして扱わないIPアドレスおよび/またはサブネット (CIDR表記) のカンマ区切りリストを示します。これを省略すると、すべてのユーザーがゲストユーザーとして扱われます。

「`guests`」をデフォルトのグループ名として使用したくない場合は、`kcm-guest-group`という別のguacamoleプロパティを追加することでカスタマイズできます。省略した場合、デフォルトのグループ名「`guests`」が使用されます。

## 拡張JARファイルをアップロードする

手順1でビルドした`kcm-auth-guest-1.5.2-2.jar`拡張ファイルをサーバーに転送し、`/etc/kcm-setup/`ディレクトリに配置してください。

## コンテナを更新する

新しい設定と拡張ファイルでコンテナを更新します。

```
sudo ./kcm-setup.run stop
sudo ./kcm-setup.run upgrade
sudo ./kcm-setup.run start
```

サービスが開始され、ゲストユーザーに割り当てられた接続が開始します。ゲストモードは、「guests」グループに複数の接続を割り当てることも可能です。複数の接続が割り当てられている場合、ユーザーには選択肢が表示されます。

## 再起動でKCMを開始する (任意)

この手順は、Docker Composeファイルの構造やDockerの再起動設定によっては必要ない場合があります。ただし、下記のスクリプトを `/etc/systemd/system/kcm.service` というファイルに追加することで、再起動後にサービスが自動的に開始するようになります。

```
[Unit]
Description=Keeper Connection Manager Service
After=network.target

[Service]
Type=oneshot
ExecStart=/bin/bash -c 'sudo /home/ec2-user/kcm-setup.run start'
WorkingDirectory=/home/ec2-user
RemainAfterExit=yes
User=ec2-user

[Install]
WantedBy=multi-user.target
```

サービスをアクティブにします。

```
sudo systemctl daemon-reload
sudo systemctl enable kcm
sudo systemctl start kcm
sudo systemctl status kcm
```
