# KeeperDBプロキシ

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

## 概要 <a href="#overview" id="overview"></a>

KeeperDBは、管理対象のデータベースへの対話型かつパスワードレスなゼロトラストアクセスのために、ボルトに組み込まれたデータベース管理アプリケーションです。**KeeperDBプロキシ**は、MySQL Workbench、Microsoft SQL Server Studio、DBeaver、KeeperDBのネイティブアプリなど、任意のネイティブアプリケーションからゼロトラストで接続でき、KeeperDBの機能を拡張します。

KeeperDBプロキシを有効にすると、一時的なデータベース認証情報がゲートウェイ経由でボルトから対象データベースへ直接渡ります。ユーザーはデータベースクライアントをローカルポートに接続するだけでよく、パスワードは不要です。

{% hint style="info" %}
本機能には、[Keeperゲートウェイ](/keeperpam/jp/privileged-access-manager/getting-started/gateways.md) のバージョン1.8以降が必要です。
{% endhint %}

### 主な利点 <a href="#key-benefits" id="key-benefits"></a>

**ゼロ知識でのデータベースアクセス**

* ユーザーは認証情報を閲覧したり入力したりせずに接続できる
* データベースクライアントへのパスワードのコピー／貼り付けが不要
* 認証情報がクリップボードやローカルアプリに露出しない
* ボルトからデータベースまで一貫したゼロ知識アクセス

**セッション管理**

* アイドルタイムアウト…非アクティブなセッションの自動終了
* 最大継続時間…セッション時間の上限適用
* 接続数の上限…同時接続数の制御
* ログの強化…セッション活動の詳細記録

### 対応データベース <a href="#supported-databases" id="supported-databases"></a>

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

* MySQL
* MariaDB
* PostgreSQL
* SQL Server
* Oracle

## 動作の仕組み <a href="#how-it-works" id="how-it-works"></a>

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

1. ユーザーがKeeperデスクトップからデータベーストンネルを開始します。
2. ゲートウェイがKeeperDBプロキシを起動し、ボルトから認証情報を取得します。
3. ユーザーはデータベースクライアントを `localhost:<port>` に接続し、**パスワードは不要です**。
4. プロキシが対象データベースへの認証を自動で行います。
5. ユーザーは認証情報を見ることなく、データベースへフルアクセスできます。

#### 認証情報のセキュリティ <a href="#credential-security" id="credential-security"></a>

* **ユーザーに露出しない:** 認証情報はボルトからプロキシ、データベースへと直接渡る
* **ゲートウェイに保存されない:** セキュアなハンドシェイクによりセッションごとに渡される
* **クリップボードに載らない:** 機微なパスワードのコピー／貼り付けが不要
* **監査証跡:** アクセスはKeeperを通じてすべて記録される

***

## KeeperDBプロキシの有効化 <a href="#activating-keeperdb-proxy" id="activating-keeperdb-proxy"></a>

#### 要件 <a href="#prerequisites" id="prerequisites"></a>

* Keeperゲートウェイのバージョン1.8.0以降がデプロイされていること
* ボルトのバージョン17.6、またはKeeperコマンダーCLIのバージョン17.2.8以降であること
* PAM構成でトンネルが有効になっていること
* ロールのポリシーでユーザーがトンネルを作成できること
* PAMデータベースのレコードでトンネルおよびKeeperDBプロキシが有効になっていること
* 初期のトンネル構成については[トンネルの設定](/keeperpam/jp/privileged-access-manager/tunnels/setting-up-tunnels.md)をご参照ください

<figure><img src="/files/xe3hQszTBjXzkrIggQni" alt=""><figcaption><p>PAM構成でトンネルを有効にする</p></figcaption></figure>

<figure><img src="/files/aRCe4ps6ZfDIN7GShV9q" alt=""><figcaption><p>ロールの強制ポリシー (トンネルの開始を許可)</p></figcaption></figure>

<figure><img src="/files/pKta3dodJiFd25Gns808" alt=""><figcaption><p>PAM設定でトンネルとKeeperDBプロキシを有効にする</p></figcaption></figure>

有効にすると、本構成を使うデータベーストンネルでは、認証情報なしでアクセスできます。

**注**: プロキシが利用できない場合、トンネルは標準モードへ切り替わり、ユーザーが手動で認証情報を入力する必要があります。

#### Keeperデスクトップアプリからの有効化 <a href="#activating-from-the-keeper-desktop-app" id="activating-from-the-keeper-desktop-app"></a>

デスクトップアプリで **\[トンネルを開始]** をクリックしてトンネルとKeeperDBプロキシを有効にします。起動用の認証情報は接続ストリームに自動で注入されます。

<figure><img src="/files/4tHTsqKV4d1IGjYdi0d7" alt=""><figcaption><p>トンネルを開始</p></figcaption></figure>

