> 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/privileged-access-manager/getting-started/gateways/gateway-on-kubernetes.md).

# Kubernetes上のゲートウェイ

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

### 概要

Keeper Securityがメンテナンスする公式Helmチャートを使用すると、任意のKubernetesクラスタ上にKeeperゲートウェイを展開できます。チャートはゲートウェイをKubernetes `Deployment` として実行し、リモートアクセス (RDP、SSH、VNC)、リモートブラウザ分離、シークレットローテーション、検出など、ゲートウェイの全機能を利用できます。セッション録画用の永続ストレージ、Horizontal Pod Autoscaling、評価用の使い捨てデモターゲットも任意で追加できます。

接続はKeeperインフラストラクチャへ**アウトバウンドのみ**となります。Ingress、LoadBalancer、インバウンドのファイアウォールルールは不要です。

チャートはKeeper HelmリポジトリとDocker Hub (OCIアーティファクト) の両方に公開されています。

* **Helmリポジトリ:** `https://keeper-security.github.io/helm-charts`
* **OCIレジストリ:** `oci://registry-1.docker.io/keeper/keeper-gateway`
* **ArtifactHub:** [keeper-security/keeper-gateway](https://artifacthub.io/packages/helm/keeper-security/keeper-gateway)

{% hint style="info" %}
チャートのソースコードは [GitHub](https://github.com/Keeper-Security/helm-charts/tree/main/charts/keeper-gateway) で公開されています。
{% endhint %}

### 要件

* Kubernetesクラスタ (バージョン **1.25以降**)
* [Helm 3](https://helm.sh/docs/intro/install/)
* [特権アクセスマネージャー](https://github.com/Keeper-Security/gitbook-jp-secrets-manager/blob/main/privileged-access-manager/README.md) アドオン付きのKeeperエンタープライズアカウント
* Keeperボルトから取得したゲートウェイ構成 (Base64) (下記のゲートウェイの作成をご参照ください)

### ゲートウェイの作成

ウェブボルトまたはデスクトップアプリから **\[新規作成]** > **\[ゲートウェイ]** をクリックして、新しいゲートウェイの展開を作成できます。プロビジョニング時に **Docker** 方式を選択し、**Base64構成** をコピーします。これがチャートで必要となる値です。

KeeperコマンダーCLIからゲートウェイとその構成を作成することもできます。

```
pam gateway new -n "<Gateway Name>" -a <Application Name or UID> -c b64
```

アプリケーション名とUIDは `secrets-manager app list` で確認できます。Base64構成トークンを保存し、以下の手順でチャートに指定します。

プロビジョニングの詳細については、[Keeperゲートウェイの作成](/keeperpam/jp/privileged-access-manager/getting-started/gateways/one-time-access-token.md)をご参照ください。

{% hint style="info" %}
プロビジョニング時に **\[サンプルレコードを作成]** を選択すると、チャートの任意デモ/プレイグラウンドサービスに対応するサンプルPAMレコードを生成できます。
{% endhint %}

### インストール

HelmリポジトリまたはOCIレジストリからチャートをインストールします。`gateway.acceptEula=Y` を設定し、前の手順で取得したBase64構成を指定します。

{% tabs %}
{% tab title="Helmリポジトリ" %}

```bash
helm repo add keeper https://keeper-security.github.io/helm-charts
helm repo update

helm install keeper-gateway keeper/keeper-gateway \
  --namespace keeper-gateway --create-namespace \
  --set gateway.acceptEula=Y \
  --set gateway.config='<base64-config>'
```

{% endtab %}

{% tab title="OCIレジストリ (Docker Hub)" %}

```bash
helm install keeper-gateway oci://registry-1.docker.io/keeper/keeper-gateway \
  --namespace keeper-gateway --create-namespace \
  --set gateway.acceptEula=Y \
  --set gateway.config='<base64-config>'
```

{% endtab %}
{% endtabs %}

{% hint style="warning" %}
`--set gateway.config` を指定すると、構成がシェル履歴および `helm get values` の出力に残ります。本番環境では、Kubernetes Secretに構成を保存してください (ゲートウェイ構成の指定をご参照ください)。
{% endhint %}

### ゲートウェイ構成の指定

ゲートウェイ構成は3つの方法で指定できます。いずれの場合もEULAへの同意 (`gateway.acceptEula=Y`) が必要です。

{% tabs %}
{% tab title="インライン (クイックスタート)" %}
Base64構成を直接指定します。評価および非本番用途に適しています。

```bash
--set gateway.acceptEula=Y \
--set gateway.config='<base64-config>'
```

{% endtab %}

{% tab title="既存のSecret (推奨)" %}
構成を別途管理するKubernetes Secretに保存します。シェル履歴やHelmリリースの値から構成を除外できます。

```bash
kubectl create namespace keeper-gateway
kubectl create secret generic gw-config \
  --from-literal=gateway-config='<base64-config>' -n keeper-gateway

helm install keeper-gateway keeper/keeper-gateway \
  --namespace keeper-gateway \
  --set gateway.acceptEula=Y \
  --set gateway.existingSecret=gw-config
```

Secret内のキーはデフォルトで `gateway-config` です。`gateway.existingSecretKey` で上書きできます。
{% endtab %}

{% tab title="AWS Secrets Manager" %}
起動時にAWS Secrets Managerから構成を読み込む設定です。[IRSA](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) を介してIAMロールをバインドし、Podにアクセス権を付与します。

```bash
helm install keeper-gateway keeper/keeper-gateway \
  --namespace keeper-gateway --create-namespace \
  --set gateway.acceptEula=Y \
  --set gateway.awsKmsSecretName='keeper/gateway-config' \
  --set serviceAccount.annotations."eks\.amazonaws\.com/role-arn"='arn:aws:iam::<account>:role/<role>'
```

AWS Secrets Managerへの構成の保存方法および必要なIAMポリシーについては、[AWS KMSを使用したゲートウェイ構成](/keeperpam/jp/privileged-access-manager/getting-started/gateways/advanced-configuration/gateway-configuration-with-aws-kms.md)をご参照ください。
{% endtab %}
{% endtabs %}

### 確認

Podが稼働し、Keeperに接続されていることを確認します。

```bash
kubectl get pods -n keeper-gateway
kubectl logs -n keeper-gateway -l app.kubernetes.io/name=keeper-gateway
```

ゲートウェイのステータスは、Keeperボルトのゲートウェイ画面でも**オンライン**と表示されます。

### ロギング

`logging` 値でログレベルとフォーマットを設定します。レベルは個別に上書きしない限り、ゲートウェイサービスと `guacd` の両方に適用されます。

```bash
--set logging.level=debug \
--set logging.format=json
```

* **レベル:** `error`、`warning`、`info`、`debug` (`guacd` は `trace` も対応)
* **フォーマット:** `text`、`json`、`logfmt`、`cef`、`leef`、`rfc5424`、`rfc3164`、`gelf`

`logging.gatewayLevel` と `logging.guacdLevel` でレベルを個別に設定できます。syslogサーバーへログを転送する場合は、`syslog.enabled=true` および `syslog.host` / `syslog.port` / `syslog.proto` の値を設定します。

{% hint style="info" %}
構造化ログフォーマット (`json`、`logfmt`、`cef` など) には、比較的新しいゲートウェイイメージ (1.8.0以降) が必要です。チャートが古い `appVersion` を固定している場合は、イメージを上書きしてください: `--set image.tag=1.8.0`。
{% endhint %}

イベント監視およびSIEM転送については、[アラートとSIEM連携](/keeperpam/jp/privileged-access-manager/getting-started/gateways/alerts-and-siem-integration.md)をご参照ください。

### ヘルスチェック

チャートには、コンテナ内でゲートウェイ組み込みの `keeper-gateway health-check` コマンドを実行するKubernetesの起動、生存、準備完了プローブが含まれます。ヘルスチェックHTTPサーバーはポート `8099` の `127.0.0.1` (localhostのみ) にバインドされます。

ヘルスチェックはデフォルトで有効です。外部監視ツールへ `/health` エンドポイントを公開する場合は、`healthCheck.authToken` (または `healthCheck.existingAuthTokenSecret`) で認証トークンを設定し、`service` を調整します。

エンドポイントの応答形式およびCLIオプションについては、[ヘルスチェック](/keeperpam/jp/privileged-access-manager/getting-started/gateways/health-checks.md)をご参照ください。

### 更新

最新のチャートを取得し、リリースをアップグレードします。

```bash
helm repo update
helm upgrade keeper-gateway keeper/keeper-gateway \
  --namespace keeper-gateway \
  --reuse-values
```

デフォルトの `Recreate` 戦略では、新しいPodが起動する前に既存のPodが終了するため、アップグレード中にアクティブなセッションは切断されます。ダウンタイムゼロでアップグレードする場合は、`RollingUpdate` 戦略で複数レプリカを実行してください (スケーリングと高可用性をご参照ください)。

{% hint style="info" %}
コマンドラインで `gateway.config` を指定して構成を渡した場合は、アップグレード時に再度指定するか、`gateway.existingSecret` への切り替えを検討してください。指定しないと構成が失われることがあります。
{% endhint %}

### スケーリングと高可用性

複数レプリカを実行するには、事前にKeeper側でゲートウェイをマルチインスタンス運用向けに構成する必要があります。Keeperコマンダーで `pam gateway list` を実行してゲートウェイUIDを確認し、最大インスタンス数を設定します。

{% hint style="info" %}
マルチインスタンスのスケーリングは現在、Keeperコマンダーでのみ管理できます。ウェブボルトおよびデスクトップアプリでの管理は近日対応予定です。
{% endhint %}

```
pam gateway set-max-instances -g <GATEWAY_UID> -m <MAX_INSTANCES>
```

マルチインスタンスを有効化したら、固定レプリカ数またはHorizontal Pod Autoscalerでデプロイメントをスケールし、`RollingUpdate` 戦略に切り替えます。

{% tabs %}
{% tab title="固定レプリカ数" %}

```bash
--set replicaCount=3 \
--set strategy.type=RollingUpdate
```

{% endtab %}

{% tab title="オートスケーリング (HPA)" %}

```bash
--set strategy.type=RollingUpdate \
--set autoscaling.enabled=true \
--set autoscaling.minReplicas=2 \
--set autoscaling.maxReplicas=5
```

{% endtab %}
{% endtabs %}

スケールされたデプロイメントでは、クライアントのトラフィックを同じPodに維持するために `sessionAffinity=ClientIP` を設定し、Pod Disruption Budget (`podDisruptionBudget.enabled=true`) の有効化も検討してください。すべてのレプリカは同じゲートウェイ構成を使用します。

ゲートウェイプールがセッションを分散およびフェイルオーバーする仕組みについては、[スケーリングと高可用性](/keeperpam/jp/privileged-access-manager/getting-started/gateways/scaling-and-high-availability.md)をご参照ください。

### セッション録画ストレージ

セッション録画は暗号化 (AES-256-GCM) され、セッション中にリアルタイムでKeeperへストリーミングされるため、Podが再起動しても録画は失われません。ストリーミングバッファには一時的なローカルディレクトリが使用されます。ディスク容量が限られるノードや多数の同時セッションがある場合は、このバッファ用に永続ボリュームをアタッチしてください。

```bash
--set recordings.enabled=true \
--set recordings.size=50Gi
```

リモートブラウザ分離 (Chromium) セッションに必要な `/dev/shm` 共有メモリボリュームはデフォルトで有効です (`sharedMemory.enabled=true`、`sharedMemory.sizeLimit=2Gi`)。RBIやRDPを多用する場合はサイズ制限を増やしてください。

### KeeperAI脅威検出 (任意)

大規模言語モデルを使用して特権セッションを監視し、疑わしいコマンドをリアルタイムでフラグ付けできます。APIキーはKubernetes Secretに保存されます。

```bash
--set ai.enabled=true \
--set ai.provider=openai \
--set ai.model=gpt-4o-mini \
--set ai.apiKey='<your-api-key>'
```

対応プロバイダには、OpenAI、Anthropic、Azure OpenAI、Google AI、Vertex AI、AWS Bedrock、および任意のOpenAI互換エンドポイント (`openai-generic` 経由) が含まれます。クラウドネイティブ認証 (IRSAを使用したAWS Bedrock、Workload Identityを使用したVertex AI) には、`ai.apiKey` の代わりに `serviceAccount.annotations` と `ai.existingSecret` または `extraEnv` を使用してください。詳細については[KeeperAI](/keeperpam/jp/privileged-access-manager/keeperai.md)をご参照ください。

### コーポレートプロキシ / カスタムCA証明書

ネットワークでSSLインスペクション (Zscalerなど) が使用されている場合、ゲートウェイがアウトバウンド接続を確立するには、組織のCA証明書が必要です。

```bash
--set-file caCertificates.inline=./company-ca.pem
```

または `caCertificates.existingConfigMap` で既存のConfigMapを参照します。起動時にこれらの証明書が信頼ストアへインストールされます。

### セキュリティコンテキスト

ゲートウェイには、以下の2つの理由により昇格された権限が必要です。

1. **起動時:** エントリポイントはrootとして実行され、CA証明書とPythonパッケージをインストールした後、サービス起動前に `keeper-gw` ユーザーへ権限を降格します。
2. **RBIセッション:** CEF/ChromiumにはLinux名前空間の分離 (`unshare`、`mount`、`clone`) が必要であり、`CAP_SYS_ADMIN` と制限のないseccompプロファイルが必要です。

チャートのデフォルトは、ケーパビリティ `SYS_ADMIN`、`SYS_CHROOT`、`SETUID`、`SETGID`、`seccompProfile: Unconfined`、`appArmorProfile: unconfined` です。

{% hint style="warning" %}
`runAsNonRoot: true` または `runAsUser` は設定しないでください。クラスタでPod Security Standardsが適用されている場合、ゲートウェイの名前空間には免除が必要になることがあります。
{% endhint %}

強化されたデプロイメント向けに、チャートのREADMEにカスタムAppArmorプロファイル (Debian/Ubuntuノード) およびCEFに必要なシステムコールのみを許可するカスタムseccompプロファイルのインストール手順が記載されています。

### デモ / プレイグラウンドサービス (任意)

ゲートウェイと併せて、評価用の使い捨てSSH、RDP、VNC、MySQLコンテナを展開できます。独自のインフラを用意せずに、リモートアクセス、ローテーション、検出を試せます。ゲートウェイを **\[サンプルレコードを作成]** でプロビジョニングしたうえで、デモサービスを有効化します。

```bash
--set demo.enabled=true
```

個別のサービスは切り替え可能です (例: `--set demo.rdp.enabled=false`)。

| サービス               | ポート  | デフォルト |
| ------------------ | ---- | ----- |
| `demo.mysql`       | 3306 | 有効    |
| `demo.sshPassword` | 2222 | 有効    |
| `demo.sshKey`      | 2222 | 有効    |
| `demo.vnc`         | 5901 | 有効    |
| `demo.rdp`         | 3389 | 有効    |

{% hint style="info" %}
すべてのデモパスワードはローカルテスト用のプレースホルダーです。Keeperボルトウィザードの出力値に置き換えてください。デモサービスは本番用途を想定していません。
{% endhint %}

### ネットワーク構成

Keeperゲートウェイはアウトバウンドのみの接続を確立し、インバウンドのファイアウォールルールは不要です。以下のアウトバウンド接続を許可する必要があります。

<table><thead><tr><th width="257.48046875">宛先エンドポイント</th><th width="249.30078125">必要なポート</th><th>詳細</th></tr></thead><tbody><tr><td><p><strong>Keeperクラウド</strong><br><code>keepersecurity.[x]</code></p><p>エンドポイント:</p><p>US: <code>.com</code></p><p>EU: <code>.eu</code></p><p>AU: <code>.com.au</code></p><p>JP: <code>.jp</code></p><p>CA: <code>.ca</code></p><p>US GOV: <code>.us</code></p></td><td>TLSポート443</td><td>ネイティブプロトコル (SSH、RDPなど) 経由でターゲットインフラストラクチャにアクセスするためKeeperクラウドと通信</td></tr><tr><td><p><strong>Keeperルーター</strong><br><code>connect.keepersecurity.[x]</code></p><p>エンドポイント:</p><p>US: <code>.com</code></p><p>EU: <code>.eu</code></p><p>AU: <code>.com.au</code></p><p>JP: <code>.jp</code></p><p>CA: <code>.ca</code></p><p>US GOV: <code>.us</code></p></td><td>TLSポート443</td><td>安全なリアルタイムWebSocket接続を確立するためKeeperルーターと通信</td></tr><tr><td><p><strong>Keeper Stun/Turnサービス</strong></p><p><code>krelay.keepersecurity.[x]</code></p><p>エンドポイント:</p><p>US: <code>.com</code></p><p>EU: <code>.eu</code></p><p>AU: <code>.com.au</code></p><p>JP: <code>.jp</code></p><p>CA: <code>.ca</code></p><p>US GOV: <code>.us</code></p></td><td>ポート3478でTCPおよびUDPを開放<br><br>TCPおよびUDPポート49152～65535へのアウトバウンドアクセス<br></td><td>エンドユーザーのボルトとゲートウェイ経由のターゲットシステム間で、安全かつ暗号化されたWebRTC接続を実現</td></tr></tbody></table>

### アンインストール

```bash
helm uninstall keeper-gateway -n keeper-gateway
kubectl delete namespace keeper-gateway
```

録画ストレージを有効にしていた場合、永続ボリュームは自動的に削除されません。

```bash
kubectl delete pvc -n keeper-gateway -l app.kubernetes.io/name=keeper-gateway
```

### 構成リファレンス

よく使用する値を以下に示します。完全な一覧は、チャートの [`values.yaml`](https://github.com/Keeper-Security/helm-charts/blob/main/charts/keeper-gateway/values.yaml) または [ArtifactHubの掲載ページ](https://artifacthub.io/packages/helm/keeper-security/keeper-gateway) をご参照ください。

#### ゲートウェイ構成

<table><thead><tr><th>パラメータ</th><th width="261.9765625">説明</th><th>デフォルト</th></tr></thead><tbody><tr><td><code>gateway.acceptEula</code></td><td>EULAへの同意 (必須、<code>Y</code> であること)</td><td><code>""</code></td></tr><tr><td><code>gateway.config</code></td><td>Keeperから取得したBase64エンコードのゲートウェイ構成</td><td><code>""</code></td></tr><tr><td><code>gateway.existingSecret</code></td><td><code>gateway.config</code> の代わりに事前作成したKubernetes Secretを使用</td><td><code>""</code></td></tr><tr><td><code>gateway.existingSecretKey</code></td><td>既存Secret内のキー</td><td><code>"gateway-config"</code></td></tr><tr><td><code>gateway.awsKmsSecretName</code></td><td>AWS Secrets Managerから構成を読み込み</td><td><code>""</code></td></tr></tbody></table>

#### イメージ

<table><thead><tr><th>パラメータ</th><th width="300.69921875">説明</th><th>デフォルト</th></tr></thead><tbody><tr><td><code>image.repository</code></td><td>ゲートウェイイメージリポジトリ</td><td><code>keeper/gateway</code></td></tr><tr><td><code>image.tag</code></td><td>イメージタグ (デフォルトはチャートの <code>appVersion</code>)</td><td><code>""</code></td></tr><tr><td><code>image.pullPolicy</code></td><td>イメージプルポリシー</td><td><code>IfNotPresent</code></td></tr></tbody></table>

#### スケーリングと可用性

<table><thead><tr><th width="272.4296875">パラメータ</th><th width="321.640625">説明</th><th>デフォルト</th></tr></thead><tbody><tr><td><code>replicaCount</code></td><td>ゲートウェイPodの数</td><td><code>1</code></td></tr><tr><td><code>strategy.type</code></td><td><code>Recreate</code> (単一インスタンス) または <code>RollingUpdate</code> (マルチインスタンス)</td><td><code>Recreate</code></td></tr><tr><td><code>autoscaling.enabled</code></td><td>Horizontal Pod Autoscalerを有効化</td><td><code>false</code></td></tr><tr><td><code>autoscaling.minReplicas</code> / <code>maxReplicas</code></td><td>HPAの上下限</td><td><code>1</code> / <code>5</code></td></tr><tr><td><code>sessionAffinity</code></td><td>スケールされたデプロイメントでは <code>ClientIP</code> に設定</td><td><code>""</code></td></tr><tr><td><code>podDisruptionBudget.enabled</code></td><td>障害時にも最小Pod数を維持</td><td><code>false</code></td></tr></tbody></table>

#### ストレージ、ロギング、ヘルスチェック、AI

| パラメータ                                      | 説明                             | デフォルト            |
| ------------------------------------------ | ------------------------------ | ---------------- |
| `recordings.enabled` / `recordings.size`   | セッション録画用の永続バッファ                | `false` / `10Gi` |
| `sharedMemory.sizeLimit`                   | `/dev/shm` のサイズ (RBI/Chromium) | `2Gi`            |
| `logging.level` / `logging.format`         | ログレベルとフォーマット                   | `info` / `text`  |
| `healthCheck.enabled` / `healthCheck.port` | ヘルスチェックサーバー (localhost)        | `true` / `8099`  |
| `ai.enabled` / `ai.provider` / `ai.model`  | KeeperAI脅威検出                   | `false`          |
| `resources.limits`                         | CPU / メモリ制限 (多数のRBIセッション向けに増加) | `4` / `4Gi`      |


---

# 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/privileged-access-manager/getting-started/gateways/gateway-on-kubernetes.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.
