# 自動化コマンド

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FUts2APF9r9TQpJECY3MS%2Fimage.png?alt=media&#x26;token=d12e149d-4fec-40ab-9e47-c2846526e3b9" alt=""><figcaption></figcaption></figure>

## 概要

自動化コマンドは、組織内ユーザーの認証情報プロビジョニングを自動化するための統一された仕組みを提供します。管理者は単一のコマンダーアクションでPAMユーザーの作成、ローテーション設定の適用、Keeperゲートウェイを介した即時パスワード更新、ワンタイム共有リンクによる認証情報の配布を実行できます。この仕組みにより、再現性が高くエラーの起きにくいワークフローが実現し、従業員のオンボーディングを加速するとともに、毎回確実にセキュリティのベストプラクティスを遵守できます。

## コマンド

| コマンド                                            | エイリアス | 目的                                                            |
| ----------------------------------------------- | ----- | ------------------------------------------------------------- |
| [`credential-provision`](#credential-provision) | cp    | PAMユーザーの認証情報プロビジョニングを自動化し、ローテーションの自動適用、ワンタイム共有リンクの生成、メール配信を行う |

## credential-provision

パスワードローテーション、フォルダ整理、ワンタイム共有リンクの生成、セキュアなメール配信を含む、PAMユーザー認証情報の作成をエンドツーエンドで自動化します。

### 活用事例

* 新規従業員のオンボーディングをIDプロバイダーの認証情報で自動化
* エンドユーザーのパスワードリセット処理を自動化
* KeeperPAMリソース向けに、必要に応じて認証情報をローテーションし、安全に配布

### 詳細

`credential-provision` コマンドは、複数のコマンダー操作を単一のワークフローに統合します。このコマンドはYAML構成ファイルを入力として受け取り、その内容に基づいて一連の処理を1回のアクションで実行します。

* **構成ファイルの解析**: 指定されたYAML構成ファイルを検証
* **重複検出**: 既存のPAMユーザーを確認し、競合を防止
* **パスワード生成**: 複雑性要件を満たす安全なパスワードを生成
* **PAMユーザー作成**: 指定フォルダにPAMユーザーレコードを作成
* **ローテーション構成**: PAM構成に紐付け、ローテーションスケジュールを設定
* **即時ローテーション**: Keeperゲートウェイ経由でパスワードをオンデマンド更新
* **共有URLの生成**: 受信者向けにワンタイム共有リンクを生成
* **メール配信**: 認証情報を含むウェルカムメールを送信

この自動化により、手動作業が不要となり、セキュリティ設定を確実に適用しながら、一貫性のあるプロビジョニング体験を提供できます。

## パラメータ

* `-config </path/to/file>` - プロビジョニング設定を含むYAML構成ファイルのパス
* `-config-b64 <base64 encoded file>` - base64形式でエンコードされたYAML構成ファイル

## 任意パラメータ

* `--dry-run` - リソースを作成せずに構成を検証する
* `--format=<json|text>` - 出力形式 (既定値: text)

## 要件

この自動化コマンドを利用するには、以下が設定されている必要があります。

* メール配信のための[メール構成](https://docs.keeper.io/jp/keeperpam/commander-cli/command-reference/email-configuration-commands)が設定済みであること
* 有効な[KeeperPAMライセンス](https://docs.keeper.io/jp/keeperpam/privileged-access-manager/getting-started/keeperpam-licensing)
* 対象に応じて作成済みの[PAM構成](https://docs.keeper.io/keeperpam/privileged-access-manager/getting-started/pam-configuration) (Active Directory、AWS、Azure、GCPのいずれか)
* 対象システムの認証情報をローテーションできる[Keeperゲートウェイ](https://docs.keeper.io/keeperpam/privileged-access-manager/getting-started/gateways)が構成済みであること

## YAML構成ファイルの構造

以下のYAML構成例では、Sarah JonesはCompany.comへ入社した新しい従業員です。IdP / IGA / HRシステム (Workday、Aquera、SailPoint、ConductorOneなど) がKeeperへリクエストを送信し、以下を実行します。

* 対象ディレクトリでユーザーを識別
* 指定された複雑性ルールに基づいてディレクトリ内のパスワードをローテーション
* パスワードをコマンダーユーザーのボルト内にPAMユーザーレコードとして保存
* レコードの自動パスワードローテーションを週1回に設定
* ワンタイム共有リンクを使用して新入社員の個人メールへ認証情報を送信
* ワンタイム共有リンクの有効期限は7日

```yaml
user: # 従業員情報
  first_name: Sarah
  last_name: Admin
  personal_email: sarah.jones@company.com
  department: Marketing
account:  # 対象アカウント情報
  username: sarah.jones
  distinguished_name: "CN=sarah.jones,OU=Marketing,OU=Corporate,DC=company,DC=com"
  pam_config_uid: boj-GDQmTV-VGgBC3VRsow
vault: # ボルト格納設定（任意）
  folder: "PAM Users/Marketing"
pam: # パスワードローテーション設定
  rotation:
    schedule: "0 0 0 * * ?"        # 毎週日曜日の午前0時
    password_complexity: "32,5,5,5,5"
email: # メール配信設定
  config_name: "Company SMTP Server"
  send_to: "sarah.jones.demo@gmail.com"
  subject: "Welcome to Company.com - Your Credentials"
  share_url_expiry: "7d"           # ワンタイム共有リンクの有効期限

```

### Userセクション

「user」セクションでは、対象ディレクトリ内のエンドユーザー情報を識別します。

| フィールド            | 型      | 必須  | 説明                   |
| ---------------- | ------ | --- | -------------------- |
| `first_name`     | string | はい  | 新規ユーザーの名             |
| `last_name`      | string | はい  | 従業員の姓                |
| `personal_email` | string | はい  | 認証情報の配信先となる個人メールアドレス |
| `employee_id`    | string | いいえ | 従業員識別子               |
| `department`     | string | いいえ | 部署 (フォルダ構成に利用)       |

### Accountセクション

「account」セクションでは、対象ディレクトリ内のPAM構成およびユーザーIDを指定します。

| フィールド                | 型      | 必須    | 説明                   |
| -------------------- | ------ | ----- | -------------------- |
| `username`           | string | はい    | 対象システムのユーザー名         |
| `pam_config_uid`     | string | はい    | PAM構成レコードのUID        |
| `distinguished_name` | string | いいえ\* | ADの識別名 (システム固有要件を参照) |

\*複数OU環境のActive Directoryでは必須 (すべてのAD環境で指定することを推奨)。

### Vaultセクション

「vault」セクションでは、PAMユーザーレコードをボルト内のどこに保存するかを指定します。

<table><thead><tr><th width="108.53515625">フィールド</th><th width="98.69140625">型</th><th width="108.69921875">必須</th><th width="90.4296875">デフォルト</th><th>説明</th></tr></thead><tbody><tr><td><code>folder</code></td><td>string</td><td>いいえ</td><td>なし</td><td>レコードを保存するボルト内のフォルダパス</td></tr></tbody></table>

アプリケーションフォルダは、**ボルト** > **\[シークレットマネージャー]** > **\[PAM構成]** > **\[アプリケーションフォルダ]** の設定で確認できます。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FK6qZddTHjp8tSRtU5hyx%2Fimage.png?alt=media&#x26;token=d7825bfd-1852-423a-ab99-593911b22588" alt=""><figcaption></figcaption></figure>

#### 例

ゲートウェイのフォルダが `My Infrastructure` で、`vault.folder` パラメータが `Users/Service Accounts` の場合、最終的なパスは `My Infrastructure/Users/Service Accounts` になります。

```
{gateway_application_folder}/{vault.folder}
```

### PAMセクション

「pam」セクションでは、パスワードローテーション設定を制御します。

<table><thead><tr><th width="266.328125">フィールド</th><th width="83.82421875">型</th><th width="123.98046875">必須</th><th>説明</th></tr></thead><tbody><tr><td><code>rotation.schedule</code></td><td>string</td><td>はい</td><td>6フィールドのCRON式</td></tr><tr><td><code>rotation.password_complexity</code></td><td>string</td><td>はい</td><td>パスワードの複雑性ルール</td></tr></tbody></table>

**ローテーションスケジュール (6フィールドCRON) 形式:** `秒 分 時 日 月 曜日`

```yaml
"0 0 0 * * 0"      # 毎週日曜日の午前0時
"0 0 2 * * *"      # 毎日午前2時
"0 0 3 * * 1,5"    # 毎週月曜日と金曜日の午前3時
"0 0 0 1 * *"      # 毎月1日の午前0時
"0 30 1 * * 1-5"   # 平日の午前1時30分
```

**パスワードの複雑さの形式:** `長さ,大文字,小文字,数字,記号`

```yaml
"32,5,5,5,5"       # 32文字: 大文字5、小文字5、数字5、記号5
"16,3,3,3,3"       # 16文字: 大文字3、小文字3、数字3、記号3
"64,10,10,10,10"   # 64文字: 大文字10、小文字10、数字10、記号10
```

### Emailセクション

「email」セクションでは、認証情報を含むメールの配信設定およびメールテンプレートを定義します。

<table><thead><tr><th width="180.2578125">フィールド</th><th width="100.84765625">型</th><th width="90.859375">必須</th><th>デフォルト</th><th>説明</th></tr></thead><tbody><tr><td><code>config_name</code></td><td>string</td><td>はい</td><td>-</td><td>管理コンソールで設定されたメール設定名</td></tr><tr><td><code>send_to</code></td><td>string</td><td>はい</td><td>"example@gmail.com"</td><td>受信者のメールアドレス</td></tr><tr><td><code>subject</code></td><td>string</td><td>いいえ</td><td>"Your New Credentials"</td><td>メールの件名</td></tr><tr><td><code>share_url_expiry</code></td><td>string</td><td>いいえ</td><td>"7d"</td><td>共有URLの有効期限</td></tr></tbody></table>

**共有URLの有効期限の形式:** `y` (年)、`mo` (月)、`d` (日)、`h` (時)、`mi` (分)

```yaml
"7d"    # 7日
"24h"   # 24時間
"60mi"  # 60分（※ 'm' ではなく 'mi' を使用）
"1mo"   # 1か月
"1y"    # 1年
```

### 自動化の実行

以下はKeeperの自動化を実行する手順です。

1. 自動化パラメータを定義したYAMLファイルを作成する。
2. 以下のコマンダーコマンドを実行する。

```
credential-provision --config="/path/to/test.yaml"
```

3. または、コマンダーのサービスモードREST APIを使用し、HTTPS経由でリクエストを送信する方法もあります。その場合は以下の形式を使用します。

```
credential-provision --output json --config-b64 <base64 encoded file>
```

## 構成の例

#### Active Directoryユーザー

```yaml
user:
  first_name: John
  last_name: Doe
  personal_email: john.doe@company.com
  department: IT
account:
  username: john.doe-admin
  pam_config_uid: "boj-GDQmTV-VGgBC3VRsow" # 使用するPAM構成UID
  # 識別名（任意だが複数OU環境では推奨）
  distinguished_name: "CN=Test User,CN=Users,DC=samdoe,DC=local"
pam:
  rotation:
    schedule: "0 0 3 * * ?"
    password_complexity: "32,5,5,5,5"
email:
  config_name: "Company-Mail-Server" # 使用するメール設定名
  send_to: "john.doe@gmail.com"
vault:
  folder: "PAM Users/IT Admins"
```

#### 実行例

```
My Vault> credential-provision --config="test.yaml"
Loading configuration from: test.yaml
✅ Configuration validated
Selected 1 PAM record(s) for rotation
✅ PAM User created and linked
✅ Password rotation submitted
✅ Share URL generated for PAM User
[EMAIL] Sending email to john.doe@gmail.com via smtp
[EMAIL] SMTP email sent to john.doe@gmail.com via smtp.gmail.com
✅ Email with one-time share sent
My Vault>
```

#### Microsoft Entra IDユーザー

<pre class="language-yaml"><code class="lang-yaml">user:
  first_name: Craig
  last_name: Lurey
  personal_email: craig@company.com
<strong>account:
</strong>  username: craig@company.com
  pam_config_uid: hGn4IdC_18KWCo7tPCKoqQ
pam:
  rotation:
    schedule: "0 0 0 * * ?"
    password_complexity: "32,5,5,5,5"
email:
  config_name: "SMTP-Gmail"
  send_to: "craig@gmail.com"
  subject: "Your Microsoft Login"
  share_url_expiry: "7d"
</code></pre>

#### 実行例

```
My Vault> cp --output json --config test.yaml
Selected 1 PAM record(s) for rotation
[EMAIL] Sending email to craig@gmail.com via smtp
[EMAIL] SMTP email sent to craig@gmail.com via smtp.gmail.com
{
  "success": true,
  "pam_user_uid": "g28IrIrHEfL1xnaEgeww7g",
  "share_url": "https://keepersecurity.com/vault/share/#XXXXXXXX",
  "username": "craig@company.com",
  "employee_name": "Craig Lurey",
  "rotation_status": "synced",
  "email_status": "sent",
  "message": "Credential provisioning complete"
}
```

その結果、PAMユーザーレコードはボルトに作成され、対象ディレクトリでローテーションされ、7日後に期限切れとなるワンタイム共有として受信者へ送信されます。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FLRmN02Dqr65xvJjUsPp2%2Fimage.png?alt=media&#x26;token=7be94090-2a23-4075-8e2a-d5f0be5616b7" alt=""><figcaption></figcaption></figure>

### メールテンプレート

受信者には、暗号化された[ワンタイム共有](https://docs.keeper.io/enterprise-guide/sharing/one-time-share)リンクを含むメールが届きます。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FkGzNUMMoWTaGf7RBKxn1%2Fimage.png?alt=media&#x26;token=89645358-90b4-477e-9ab6-9d470f1e7cea" alt=""><figcaption></figcaption></figure>

**\[認証情報を見る]** をクリックすると、認証情報を復号して表示できます。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FwyUdpz2EQP4RpVb660vk%2Fautomation_commands.gif?alt=media&#x26;token=63846049-341a-4e9c-8f21-7f37c0a88cce" alt=""><figcaption></figcaption></figure>

## システム固有の要件

**Active Directory -** 複数OU環境では識別名が必須です。同じユーザー名を持つユーザーが異なるOUに存在する場合、識別名を指定しないとローテーションが失敗する可能性があります。

**Azure AD -** ユーザー名は必ずメール形式である必要があります (`user@domain.com` または `DOMAIN\user`)。

**AWS IAM -** ユーザー名を使用します。

## 関連コマンド

* [`pam`](https://docs.keeper.io/keeperpam/commander-cli/command-reference/keeperpam-commands) – PAMサブシステム管理
* [`email-config`](https://docs.keeper.io/jp/keeperpam/commander-cli/command-reference/email-configuration-commands) – メール構成
* [`sharing`](https://docs.keeper.io/jp/keeperpam/commander-cli/command-reference/sharing-commands) – 共有関連コマンド
