> 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/commander-cli/command-reference/import-and-export-commands/azure-key-vault-secrets-import.md).

# Azure Key Vaultシークレットインポート

`azure-secrets-import` コマンドは、Azure Key Vault内の有効なシークレットをすべて読み取り、指定した共有フォルダにKeeperレコードとして取り込みます。各シークレット名がレコードのタイトルとなり、シークレットの値はレコード上の名前付きフィールドに解析されます。

* **エイリアス:** `azsi`
* **要件:** `azure-keyvault-secrets` および `azure-identity` — `pip install keeper-commander[azure]` でインストール

***

## 認証

{% stepper %}
{% step %}

### サービスプリンシパルフラグ

`--tenant-id`、`--client-id`、`--client-secret` をすべて指定した場合、`ClientSecretCredential` による認証が行われます。3つのフラグはセットで指定する必要があり、一部だけの指定はエラーになります。
{% endstep %}

{% step %}

### `DefaultAzureCredential`

明示的なフラグがない場合は、Azure SDKの `DefaultAzureCredential` チェーンが使用され、以下の順序で確認されます。

* 環境変数 (`AZURE_TENANT_ID`、`AZURE_CLIENT_ID`、`AZURE_CLIENT_SECRET` など)
* ワークロードID (Kubernetes)
* 実行中のAzure VM、App Service、コンテナにアタッチされたマネージドID
* Azure CLI (`az login`)
* Azure PowerShell
* Azure Developer CLI

本番環境では、認証情報フラグを省略し、マネージドIDまたはAzure CLIに任せることが多いです。
{% endstep %}
{% endstepper %}

***

## 基本的な使い方

```bash
azure-secrets-import <vault-name> <folder-uid> [options]
```

2つの位置引数が必須です。

* **`vault-name`** — Azure Key Vaultの短い名前 (例: `my-vault`)。`https://<vault-name>.vault.azure.net/` という完全なVault URLが自動的に構築されます。
* **`folder-uid`** — インポート先となるKeeper共有フォルダの一意識別子。コマンダー内で `list-sf` を実行すると確認できます。

```bash
My Vault> list-sf
```

***

## 引数とフラグ

### 位置引数

| 引数           | 説明                                            |
| ------------ | --------------------------------------------- |
| `vault_name` | **必須。** Azure Key Vaultの短い名前 (例: `my-vault`)。 |
| `folder`     | **必須。** シークレットのインポート先となる共有フォルダUID。            |

### 認証情報フラグ

| フラグ                      | 説明                                                                        |
| ------------------------ | ------------------------------------------------------------------------- |
| `--tenant-id ID`         | Azure ADテナントID。`--client-id` および `--client-secret` とセットで必須。               |
| `--client-id ID`         | Azure ADアプリケーション (クライアント) ID。`--tenant-id` および `--client-secret` とセットで必須。 |
| `--client-secret SECRET` | Azure ADクライアントシークレット。`--tenant-id` および `--client-id` とセットで必須。             |

サービスプリンシパル認証では、3つの認証情報フラグをすべて指定する必要があります。3つとも省略すると `DefaultAzureCredential` が使用されます。

### 動作フラグ

| フラグ                  | 説明                                      |
| -------------------- | --------------------------------------- |
| `--record-type TYPE` | インポートするレコードのKeeperレコードタイプ。既定値は `login`。 |
| `--dry-run`          | レコードを作成せず、インポート対象のシークレットを一覧表示。          |

### フィルタフラグ

すべてのフィルタフラグは任意で、AND条件で組み合わされます。指定したすべてのフィルタを満たすシークレットのみがインポートされます。

| フラグ                                | 説明                                  |
| ---------------------------------- | ----------------------------------- |
| `--name NAME`                      | この名前と完全一致するシークレットのみインポート。           |
| `--name-starts-with PREFIX`        | 名前が `PREFIX` で始まるシークレットのみインポート。     |
| `--name-ends-with SUFFIX`          | 名前が `SUFFIX` で終わるシークレットのみインポート。     |
| `--name-contains SUBSTRING`        | 名前に `SUBSTRING` を含むシークレットのみインポート。   |
| `--tags KEY=VALUE[,KEY=VALUE,...]` | 指定したキー/値のタグを**すべて**持つシークレットのみインポート。 |

***

## シークレットのフィルタリング

フィルタを使うと、残りのシークレットに触れずに対象のサブセットだけをインポートできます。指定した各フィルタに一致する必要があります。

無効なシークレットは、フィルタ設定にかかわらず常にスキップされます。

### 名前フィルタ

名前フィルタは、Azure Key Vaultに保存されているシークレット名に対して適用されます。

```bash
# 名前の完全一致
azsi my-vault xAbCdEfGhIjK --name database-primary-password

# 名前が "prod-" で始まるすべてのシークレット
azsi my-vault xAbCdEfGhIjK --name-starts-with prod-

# 名前が "-creds" で終わるシークレット
azsi my-vault xAbCdEfGhIjK --name-ends-with -creds

# 名前に "postgres" を含むシークレット
azsi my-vault xAbCdEfGhIjK --name-contains postgres
```

複数の名前フィルタを組み合わせることもできます。それぞれが追加の条件になります。

```bash
# "prod-" で始まり、かつ "database" を含む必要がある
azsi my-vault xAbCdEfGhIjK --name-starts-with prod- --name-contains database
```

### タグフィルタ

