# Iru / Kandji を使用して Windows に Aikido Device Protection を展開する

Iru / Kandji を使用して、必要な権限を設定した状態で、管理対象の Windows デバイス群全体に Aikido Device Protection を展開します。

{% hint style="info" %}
開始する前に、すべてのデバイスが Iru の Windows 管理に登録されている必要があります。Iru は、Pro、Pro Education、Enterprise、Education エディションの Windows 11（24H2 または 25H2）を管理します。
{% endhint %}

## インストール

{% stepper %}
{% step %}
**必要なもの**

開始する前に、Aikido Device Protection ダッシュボードから以下を用意してください。

* **PowerShell インストールコマンド**（ダッシュボードのユーザーグループセレクターからコピーしたもの。トークンとインストーラーのダウンロードを含みます）

お持ちでない場合は、[Aikido Device Protection ダッシュボード](https://app.aikido.dev/endpoint-protection/devices)に戻り、**Connect Device** をクリックしてください。

{% hint style="info" %}
この PowerShell コマンドには Device Protection トークンが含まれており、最新のインストーラーをダウンロードしてサイレントインストールします。macOS での展開とは異なり、アップロードする構成プロファイルやインストーラーパッケージはないため、Windows Custom App の Library Item は必要ありません。
{% endhint %}
{% endstep %}

{% step %}
**管理対象デバイスでインストールコマンドを実行する**

ダッシュボードのコマンドを Windows Custom Script として展開します。Iru Agent は Windows カスタムスクリプトをデバイスごとに 1 回実行します。

1. Iru で **Library** → **Add Library Item** に移動し、**Windows Custom Script** を選択します。
2. **Name**（例：「Install Aikido Device Protection」）を入力し、ステータスが **Active** であることを確認します。
3. **Execute in** は **64-bit** のままにします。
4. **Audit script** フィールドに以下を貼り付けます。

```powershell
if (Get-Service -Name EndpointProtection -ErrorAction SilentlyContinue) { exit 0 }
exit 1
```

5. **Remediation script** を追加して、Aikido Device Protection ダッシュボードからコピーした PowerShell インストールコマンドを貼り付け、同じスクリプトの最終行として以下の再起動行を追加します（理由は後述の **インストール後にデバイスを再起動する** ステップで説明します）。

```powershell
# last line of the remediation script, after the install command
shutdown.exe /r /t 300 /c "Restarting to activate Aikido Device Protection"
```

6. **Save** をクリックし、Assignment Map を使用して、Windows デバイスを対象とする Blueprint に Library Item を割り当てます。

監査スクリプトは、`EndpointProtection` サービスが存在しない間はデバイスを非準拠として報告し、これにより修復スクリプトがトリガーされてエージェントがインストールされます。後から登録されたデバイスも、最初のチェックイン時に同じチェックを 1 回実行します。
{% endstep %}

{% step %}
**ロックダウンポリシーを適用する**

Iru には Windows 用のカスタムプロファイルや OMA-URI ペイロードがないため、Aikido のアンインストーラーをブロックする AppLocker ポリシーを 2 つ目の Windows Custom Script として配信します。

1. Iru で **Library** → **Add Library Item** に移動し、**Windows Custom Script** を選択します。
2. **Name**（例：「Block Aikido uninstall」）を入力し、ステータスが **Active** であることを確認します。
3. **Audit script** フィールドに以下を貼り付けます。

```powershell
if ((Get-AppLockerPolicy -Local -Xml) -like "*c0a1b2c3-d4e5-46f7-8a9b-0c1d2e3f4a5b*") { exit 0 }
exit 1
```

4. **Remediation script** を追加して、以下を貼り付けます。

```powershell
$tmp = "$env:TEMP\aikido-applocker.xml"
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/AikidoSec/safechain-internals/refs/heads/main/docs/aikido-applocker-deny-mdm.xml" -OutFile $tmp
Set-AppLockerPolicy -XmlPolicy $tmp -Merge
Remove-Item $tmp -Force
```

5. **Save** をクリックし、Library Item を同じ Blueprint に割り当てます。

監査スクリプトはローカルの AppLocker ポリシー内で Aikido の拒否ルールを探すため、修復はまだルールが適用されていないデバイスでのみ実行されます。

{% hint style="info" %}
Aikido Device Protection インストーラーは OS レベルで `EndpointProtection` サービスの ACL を強化するため、標準ユーザーはこのサービスを停止または無効化できません。ユーザーがローカル管理者として実行している場合、AppLocker ルールは回避される可能性があるため、より強力に適用するには、上記のアンインストールブロックに加えて App Control for Business（WDAC）を併用し、ローカル管理者権限を削除してください。
{% endhint %}
{% endstep %}

{% step %}
**インストール後にデバイスを再起動する**

Iru の Windows デバイスアクションには再起動コマンドが含まれていないため、ステップ 2 のインストール用修復スクリプトの最後は次の行になっています。

```powershell
shutdown.exe /r /t 300 /c "Restarting to activate Aikido Device Protection"
```

修復スクリプトはデバイスごとに 1 回実行されるため、再起動はエージェントをインストールする実行時にのみスケジュールされます。スクリプトからデバイスを再起動したくない場合は、ステップ 2 からこの行を除外し、代わりにユーザーに再起動を依頼してください。

エージェントは次回の起動時に完全に有効になります。
{% endstep %}
{% endstepper %}

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


| 問題 | 対処法 |
| ------- | --- |
| スクリプトの実行後、デバイスがダッシュボードに表示されない | デバイスを再起動してください。エージェントは次回の起動時に登録が完了します |
| MDM コンソールでスクリプトがエラーで終了する | テストホスト上でスクリプトを SYSTEM として手動で実行し、エラーの詳細を確認してください。また、デバイスがインストーラーをダウンロードするためにインターネットにアクセスできることを確認してください |
| エージェントサービスが実行されていない | デバイスを再起動してください。それでもサービスが存在しない場合は、インストールスクリプトを再実行してください |
| スクリプトが実行ポリシーによってブロックされる | MDM 経由で実行されるスクリプトは SYSTEM として実行されるため、ユーザーレベルの実行ポリシーによる制限を受けません。MDM がスクリプトの実行を制限する追加のポリシーを適用していないことを確認してください |
| インストール後、デバイスが非アクティブと表示される | エージェントを完全に有効化するには再起動が必要です。再起動後にもう一度確認してください |
