> 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/keeper-connection-manager/jp/vault-integration/dynamic-tokens.md).

# 動的トークン

<figure><img src="https://4041518992-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ7s6LQJaKa1G17O787JG%2Fuploads%2FWpdOVPDkiHedJQjaFNrx%2Fimage.png?alt=media&#x26;token=270d2d3d-a20c-4ff1-9acc-7815c8687d7b" alt=""><figcaption></figcaption></figure>

## 動的トークン

ボルト連携を使用する場合、特定のトークンはKeeperのレコードの対応する値に置き換えられます。

トークンには、動的トークンと静的トークンがあります。**動的トークン**では、Keeperボルト内の一致するレコードから必要なシークレットフィールドが取得されます。**静的トークン**は、特定のKeeperのレコードおよびフィールドを明示的に参照するように作成できます。

### ホスト名の照合

Keeperのレコードは、接続の「Hostname」 (ホスト名) フィールドとボルトのレコードの「ホスト名またはIPアドレス」フィールドを使用して接続に割り当てることができます。

これら2つの値が一致した場合、コネクションマネージャーが接続の他のフィールドのトークンを取得して、レコードのユーザー名、パスワード、ドメインなどの値に置き換えます。

<figure><img src="https://4041518992-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ7s6LQJaKa1G17O787JG%2Fuploads%2FTUoE7ELb4AOKAMaybOxb%2Fimage.png?alt=media&#x26;token=b15f6dee-e395-427d-9d5c-37681dda2f05" alt=""><figcaption><p>Linuxの接続照合の例</p></figcaption></figure>

<figure><img src="https://4041518992-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ7s6LQJaKa1G17O787JG%2Fuploads%2FdokVuliYxeEApvn7Yurx%2Fimage.png?alt=media&#x26;token=087ecc93-f33f-41c1-ac22-9633c35d9d96" alt=""><figcaption><p>SSH接続のシークレットマネージャーとの連携</p></figcaption></figure>

<figure><img src="https://4041518992-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ7s6LQJaKa1G17O787JG%2Fuploads%2FVmb1YMGeZY7sKzuRP4Oc%2Fimage.png?alt=media&#x26;token=33460787-b637-4077-a34f-d3cfa3417b38" alt=""><figcaption><p>Windowsログインの例</p></figcaption></figure>

### ユーザーのマッチング

Keeperのレコードは、接続の「Username」 (ユーザー名) フィールドとボルトのレコードの「ログイン」フィールドによって接続に割り当てます。

これら2つの値が一致した場合、コネクションマネージャーは、接続の他のフィールドのトークンを取得して、レコードのシークレットに置き換えます。

この機能は、例えば1つのSSH鍵を複数のサーバーにマッピングする場合に便利で、ホストごとに1つのレコードをボルトに保存する必要はありません。1つのKeeperボルトのレコードを使用して、接続をいくつでも認証できます。以下は、ユーザー名でマッチングするように設定された接続となります。

<figure><img src="https://4041518992-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ7s6LQJaKa1G17O787JG%2Fuploads%2FlMkO4ixMGdbYrEr3Vbjh%2Fimage.png?alt=media&#x26;token=4a8c72cc-53b7-496f-b2ad-c94e5776d619" alt=""><figcaption><p>ユーザー照合による接続例</p></figcaption></figure>

対応するボルトのレコードを以下に示します。ボルトのレコードにホスト名が指定されていないため、ログインフィールドを使用して照合されます。

<figure><img src="https://4041518992-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ7s6LQJaKa1G17O787JG%2Fuploads%2FDe7YY3VLQIuvTM4H1dJI%2Fimage.png?alt=media&#x26;token=398ecb30-e911-43dd-81d1-08376a88bd44" alt=""><figcaption><p>ユーザーでボルトのレコードを照合</p></figcaption></figure>

{% hint style="info" %}
ユーザーベースの照合では、Keeperのレコードにホスト名/ポートがないことを確かにします。ユーザー名とパスワード (または秘密鍵) の指定するだけで問題ありません。
{% endhint %}

### ドメイン照合

Keeperのレコードは、接続の「ドメイン」フィールドとボルトのレコードの「ドメイン」という名前のカスタムフィールドによって接続に割り当てることができます。

これら2つの値が一致した場合、コネクションマネージャーは、接続の他のフィールドのトークンを取得して、レコードのユーザー名、パスワードなどの値に置き換えます。

<figure><img src="https://4041518992-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ7s6LQJaKa1G17O787JG%2Fuploads%2FepXZ3w0hxJtWJjFlnPws%2Fimage.png?alt=media&#x26;token=c8f8b189-baea-45a4-8628-50da0e2dc7eb" alt=""><figcaption><p>ドメイン照合</p></figcaption></figure>

