# Azure Key Vaultとの同期

![](https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2Fgit-blob-a45245fbae76b3e75f9eccb60a7ac375bc65618d%2Fdatasource-ksm-azure.jpg?alt=media)

## 概説

KeeperシークレットマネージャーCLIツールの[`sync`コマンド](/keeperpam/jp/secrets-manager/secrets-manager-command-line-interface/sync-command.md)を使用すると、Keeperボルトから目的の**Azure Key Vault**アカウントにシークレットをプッシュし、目的の場所にある既存の値を上書きできます。 これにより、Keeperボルトが、Key Vaultを利用するAzureのすべてのサービスまたはスクリプトの信頼できる唯一の情報源となります。

## 機能

* KeeperボルトのシークレットをAzure Key Vaultの信頼できる情報源として使用します
* Azureの既存のスクリプトとサービスでKeeperボルトのシークレットがシームレスに使用できるようになります

## 要件

* Keeperシークレットマネージャーへのアクセス (詳細は、[クイックスタートガイド](/keeperpam/jp/secrets-manager/quick-start-guide.md)をご参照ください)
  * Keeperアカウントのシークレットマネージャーアドオンの有効化
  * シークレットマネージャー強制ポリシーが有効化されたロールを割り当てられたメンバーシップ
* シークレットを共有するKeeper[シークレットマネージャーアプリケーション](/keeperpam/jp/secrets-manager/about/terminology.md)
  * アプリケーションの作成手順については、[クイックスタートガイド](/keeperpam/jp/secrets-manager/quick-start-guide.md)をご参照ください
* Key VaultのAzureアカウントと、セキュリティプリンシパルを作成する機能

## 設定

### 1. KeeperシークレットマネージャーCLIを設定

{% hint style="info" %}
KSM CLIがすでにマシンに設定済みの場合は、この手順を省略できます。
{% endhint %}

KSM CLIツールを設定するには、Keeperシークレットマネージャーのワンタイムアクセストークンを使用してプロファイルを作成する必要があります。

これを行う最も簡単な方法は、次のコマンドを使用してデフォルトのプロファイルを初期化することです。

`ksm profile init <TOKEN>`

複数のプロファイルの作成およびその他のオプションについては、[プロファイルのドキュメント](/keeperpam/jp/secrets-manager/secrets-manager-command-line-interface/profile-command.md)をご参照ください。

### 2. Azureアクセス権限の設定

AzureとのKSM同期を使用するには、接続を受け入れるようにAzureアカウントを設定する必要があります。Key Vaultを使用するAzureアカウントに対し、Key Vaultでのキー操作の実行を許可されたサービスプリンシパルを有効にする必要があります。