ローカルのホスト名とポートが表示されます。ネイティブのデータベース管理アプリでこの情報を使います。

<figure><img src="/files/6kxAJoYNwWBdxu1AKfsM" alt=""><figcaption><p>KeeperDBプロキシのトンネルパラメータ</p></figcaption></figure>

#### ネイティブのデータベース管理ツール <a href="#native-database-manager" id="native-database-manager"></a>

ローカルのデータベース管理ツール (MySQL Workbench、DBeaver、KeeperDBデスクトップなど) では、Keeperのレコードに表示されたホスト名とポートを指定します。パスワードは不要です。

KeeperDBデスクトップアプリを使用する場合は、データベースの種類、ホスト、ポート、および開くデータベースを選択し、**\[接続]** をクリックします。

<figure><img src="/files/Moe1BJWXjmTwbW9YJrjL" alt=""><figcaption><p>KeeperDBプロキシでのKeeperDBデスクトップの利用</p></figcaption></figure>

* KeeperDBデスクトップアプリケーションの詳細は、[KeeperDB](/keeperpam/jp/privileged-access-manager/keeperdb.md) をご参照ください

MySQL Workbenchなどの他のデータベースツールも同じ手順で利用できます。

<figure><img src="/files/lVBU4SSgArE86Mrx68rv" alt=""><figcaption><p>KeeperDBトンネルでのMySQL Workbenchの利用</p></figcaption></figure>

#### KeeperコマンダーからKeeperDBプロキシを有効化 <a href="#activating-keeperdb-proxy-from-commander" id="activating-keeperdb-proxy-from-commander"></a>

Keeperコマンダーでは、特定のレコードに対してKeeperDBプロキシ付きのトンネルを有効にできます。

```
pam tunnel edit --keeper-db-proxy on <RECORD_UID>
```

有効にしたら、トンネルを開始します。

```
pam tunnel start <RECORD_UID>
```

ローカルのホスト名とポートは、Keeperコマンダーの出力に表示されます。

***

## 一時アカウント (ジャストインタイム) <a href="#ephemeral-accounts-jit" id="ephemeral-accounts-jit"></a>

KeeperDBプロキシでは、データベースアクセス向けにジャストインタイム (JIT) の一時アカウントを利用できます。静的な認証情報の代わりに、オンデマンドで一時的なデータベースユーザーが作成され、セッション終了時に自動削除されます。

<figure><img src="/files/oaOhJyJmsj5lufl9c9Ed" alt=""><figcaption><p>JITによるエフェメラルデータベースユーザーの作成</p></figcaption></figure>

#### 一時アカウントの動作 <a href="#how-ephemeral-accounts-work" id="how-ephemeral-accounts-work"></a>

1. ユーザーがJITが有効なデータベースへトンネルを開始します。
2. ゲートウェイがランダムなユーザー名の一時データベースユーザーを作成します。
3. 構成済みのロールがエフェメラルユーザーに付与されます。
4. KeeperDBプロキシがエフェメラル認証情報で認証します。
5. セッション終了時にユーザーとロールのメンバーシップが自動でクリーンアップされます。

#### エフェメラルアクセスの構成 <a href="#configuring-ephemeral-access" id="configuring-ephemeral-access"></a>

1. KeeperPAMリソースのレコードで **\[JIT一時アカウント]** を有効にします。
2. **\[グループとロールの昇格]** を構成します。
   * **\[昇格方法]** を `role` に設定します。
   * **\[昇格文字列]** をデータベースのロール (カンマ区切り) に設定します。
3. 対象データベースに、適切な権限を持つロールが存在することを確認します。

#### データベースロールの作成 <a href="#creating-database-roles" id="creating-database-roles"></a>

付与する前に、データベース上にロールが存在している必要があります。MySQLの例です。

```sql
-- Create a role
CREATE ROLE 'app_readonly';
-- Grant privileges to the role
GRANT SELECT ON mydb.* TO 'app_readonly';
-- For full access
CREATE ROLE 'app_admin';
GRANT ALL PRIVILEGES ON mydb.* TO 'app_admin';
```

#### MySQLロールの構成 <a href="#mysql-role-configuration" id="mysql-role-configuration"></a>

MySQL 8.0以降では、ロールを明示的にアクティブ化する必要があります。一時アカウントを正しく動かすには、以下の設定が必要です。

**必須のMySQL設定:**

```sql
SET GLOBAL activate_all_roles_on_login = ON;
```

**恒久的に有効にする**場合は、MySQLの構成ファイル (`my.cnf`) に以下を追加します。

```sql
[mysqld]
activate_all_roles_on_login = ON
```

本設定がないと、エフェメラルユーザーにはロールが付与されてもアクティブ化されず、データベースにアクセスできません。

