# エージェントによる新規アカウント作成

AikidoのPentestエージェントは、お客様が提供する自然言語の指示に基づき、アセスメント用の使い捨てテストユーザーを自ら作成できます。事前にアカウントを作成して認証情報を共有する代わりに、新しいユーザーの生成方法を記述するだけで、スキャン開始前にエージェントが残りの作業を行います。

**次のような場合にこの機能をご利用ください：**

* ロールごとに手動でアカウントを作成することなく、**複数ロールのカバレッジ**（例：`admin`、`editor`、`viewer`）を実現したい場合。
* アプリケーションに、エージェントが呼び出せる**サインアップフォーム**または**管理者/ユーザー作成API**がある場合。
* ステージング環境にテストデータが蓄積しないよう、**アセスメントごとの使い捨てアカウント**を使用したい場合。

{% hint style="info" %}
この方法は、既知の**サインアップフローまたは管理者API**がある環境で最も効果を発揮します。アプリにプログラムでユーザーを作成する手段がない場合は、標準の[認証方法](https://help.aikido.dev/docs/docs-ja/pentests/configure-a-pentest/setting-up-authenticated-testing)のいずれかを使用し、アカウントを手動で作成してください。
{% endhint %}

### 仕組み

1. **プリフライトチェック**中に、エージェントは**ユーザー作成指示**を読み取り、1つ以上のアカウントを作成します。サインアップフォーム、`curl`形式のAPI呼び出し、または短いスクリプトの実行を利用できます。
2. Aikidoは作成されたアカウントを実際のテストユーザーとして保存し、このジェネレーターに紐付けます。元の「Test user generator」エントリはアーカイブされ、スキャン自体には使用されません。
3. **2回目のプリフライト**が実行され、**認証指示**（`<generated_username>`および`<generated_password>`プレースホルダーを参照）を使用して、プロビジョニングされた各ユーザーでサインインします。成功したセッションはメインのペネトレーションテスト用に取得されます。
4. プリフライトが失敗した場合、プロビジョニングされたユーザーは自動的にロールバックされ、ジェネレーターが復元されるため、指示を編集して再試行できます。

### セットアップガイド

{% stepper %}
{% step %}
**テストユーザーを追加する**

アセスメントウィザードで、**Add Test User** → **Custom** → **Agent Creates New Account**をクリックします。

デフォルトでは、認証情報セットの名前は`Test user generator`です。必要に応じて名前を変更してください。このラベルは参照用です。

<div data-with-frame="true"><figure><img src="https://help.aikido.dev/_assets/1a69713b6733/Screenshot-2026-05-12-at-18.25.55.png" alt="Custom > Agent Creates New Account が表示された Add Test User メニュー"><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}
**ユーザーの作成方法を記述する**

**User creation instructions**フィールドに、エージェントがアカウントを生成する方法を自然言語で説明します。以下の点を明確にしてください：

* ユーザーを作成する**場所**（サインアップURL、または管理者エンドポイント）。
* 必要な**ロールまたはバリエーション**（例：viewer 1名、editor 1名、admin 1名）。
* メールアドレス、パスワード、組織、テナントなどの**必須フィールド**。
* エージェントが使用すべき**トークンまたは管理者認証情報**。

**管理者APIを使用する例：**

```
Create new users through the API for the following roles:
- viewer
- editor
- admin

Use the following curl request:
curl -X POST https://staging.example.com/api/admin/users \
    -H "x-api-key: test-admin-key" \
    -H "Content-Type: application/json" \
    -d '{"email":"jane@example.com","password":"password","role":"editor"}'

Always create a unique email and a secure password.
```

**サインアップフォームを使用する例：**

```
Create three new accounts via the signup form at https://staging.example.com/signup.

For each account:
1. Click "Sign up".
2. Enter a unique email and a strong password.
3. Submit the form and complete any onboarding screens.

Create one account per role (viewer, editor, admin) by selecting the matching plan during signup.
```

<div data-with-frame="true"><figure><img src="https://help.aikido.dev/_assets/7d6ea42caf17/Screenshot-2026-05-12-at-18.27.43.png" alt="User creation と Authentication の指示が表示された Authentication Set モーダル"><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}
**ログイン方法を記述する**

**Authentication instructions**フィールドに、エージェントが作成したユーザーの**ログインフロー**を記述します。プレースホルダー`<generated_username>`と`<generated_password>`を使用してください（Aikidoはプロビジョニングされた各ユーザーをテストする際に、これらを実際の認証情報に置き換えます）。

**例：**

```
1. Navigate to https://staging.example.com/login
2. Enter username: <generated_username>
3. Enter password: <generated_password>
4. Click "Log In"

Success criteria: The login is successful and the dashboard is visible.
```

**成功基準**は曖昧さのないものにしてください。ログイン後のページに表示される文字列を使うと効果的です。
{% endstep %}

{% step %}
**保存してテストする**

**Save & Test**をクリックします。プリフライトは2段階で実行されます：

1. エージェントがアカウントをプロビジョニングします。
2. エージェントが新しい各アカウントでサインインし、セッションを取得します。

両方が成功すると、アセスメント設定内のジェネレーターが実際のテストユーザーに置き換えられます。これでスキャンを開始する準備が整いました。
{% endstep %}
{% endstepper %}

### ヒントとベストプラクティス

* 作成ステップには**専用の管理者トークンを使用**してください。実際のユーザーに紐付いたトークンを再利用しないでください。
* 権限レベル間のBroken Access ControlをAikidoがテストできるよう、**必要なすべてのロールをカバー**してください。
* **メールアドレスの一意性を明示してください：** 多くのアプリは重複したサインアップを通知なく拒否します。アカウントごとに一意のメールアドレスを生成するようエージェントに指示してください。
* ログイン指示には**明確な成功基準を設定**してください。「ページが読み込まれる」のような曖昧な基準では、ユーザーが実際にはオンボーディング画面で止まっていても成功と判定される場合があります。
* **自由に繰り返し調整してください。** プリフライトが失敗した場合は、指示を編集して再度**Save & Test**をクリックできます。以前にプロビジョニングされたユーザーは自動的にアーカイブされます。

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

* **ユーザー作成に失敗した場合：** APIまたはサインアップURLが[AikidoのIP範囲](https://help.aikido.dev/docs/docs-ja/pentests/prepare-a-pentest/ip-addresses-for-pentest)からアクセス可能であること、および指示内の管理者トークンが有効であることを確認してください。`curl`リクエストやサインアップフォームを手動で実行し、手順が正しいことを確認してください。
* **2回目のプリフライトでログインに失敗した場合：** 認証指示の成功基準をより厳密にするか、新規作成されたアカウントで表示される追加ステップ（メール認証、オンボーディングモーダル、MFA）を含めてください。新しいユーザーがメール認証を必要とする場合は、この方法を[メール認証フロー](https://help.aikido.dev/docs/docs-ja/pentests/configure-a-pentest/setting-up-authenticated-testing/handling-email-verification-and-magic-links)と組み合わせてください。
* **誤ったロールが割り当てられた場合：** 各ユーザーにどのロールを付与するかを作成指示で明示してください。APIがデフォルトのロールを選択する場合は、リクエストボディで上書きしてください。

### お困りですか？

Aikidoダッシュボードの右下にある**Intercomチャット**を開いてください。お使いの環境に合った作成指示とログイン指示の作成を、当社のチームがお手伝いします。