[こちらのMicrosoftのガイド](https://learn.microsoft.com/ja-jp/entra/identity-platform/app-objects-and-service-principals?tabs=browser)に従って、サービスプリンシパルを設定してください。

### 3. Azureクレデンシャルレコードの作成

KSM CLIでは、シークレットを設定するためにAzureアカウントのクレデンシャルが必要です。 これらのクレデンシャルはKeeperのレコードに保存されており、CLIツールからは、Keeperシークレットマネージャーを使用してアクセスできます。

クレデンシャルレコードには、以下のラベルを持つレコードフィールドが必要です。

`Azure Tenant ID`\
`Azure Client ID`\
`Azure Client Secret`\
`Azure Key Vault Name`

{% hint style="info" %}
Azureアプリケーション登録からクライアントシークレットを取得する際は、\[Azureクライアントシークレット]フィールドに、シークレットIDではなく**値**をコピーするようにしてください。

<img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FhfCSvuKz3AOSiOJJtw53%2FEN_SM_integration_azureKeyVault.webp?alt=media&#x26;token=fd24bc04-428a-4489-b8ed-f95915f01195" alt="" data-size="original">
{% endhint %}

#### 方法1: Azureクレデンシャルのカスタムのレコードタイプを作成

必要なフィールドを使用してカスタムのレコードタイプを作成できるため、レコードの作成が簡単かつシンプルになります。

カスタムのレコードタイプを作成するには、Keeperボルトで「カスタムのレコードタイプ」タブに移動して、「タイプの作成」をクリックします。 正しいフィールドラベルが設定された伏せ字項目を使用して新しいレコードタイプを作成し、「発行」をクリックして新しいレコードタイプを作成します。

![](https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2Fgit-blob-ce67b11f528e9e6ce30b18e04b29c0b3e51ca0a2%2Fimage%20\(79\)%20\(1\).png?alt=media)

後は、Azureクレデンシャルタイプのレコードを新規作成し、対応するフィールドに詳細情報を入力するだけです。

![](https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2Fgit-blob-1d363950d8820f3bd2a5c5d921b9fea856e5fd36%2Fimage%20\(76\)%20\(1\)%20\(2\).png?alt=media)

この新しいレコードが、シークレットマネージャーアプリケーションで共有された共有フォルダに格納されていることを確認します。

#### （方法2）カスタムフィールドを追加

新しいレコードタイプを作成せずにクレデンシャルレコードを作成するには、必要なフィールドをカスタムフィールドとして標準レコードに追加します。

任意のタイプの新しいレコードを作成し、必要なAzureフィールドごとに「伏せ字項目」タイプのカスタムフィールドを追加します。 「ラベルの編集」をクリックして、ラベルを対応するフィールド名に変更します。

{% hint style="info" %}
どのレコードタイプでも有効ですが、「ファイル添付」の標準レコードタイプにはフィールドがないため、カスタムフィールドを追加したときの見た目がすっきりします。
{% endhint %}

![](https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2Fgit-blob-d239c3e1805820a6088ba6909723ca57af64784e%2Fimage%20\(78\)%20\(1\).png?alt=media)

次に、各カスタムフィールドに入力し、「保存 (Save）」をクリックしてレコードを保存します。

### 4. 値のマッピングを作成

KSM CLIの`sync`コマンドは、コマンド呼び出しで定義されたマッピングを使用して、設定する値を識別します。コマンドに渡されたマッピングごとに、指定した名前の値にKeeperボルトから所与の値が代入されます。

これらのマッピングは次の形式に従っています。

`--map "VALUE KEY" "KEEPER NOTATION"`

`VALUE KEY`は、Azure Key Vaultで値が割り当てられるキーの名前です。

`KEEPER NOTATION`は、キーに設定するKeeperのレコードの値を取得するKeeper表記法を使用したクエリです。

Keeper表記法は、Keeperシークレットマネージャーが特定のレコードの値を識別するために使用するクエリの表記法です。 この表記法は、次の一般的な形式に従います。`UID/`\[`field|custom]/fieldname`\
例: `ae3d[...]d22e/field/password`

詳細は、[Keeper表記法のドキュメント](/keeperpam/jp/secrets-manager/about/keeper-notation.md)をご参照ください。

{% hint style="info" %}
これらの例では、完全なUIDレコードが指定されていないことにご注意ください。
{% endhint %}

完全なマッピング例:\
`--map "MySQL_PWD" "jd3[...]i-fd/field/password"`

複数のマッピングを1つの`sync`コマンドに追加できます\
`--map "MySQL_PWD" "jd3[...]i-fd/field/password" --map "MySQL_Login" "jd3[...]i-fd/field/login"`

{% hint style="warning" %}
Keeper表記法を使用したクエリによって参照されるレコードが、シークレットマネージャーアプリケーションと共有されている共有フォルダに格納されていることを確認します。
{% endhint %}

{% hint style="success" %}
これで、KSM同期を実行する準備ができました
{% endhint %}

## 同期の実行

同期を実行するには、クレデンシャルレコードと値のマッピングを指定して、KSM CLIの`sync`コマンドを使用します

### 1. コマンドを構成

KSM syncコマンドをAzureタイプと組み合わせます。 以下のような形式になります。

```
ksm sync --type azure --credentials [UID] --map [...] --map [...]
```

### 2. ドライランを実行

syncコマンドは、実際に値をプッシュすることも変更を加えることもせずに、Azure Key Vaultの値に加えられるすべての変更を確認するドライランの実行をサポートします。 これを使用して、マッピングクエリが正しく構成されていることを確認します。

```
ksm sync --type azure --credentials [UID] --map [...] --map [...] --dry-run
```

### 3. 同期を実行

準備ができたら、dry-runオプションを指定せずにsyncコマンドを実行します。 これにより、KeeperボルトからAzure Key Vaultに値がプッシュされます

{% hint style="info" %}
ヒント: `--map`の短縮形として、`-m`を使用できます
{% endhint %}

```
ksm sync --type azure --credentials [UID] -m [...] -m [...]
```


---

# 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/secrets-manager/integrations/azure-key-vault.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.