#### PostgreSQLおよびSQL Server <a href="#postgresql-and-sql-server" id="postgresql-and-sql-server"></a>

MySQLとは異なり、PostgreSQLとSQL Serverでは付与と同時にロールが有効になり、追加の構成は不要です。

## 構成 <a href="#configuration" id="configuration"></a>

#### デフォルトの動作 <a href="#default-behavior" id="default-behavior"></a>

* **アイドルタイムアウト:** 非アクティブが5分続くとセッションを終了する
* **最大継続時間:** セッションの上限は最大1時間
* **最大接続数:** 同時接続は最大100まで

#### 環境変数 <a href="#environment-variables" id="environment-variables"></a>

* **`KEEPER_GATEWAY_DB_PROXY_IDLE_TIMEOUT_SECS`**
  * 説明: セッションのアイドルタイムアウト (秒)
  * デフォルト: `300` (5分)
* **`KEEPER_GATEWAY_DB_PROXY_MAX_DURATION_SECS`**
  * 説明: セッションの最大継続時間 (秒)
  * デフォルト: `3600` (1時間)
* **`KEEPER_GATEWAY_DB_PROXY_MAX_CONNECTIONS`**
  * 説明: 許容する同時接続の最大数
  * デフォルト: `100`
* **`KEEPER_GATEWAY_DB_PROXY_MAX_QUERIES`**
  * 説明: セッションあたりのクエリ数の上限 (0は無制限)
  * デフォルト: `0`
* **`KEEPER_GATEWAY_DB_PROXY_SINGLE_CONNECTION`**
  * 説明: セッションあたり1接続に限定する
  * デフォルト: `false`

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

#### 認証情報の入力を求められる <a href="#still-prompted-for-credentials" id="still-prompted-for-credentials"></a>

**原因**: プロキシが無効であるか、起動していない可能性があります。

**対処**

1. PAM設定でKeeperDBプロキシ (`allowKeeperDBProxy` など) が有効かどうかを確認します。
2. ゲートウェイのバージョンが1.8.0以降であることを確認します。
3. ゲートウェイのログに `Starting database proxy on-demand...` と出力されているか確認します。

#### 手動認証へのフォールバック <a href="#fallback-to-manual-authentication" id="fallback-to-manual-authentication"></a>

**ログメッセージ:** `Database proxy is enabled but not running - falling back to direct tunnel mode`

**原因:** プロキシの起動に失敗しています。トンネル自体は動作しますが、認証情報の手入力が必要になります。

**対処**

1. ゲートウェイのログでプロキシ起動時のエラーを確認します。
2. ゲートウェイに `keeperdb-proxy` コンポーネントがインストールされているか確認します。
3. 必要に応じてゲートウェイを再起動します。

#### セッションが予期せず切断された <a href="#session-disconnected-unexpectedly" id="session-disconnected-unexpectedly"></a>

**想定される原因**

* アイドルタイムアウトに達した (デフォルトは5分)
* 最大継続時間に達した (デフォルトは1時間)

**対処**: 用途に合わせてタイムアウト設定を調整してください。

## よくある質問 <a href="#faq" id="faq"></a>

**パスワードを持たないユーザーはどう接続しますか。**

`localhost:<port>` に、パスワードなしまたはプレースホルダーで接続します。プロキシが接続を受け取り、実際の認証情報を自動で注入します。

**ユーザーはボルトで認証情報を閲覧できますか。**

認証情報の表示はKeeperの権限で制御されます。パスワードを表示する権限がなくても、トンネルへのアクセスだけを付与できます。

**すべてのデータベースクライアントで動作しますか。**

はい。KeeperDBデスクトップ、MySQL Workbench、pgAdmin、Microsoft SQL Studio、Azure Data Studio、DBeaver、コマンドラインクライアント、標準的なデータベースプロトコルで接続するツールで利用できます。

**プロキシが利用できない場合はどうなりますか。**

トンネルは標準モードへ切り替わります。接続は可能ですが、認証情報の手動入力が必要です (ボルトで閲覧権限がある場合)。

**プロキシで一時アカウントは使えますか。**

はい。ボルトでJIT一時アカウントが有効な場合、セッションごとに一時的なデータベースユーザーが作成され、セッション終了時に自動削除されます。恒常的な認証情報が存在しないため、セキュリティ面では最も高い水準になります。

**エフェメラルMySQLユーザーに権限が付きません。理由は何ですか。**

MySQL 8.0以降では、ロールを自動で有効にするために `activate_all_roles_on_login = ON` が必要です。本設定がないと、ロールは付与されてもアクティブ化されません。構成の詳細は、一時アカウントの項をご参照ください。


---

# Agent Instructions: 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:

```
GET https://docs.keeper.io/keeperpam/jp/privileged-access-manager/keeperdb-proxy.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
