Docker上でのゲートウェイ
KeeperゲートウェイをDockerにインストール

概要
本ページでは、Docker上でKeeperゲートウェイのインストール、設定、アップデート方法を取り扱います。KeeperゲートウェイコンテナはRocky Linux 8のベースイメージを使用し、DockerHubでホストされています。
要件
すべてのPAM機能を活用するのに、x86 AMDプロセッサーを搭載したLinuxホスト
dockerおよびdocker-composeがインストールされていること (LinuxへのDockerインストールのページをご参照ください)
ゲートウェイを作成
新しいゲートウェイの展開は、ウェブボルトかデスクトップアプリから [新規作成] > [ゲートウェイ] をクリックして作成します。
また、コマンダーCLIからゲートウェイと構成ファイルを作成することもできます。
pam gateway new -n "<Gateway Name>" -a <Application Name or UID> -c b64アプリケーション名とUIDは、secrets-manager app listコマンドで確認できます。
インストールのオプション
ゲートウェイのセットアップ方法は以下の2種類あります。
1. Docker自動インストール
Keeperの自動インストーラで環境をセットアップします。
2. Docker手動インストール
手動でDocker環境をセットアップする場合は、以下の手順を行います。
Docker Compose
Docker Composeファイルは、ボルトUIを通じて提供されます。通常、このファイルはローカル環境に docker-compose.yml として保存し、任意のフォルダに配置します。以下はDocker Composeファイルの例です。
services:
keeper-gateway:
platform: linux/amd64
image: keeper/gateway:latest
shm_size: 16g
restart: unless-stopped
security_opt:
- seccomp:docker-seccomp.json
- apparmor:gateway-apparmor-profile
environment:
ACCEPT_EULA: Y
GATEWAY_CONFIG: XXXXXXXXXXXXXXXXXshm_size は重要なパラメータです。サーバーの利用可能メモリの少なくとも半分を割り当てることを推奨します。本番環境のゲートウェイには、できるだけ多くのメモリとCPUを割り当ててください。リモートブラウザ分離セッションを使用する場合、Chromiumはプロセスごとに多くのメモリを消費します。
必要な環境変数は GATEWAY_CONFIG のみとなります。この変数はゲートウェイ作成時にKeeperによって生成されるbase64エンコードされた構成です。
Seccompファイル
docker-seccomp.json ファイルをDocker Composeファイルと同じフォルダに配置します。
こちらからファイルをダウンロードするか以下を実行します。
curl -O https://raw.githubusercontent.com/Keeper-Security/KeeperPAM/refs/heads/main/gateway/docker-seccomp.jsonAppArmorプロファイル (Ubuntu/Debianディストリビューションで必須)
gateway-apparmor-profile ファイルをDocker Composeファイルと同じフォルダに配置します。
こちらからファイルをダウンロードするか以下を実行します。
curl -O https://raw.githubusercontent.com/Keeper-Security/KeeperPAM/refs/heads/main/gateway/gateway-apparmor-profileapparmor configを有効にします。
sudo apparmor_parser -r gateway-apparmor-profile
sudo cp gateway-apparmor-profile /etc/apparmor.d/ログ
Keeperゲートウェイのプレビュー版を実行する際、ログに以下のような出力が表示されます。
docker compose logs keeper-gateway
ボルト内の [シークレットマネージャー] 画面から、[アプリケーション] > [ゲートウェイ] へ移動します。ゲートウェイが [オンライン] と表示されます。