ドメインをユーザー名フィールドの一部 (LUREY\Administratorなど) として保存したい場合は、[keeper/guacamole](https://docs.keeper.io/keeper-connection-manager/jp/vault-integration/pages/PrGlvnEjhFxQkUuBMC4I#id-.glyptodon-guacamolev2.x-environmentvariables)イメージのDockerコンテナ環境変数の `KSM_STRIP_WINDOWS_DOMAINS` フラグを「True」に切り替えて有効にします。

別の例として、Active Directoryの認証情報を使用してLinuxマシンにSSH接続を行う場合、`username@domain` 形式の値をログインフィールドに保存することができます。

### リンクされたレコードへの対応

Keeperシークレットマネージャーとの連携により、リンクされたレコードを含むシークレットも読み取れるようになりました。具体的には、ボルト内のKeeperPAMレコードに関連付けられている「admin」および「launch」の認証情報が対象です。従来の `${KEEPER_SERVER_*}` や `${KEEPER_GATEWAY_*}` トークンと同様に、リンクされたレコードからシークレットを取得する動的トークンも利用できます。

### **使用可能なトークン**

内臓のトークンはそれぞれがレコードのフィールドに対応しています。以下は、各トークンとそれに対応するレコードのフィールドの一覧示します。これらのトークンは、すべての接続タイプに適用できます。

| パラメータトークン                      | 説明                                                                                                                                                               |
| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `${KEEPER_SERVER_USERNAME}`    | <p><strong>取得:</strong> 一致した個々のレコードの「Login」フィールド<br></p><p><strong>一致:</strong> 「hostname」接続パラメータの値と一致するホスト名/IPアドレスを持つレコード</p>                                   |
| `${KEEPER_SERVER_KEY}`         | <p><strong>取得:</strong> 一致した個々のレコードの「Private Key」フィールド (または個々の.pemファイル添付)<br></p><p><strong>一致:</strong> 「hostname」接続パラメータの値と一致するホスト名/IPアドレスを持つレコード</p>          |
| `${KEEPER_SERVER_PASSPHRASE}`  | <p><strong>取得:</strong> 一致した個々のレコードの「Passphrase」フィールド (Passphraseがない場合は「Password」)<br></p><p><strong>一致:</strong> 「hostname」接続パラメータの値と一致するホスト名/IPアドレスを持つレコード</p> |
| `${KEEPER_SERVER_PASSWORD}`    | <p><strong>取得:</strong> 一致した個々のレコードの「Password」フィールド<br></p><p><strong>一致:</strong> 「hostname」接続パラメータの値と一致するホスト名/IPアドレスを持つレコード</p>                                |
| `${KEEPER_SERVER_DOMAIN}`      | <p><strong>取得:</strong> 一致した個々のレコードの「Domain」カスタムフィールド<br></p><p><strong>一致:</strong> 「hostname」接続パラメータの値と一致するホスト名/IPアドレスを持つレコード</p>                              |
| `${KEEPER_SERVER_TOTP_SECRET}` | レコードに関連付けられたTOTPシークレットを取得します                                                                                                                                     |
| `${KEEPER_USER_KEY}`           | <p><strong>取得:</strong> 一致した個々のレコードの「Private Key」フィールド (または個々の.pemファイル添付)<br></p><p><strong>一致:</strong> 「username」接続パラメータに一致するログインを持つレコード</p>                   |
| `${KEEPER_USER_PASSPHRASE}`    | <p><strong>取得:</strong> 一致した個々のレコードの「Passphrase」フィールド (Passphraseがない場合はPassword)<br></p><p><strong>一致:</strong> 「username」接続パラメータに一致するログインを持つレコード</p>            |
| `${KEEPER_USER_PASSWORD}`      | <p><strong>取得:</strong> 一致した個々のレコードの「Password」フィールド<br></p><p><strong>一致:</strong> 「username」接続パラメータに一致するログインを持つレコード</p>                                         |
| `${KEEPER_USER_DOMAIN}`        | <p><strong>取得:</strong> 一致した個々のレコードの「Domain」カスタムフィールド<br></p><p><strong>一致:</strong> 「username」接続パラメータに一致するログインを持つレコード</p>                                       |
| `${KEEPER_USER_TOTP_SECRET}`   | <p><strong>取得</strong>: レコードに関連付けられたTOTPシークレット</p><p><strong>一致</strong>: 「username」接続パラメータと一致するログインのレコード</p>                                                    |
| `${KEEPER_DOMAIN_USERNAME}`    | <p><strong>取得:</strong> 一致した個々のレコードの「Login」フィールド</p><p><br><strong>一致:</strong> 「domain」接続パラメータの値と一致するカスタム「Domain」フィールドを持つレコード</p>                               |
| `${KEEPER_DOMAIN_PASSWORD}`    | <p><strong>取得:</strong> 一致した個々のレコードの「Password」フィールド</p><p><br><strong>一致:</strong> 「domain」接続パラメータに一致するログインを持つレコード</p>                                           |
| `${KEEPER_SERVER_ADMIN_*}`     | リモートデスクトップサーバーのホスト名に一致するKeeperレコードにリンクされた**管理者**認証情報(例: `${KEEPER_SERVER_ADMIN_PASSWORD}`) が取得されます。一致の判定は、`${KEEPER_SERVER_*}` トークンと同じ仕組みで行われます。                 |
| `${KEEPER_SERVER_LAUNCH_*}`    | リモートデスクトップサーバーのホスト名に一致するKeeperレコードにリンクされた起動用の認証情報 (例: `${KEEPER_SERVER_LAUNCH_PASSWORD}`) が取得されます。一致の判定は、`${KEEPER_SERVER_*}` トークンと同じ仕組みで行われます。                  |

#### ゲートウェイトークン <a href="#gateway-based-dynamic-secrets" id="gateway-based-dynamic-secrets"></a>

以下のトークンは、ゲートウェイサポート (RDP) が利用できる接続タイプにのみ適用されます。

| パラメータトークン                           | 説明                                                                                                                                                                                                                                                               |
| ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `${KEEPER_GATEWAY_USERNAME}`        | <p><strong>取得:</strong> 一致した個々のレコードの「Login」フィールド<br></p><p><strong>一致:</strong> 「gateway-hostname」接続パラメータの値と一致するホスト名/IPアドレスを持つレコード。</p>                                                                                                                          |
| `${KEEPER_GATEWAY_KEY}`             | <p><strong>取得:</strong> 一致した個々のレコードの「Private Key」フィールド (または個々の.pemファイル添付)<br></p><p><strong>一致:</strong> 「gateway-hostname」接続パラメータの値と一致するホスト名/IPアドレスを持つレコード。</p>                                                                                                 |
| `${KEEPER_GATEWAY_PASSPHRASE}`      | <p><strong>取得:</strong> 一致した個々のレコードの「Passphrase」フィールド (パスフレーズがない場合は「Password」）<br></p><p><strong>一致:</strong> 「gateway-hostname」接続パラメータの値と一致するホスト名/IPアドレスを持つレコード。</p>                                                                                            |
| `${KEEPER_GATEWAY_PASSWORD}`        | <p><strong>取得:</strong> 一致した個々のレコードの「Password」フィールド</p><p><br><strong>一致:</strong> 「gateway-hostname」接続パラメータの値と一致するホスト名/IPアドレスを持つレコード。</p>                                                                                                                       |
| `${KEEPER_GATEWAY_USER_KEY}`        | <p><strong>取得:</strong> 一致した個々のレコードの「Private Key」フィールド (または個々の.pemファイル添付)</p><p><br><strong>一致:</strong> 「gateway-username」接続パラメータに一致するログインを持つレコード。</p>                                                                                                          |
| `${KEEPER_GATEWAY_USER_PASSPHRASE}` | <p><strong>取得:</strong> 一致した個々のレコードの「Passphrase」フィールド (Passphraseがない場合は「Password」)</p><p><br><strong>一致:</strong> 「gateway-username」接続パラメータに一致するログインを持つレコード</p>                                                                                                  |
| `${KEEPER_GATEWAY_USER_PASSWORD}`   | <p><strong>取得:</strong> 一致した個々のレコードの「Password」フィールド</p><p><br><strong>一致:</strong> 「gateway-username」接続パラメータに一致するログインを持つレコード</p>                                                                                                                                 |
| `${KEEPER_GATEWAY_ADMIN_*}`         | Microsoft RD Gatewayを使用するRDP接続において、リモートデスクトップサーバーの「gateway-hostname」パラメーターに一致するKeeperレコードにリンクされた**管理者**認証情報(例: `${KEEPER_GATEWAY_ADMIN_PASSWORD}`) が取得されます。一致の判定は、`${KEEPER_GATEWAY_*}` トークンと同じ仕組みで行われます。この機能はMicrosoft RD Gatewayを利用する場合に固有のもので、RDP接続にのみ適用されます。 |
| `${KEEPER_GATEWAY_LAUNCH_*}`        | Microsoft RD Gatewayを使用するRDP接続において、リモートデスクトップサーバーの「gateway-hostname」パラメーターに一致するKeeperレコードにリンクされた起動用の認証情報 (例: `${KEEPER_GATEWAY_LAUNCH_PASSWORD}`) が取得されます。一致の判定は、`${KEEPER_GATEWAY_*}` トークンと同じ仕組みで行われます。この機能はMicrosoft RD Gatewayを利用する場合に固有のもので、RDP接続にのみ適用されます。  |

以下のトークンは定義されてはいますが、現在はRDPではTOTPコード生成が必要ないため実際的な用途がなく、使用されません。

<table data-header-hidden><thead><tr><th width="395"></th><th></th></tr></thead><tbody><tr><td><strong>パラメータトークン</strong></td><td><strong>説明</strong></td></tr><tr><td><code>${KEEPER_GATEWAY_TOTP_SECRET}</code></td><td><p><strong>取得</strong>: レコードに関連付けられたTOTPシークレット</p><p><strong>一致</strong>: 「gateway-hostname」接続パラメータの値と一致するホスト名またはIPアドレスのレコード</p></td></tr><tr><td><code>${KEEPER_GATEWAY_USER_TOTP_SECRET}</code></td><td><p><strong>取得</strong>: レコードに関連付けられたTOTPシークレット</p><p><strong>一致</strong>: 「gateway-username」接続パラメータと一致するログイン情報を持つレコード</p></td></tr></tbody></table>

### Active Directoryユーザー名/ドメインの解析

KCMは、対応する名前のフィールドがある限り、以下のようにKeeperボルトのレコードからドメイン、ユーザー名、パスワードの各フィールドを識別します。

<figure><img src="https://4041518992-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ7s6LQJaKa1G17O787JG%2Fuploads%2FBxFwtuYzVPn8ygfDi2nD%2Fimage.png?alt=media&#x26;token=477e488e-b765-4f2f-9804-fbdcbb31cedf" alt=""><figcaption><p>カスタムフィールドでのドメイン照合</p></figcaption></figure>

### ログインフィールドからドメインを自動解析

Keeperボルトのログインフィールドの値が `DOMAIN\Username` または `Username@Domain` の形式で供給されている場合、Active Directoryの「ドメイン」フィールドおよび「ユーザー名」フィールドを解析できます。

自動解析を有効にするには、環境変数 `KSM_STRIP_WINDOWS_DOMAINS` をDocker Configファイルに追加する必要があります。これにより、ユーザー名がドメインと結合されている場合に照合が機能するようになります。

`KSM_MATCH_DOMAINS_FOR_USERS` と呼ばれる別のプロパティは、ユーザー名とドメインの両方が正確に一致する場合にのみ、マッチングを強制します。

以下は例です。

{% code title="docker-compose.yml" %}

```
            ....
            MYSQL_DATABASE: "guacamole_db"
            MYSQL_USERNAME: "guacamole_user"
            KSM_CONFIG: "XXX"
            ....
            ....
            KSM_STRIP_WINDOWS_DOMAINS: "true"
            KSM_MATCH_DOMAINS_FOR_USERS: "true"
            ....

```

{% endcode %}

これで、レコードの「ログイン」フィールドに以下のように指定できます。

<figure><img src="https://4041518992-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ7s6LQJaKa1G17O787JG%2Fuploads%2Fv1iMTOfwqBUwoM0tutxz%2Fimage.png?alt=media&#x26;token=2defbab4-6b89-4fea-98ac-7c55ec6ad598" alt=""><figcaption><p>ログインフィールドからドメインを自動解析</p></figcaption></figure>

### トラブルシューティング

認証情報を直接設定した接続は成功するのに、動的トークンを使用すると失敗する場合 (`login failed` エラー) は、通常、レコードが一致していないか、KSMアプリケーションで複数のレコードが一致していることが原因です。

* 親 `KSM_CONFIG` のKSMアプリケーションで複数のレコードが一致: 接続に失敗
* 親 `KSM_CONFIG` と親接続グループの両方のKSMアプリケーションでレコードが一致: 接続に失敗
* 親接続グループのKSMアプリケーションで複数のレコードが一致: 接続に失敗
* 複数の親接続グループのKSMアプリケーションで1件のレコードが一致: ツリー内の最下位の親グループが適用

KSMアプリケーションで一致するレコードは、以下のKSMコマンドで確認できます。

ホスト名の照合

{% code overflow="wrap" %}

```
ksm secret list --query="$.custom_fields[?(@.label=='Hostname' & @.value[0]=='TARGET_HOSTNAME')]"
```

{% endcode %}

ユーザーのマッチング

{% code overflow="wrap" %}

```
ksm secret list --query="$.fields[?(@.label=='login' & @.value[0]=='TARGET_USERNAME')]"
```

{% endcode %}

ドメイン照合

{% code overflow="wrap" %}

```
ksm secret list --query="$.custom_fields[?(@.label=='Domain' & @.value[0]=='TARGET_DOMAIN')]"
```

{% endcode %}

PAMリソースの照合

{% code overflow="wrap" %}

```
ksm secret list --query="$.fields[?(@.label=='pamHostname' & @.value[0].hostName=='TARGET_HOSTNAME')]"
```

{% endcode %}


---

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

```
GET https://docs.keeper.io/keeper-connection-manager/jp/vault-integration/dynamic-tokens.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.