Azure Key Vaultのシークレットには任意のキー/値タグを付与できます。`--tags` フラグは、カンマ区切りの `KEY=VALUE` ペアのリストを受け取ります。指定したタグを**すべて**、かつ与えた値と完全一致で持つシークレットのみが対象になります。

```bash
# 単一タグ条件
azsi my-vault xAbCdEfGhIjK --tags Env=prod

# 複数タグ条件 (両方が一致する必要がある)
azsi my-vault xAbCdEfGhIjK --tags Env=prod,Team=payments
```

タグのキーと値は大文字と小文字を区別し、Azureに保存されている値と完全一致する必要があります。

### フィルタの組み合わせ

すべてのフィルタ種別を1つのコマンドで併用できます。

```bash
azsi my-vault xAbCdEfGhIjK \
  --name-starts-with prod- \
  --name-ends-with -creds \
  --tags Env=prod,Owner=platform
```

リストした**すべて**のフィルタを満たすシークレットのみがインポートされます。

***

## シークレット値の形式

Azure Key Vaultからシークレットを取得すると、その値は以下のルールに従い、優先順位の高い順に名前付きフィールド値へ解析されます。

### 1. JSONオブジェクト

シークレット値が `{` で始まり、オブジェクトを表す有効なJSONである場合、オブジェクト内の各キー/値ペアがKeeperレコード上の個別フィールドになります。

```json
{
  "username": "admin",
  "password": "s3cur3P@ss!",
  "host": "db.internal.example.com"
}
```

`username`、`password`、`host` の3フィールドになります。

### 2. KEY=VALUE行 (シェル形式)

シークレット値がJSONでない場合、改行区切りの `KEY=VALUE` ペア (`.env` ファイルと同じ形式) として解析を試みます。`#` で始まる行と空行は無視されます。

```
# Database credentials
username=admin
password=s3cur3P@ss!
host=db.internal.example.com
```

`username`、`password`、`host` の3フィールドになります。

### 3. 代替 — プレーン文字列

JSONでも `KEY=VALUE` 行でも解析できない場合、文字列全体が `value` という名前の単一フィールドに保存されます。

```
s3cur3P@ss!
```

`value = s3cur3P@ss!` の1フィールドになります。

***

## Keeperレコードの構造

インポートされた各シークレットは、対象の共有フォルダに**TypedRecord**が1件作成されます。

* **タイトル** — 元のAzure Key Vaultシークレット名 (例: `prod-database-primary`)
* **レコードタイプ** — `--record-type` で制御 (既定値: `login`)

### フィールドの配置

シークレットから解析したキー/値ペアは、レコードに配置する前にKeeperフィールドタイプへマッピングされます。

| 解析キー (大文字小文字を区別しない)                          | Keeperフィールドタイプ | 配置              |
| -------------------------------------------- | -------------- | --------------- |
| `username`, `user`, `login`                  | `login`        | 型付きフィールド        |
| `password`, `pass`, `secret`, `secret_value` | `password`     | 型付きフィールド        |
| `url`, `endpoint`, `host`                    | `url`          | 型付きフィールド        |
| `email`, `mail`                              | `email`        | 型付きフィールド        |
| `note`, `notes`                              | —              | レコードのNotesセクション |
| 上記以外                                         | `text`         | 型付きフィールド        |

`note` および `notes` キーは、型付きフィールドやカスタムフィールドではなく、レコードの**Notes**フィールドに書き込まれます。上記以外のキーは `text` 型付きフィールドとして保存されます。同じ意味のタイプ (`login`、`password`、`url`、`email` など) が複数ある場合、最初の出現が型付きフィールドのスロットを占め、以降は**カスタムフィールド**に保存されます。

***

## 例

### DefaultAzureCredentialですべてのシークレットをインポート

```bash
azsi my-vault xAbCdEfGhIjK
```

マネージドID、Azure CLIログイン、または環境変数を自動的に使用します。

### サービスプリンシパルで認証

```bash
azsi my-vault xAbCdEfGhIjK \
  --tenant-id 00000000-0000-0000-0000-000000000000 \
  --client-id 11111111-1111-1111-1111-111111111111 \
  --client-secret "MyClientSecretValue"
```

### インポート対象のプレビュー (ドライラン)

```bash
azsi my-vault xAbCdEfGhIjK --dry-run
```

すべてのフィルタを通過するシークレット名を表示し、レコードは作成しません。

### paymentsチームが所有する本番シークレットのみインポート

```bash
azsi my-vault xAbCdEfGhIjK --name-starts-with prod- --tags Team=payments
```

### 既知の単一シークレットをインポート

```bash
azsi my-vault xAbCdEfGhIjK --name prod-stripe-api-key
```

### ステージングのデータベースシークレットを `serverCredentials` レコードとしてインポート

```bash
azsi my-vault xAbCdEfGhIjK \
  --name-contains database \
  --tags Env=staging \
  --record-type serverCredentials
```

### 複雑なフィルタをコミット前にドライラン

```bash
azsi my-vault xAbCdEfGhIjK \
  --name-starts-with prod- \
  --name-ends-with -creds \
  --tags Env=prod,Owner=platform \
  --dry-run
```

### 別テナントのVaultをサービスプリンシパル認証でインポート

```bash
azsi partner-vault xAbCdEfGhIjK \
  --tenant-id aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee \
  --client-id ffffffff-0000-1111-2222-333333333333 \
  --client-secret "PartnerAppSecret" \
  --tags Shared=true
```


---

# 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/keeperpam/jp/commander-cli/command-reference/import-and-export-commands/azure-key-vault-secrets-import.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.