ゲートウェイサービスの管理
サービス起動
docker compose up -dサービス停止
docker compose stopサービスの再起動
docker compose restartゲートウェイコンテナへ接続
docker compose exec keeper-gateway bash再起動の際に自動的にゲートウェイを起動
docker-compose.yml ファイルで、以下のように再起動ポリシーを設定してください。
services:
keeper-gateway:
restart: unless-stoppeddocker-compose.yml ファイルに "restart: unless-stopped" または "restart: always" パラメーターを追加すると、環境に再起動ポリシーが適用されます。
Docker環境でKeeperゲートウェイをホストOSに自動起動させたい場合は、以下の手順を実行してください (Linuxホスト)。
最初に、/etc/systemd/system/keeper-gateway.service にファイルを作成します。
[Unit]
Description=Keeper Gateway Docker Compose
Requires=docker.service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/home/ec2-user
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
User=ec2-user
Group=docker
[Install]
WantedBy=multi-user.target備考
/path/to/installは、docker-compose.ymlの配置パスに置き換えます。myusernameは、Dockerを実行するユーザーに置き換えます。dockerグループは、環境で定義されているグループに置き換えます。ExecStartおよびExecStopのバイナリパスが正しいことを確認します。
その後サービスを有効にします。
sudo systemctl daemon-reload
sudo systemctl enable keeper-gateway.service
sudo systemctl start keeper-gateway.service再起動後に利用できるよう、AppArmorファイルを読み込ませておきます。
sudo apparmor_parser -r gateway-apparmor-profile
sudo cp gateway-apparmor-profile /etc/apparmor.d/再起動後、稼働していることを確認します。
systemctl status keeper-gatewayデバッグ
ゲートウェイで詳細なデバッグログを有効化するには、Docker Compose ファイルに以下の environment セクションを追加してデバッグロギングを有効化します。
services:
keeper-gateway:
.....
environment:
KEEPER_GATEWAY_LOG_LEVEL: "debug" # ゲートウェイ用のログ
LOG_LEVEL: "debug" # guacd用のログログレベルを変更した後、以下のコマンドでDockerに反映します。
docker compose up -d次のコマンドでKeeperゲートウェイのログを確認します。
docker compose logs -f keeper-gatewayアップデート
次のコマンドを実行すると、Keeperゲートウェイコンテナが最新バージョンに更新され、サービスが再起動します。
docker compose pull
docker compose up -dヘルスチェック
ゲートウェイサービスの動作状況を確認するために、ヘルスチェックを設定できます。Dockerのオーケストレーションやロードバランサー、自動監視ツールと連携させる際に便利です。設定方法や具体例については、「ヘルスチェック」ページをご参照ください。
ホストインスタンスへの接続
Keeperゲートウェイの便利な機能の一つに、ホストマシンへの接続やトンネルを開く機能があります。Docker Composeファイルに extra_hosts セクションを追加し、値を host.docker.internal:host-gateway と設定すると、ホストへのセッションを直接開くことができます。
以下はゲートウェイコンテナを含むdocker composeの例となります。
services:
keeper-gateway:
platform: linux/amd64
image: keeper/gateway:latest
shm_size: 2g
restart: always
extra_hosts:
- "host.docker.internal:host-gateway"
security_opt:
- "seccomp:docker-seccomp.json"
environment:
ACCEPT_EULA: Y
GATEWAY_CONFIG: xxxxxxxxこのオプションを有効にすると、ホストへの接続を確立できます。例えば、SSH接続を開くには、以下の手順を実行します:
SSH秘密鍵を使用してPAMユーザーレコードを作成します。
ホスト名を
host.docker.internal、ポートを22にしてPAMマシンレコードを作成します。PAM設定でPAMユーザーを指定し、SSH接続を有効にします。
ホストからKeeperゲートウェイサービスを更新する
KeeperPAMを使用してホストサービスにSSH接続している場合、バックグラウンドでゲートウェイのコンテナ更新を実行することでコンテナを更新できます。
docker-compose pull
nohup docker-compose up -d keeper-gateway &ネットワーク構成
Keeperゲートウェイはアウトバウンド専用の接続を確立するため、インバウンドのファイアウォールルールは必要ありません。ただし、以下のアウトバウンド接続は許可されている必要があります。
Keeper Cloud (keepersecurity.[com|eu|com.au|jp|ca|us])
TLSポート443
Keeper Cloudと通信して、ネイティブプロトコル (例: SSH、RDP) を使用して対象インフラストラクチャへアクセスします。
Keeper Router (connect.keepersecurity.[com|eu|com.au|jp|ca|us])
TLSポート443
Keeper Routerと通信して、安全なリアルタイムWebSocket接続を確立します。
Keeper KRelay Server (krelay.keepersecurity.[com|eu|com.au|jp|ca|us])
ポート3478でのTCPおよびUDP通信を許可する必要があります。 また、TCPおよびUDPのポート49152〜65535へのアウトバウンドアクセスも許可されている必要があります。
エンドユーザーのボルトと対象システム間で、ゲートウェイを介した安全かつ暗号化されたリレー接続を実現します。
ゲートウェイでは、すべての暗号化および復号化処理をローカルで実行することでゼロ知識を保持します。Keeperクラウドとの通信にはKeeperシークレットマネージャーのAPIを使用します。
ディスク容量の管理
時間の経過とともに、新しいゲートウェイのバージョンをデプロイすると、古いDockerイメージがホストサーバー上に蓄積することがあります。これにより、ディスク容量を大きく消費する場合があります。 円滑な運用とストレージ不足の防止のため、定期的にディスク使用状況を確認し、不要なDockerイメージを削除することを推奨します。
ディスク使用状況の確認
Keeperゲートウェイサーバーで、次のコマンドを実行します。
df -hこのコマンドは、すべてのマウント済みファイルシステムの空き容量を人間が読みやすい形式で表示します。特に、Dockerのデータが保存されるパーティション (通常は /var/lib/docker) に注意してください。
ディスク使用率が高くなっている (例: 80〜90%以上使用) 場合は、古いDockerイメージを削除することを検討してください。
古いDockerイメージの削除
Keeperゲートウェイを更新すると、Dockerは以前のイメージをシステム上に保持します。未使用のDockerイメージをすべて削除するには、次のコマンドを使用します。
docker image prune -a-aフラグを付けることで、未使用のすべてのイメージ (参照されていないものも含む) が削除されます。実行中に確認メッセージが表示されたら、
yと入力して続行します。
出力例
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y
Deleted Images:
...
Total reclaimed space: 4.8GBこの操作により、実行中のコンテナで使用されていない古いイメージのみが安全に削除されます。
参考資料
最終更新


