# Device Protectionの仕組み

Aikido Device Protectionは、各デバイスに軽量なレイヤー4プロキシをインストールします。検査対象は、サポートされているパッケージレジストリへのトラフィックと、AI Usageモニタリングが有効な場合のAIプロバイダーへのトラフィックのみです。それ以外のトラフィックはすべてプロキシをバイパスします。また、エージェントはデバイス上のローカルファイルをスキャンし、ハードコードされたシークレットを検出します。

```mermaid
flowchart LR
    A[Network traffic on device] --> B{Supported ecosystem?}
    B -- No --> C[Passes through unchanged<br/>not inspected]
    B -- Yes --> E{On device inspect traffic<br/>and policy decision}

    E -->|Allowed| F[Install allowed]
    E -->|Blocked| G[Install blocked]

    F --> R
    G --> R
    R[Reported to Aikido]

    classDef block fill:#ffd6d6,stroke:#c0392b;
    classDef allow fill:#d6f5d6,stroke:#27ae60;
    class G block;
    class F allow;
```

## 仕組み

### 判定はデバイス上で行われる

許可およびブロックの判定はすべてローカルで行われます。Aikidoがお客様のトラフィック、閲覧履歴、ダウンロードしたファイルを受け取ることはありません。

エージェントがダウンロードするのは、ポリシーの適用に必要なデータのみです。

* **許可リストとブロックリスト**
* **マルウェアシグネチャ**
* **ポリシールールと例外**

同期が完了すると、デバイスは単独でルールを適用できます。

### サポート対象のエコシステムのみをインターセプト

このプロキシは汎用的なWebフィルターではありません。インターセプトするのは[サポートされているパッケージエコシステム](https://help.aikido.dev/docs/docs-ja/aikido-device-protection/miscellaneous-aikido-endpoint/supported-ecosystems)と、AI Usageモニタリングが有効な場合のAIプロバイダーのドメインのみです。

これらのドメインはHTTPSで提供されています。これらを検査するために、エージェントはデバイス上のローカル認証局（CA）を使用します。このCAは以下のドメインにのみ使用されます。[証明書](#certificates)を参照してください。


これらは Aikido Device Protection がインターセプトするドメインです。パッケージレジストリと開発者ツールのマーケットプレイスは常にインターセプトされます。AI プロバイダーのドメインは、[AI Usage](https://help.aikido.dev/docs/docs-ja/aikido-device-protection/using-aikido-endpoint/ai-monitoring) モニタリングが有効になっている場合にのみインターセプトされます。

{% tabs %}
{% tab title="パッケージレジストリとマーケットプレイス" %}
```
api.nuget.org
app.aikido.dev
endpoint-server.aikido.dev
aikido-endpoint-binaries.s3.eu-west-1.amazonaws.com
central.maven.org
chromewebstore.google.com
chromewebstore.googleapis.com
clients2.google.com
clients2.googleusercontent.com
crates.io
index.crates.io
static.crates.io
device-protection.aikido.help
files.pythonhosted.org
gallery.vsassets.io
gallerycdn.vsassets.io
github.com
globalcdn.nuget.org
marketplace.cursorapi.com
marketplace.visualstudio.com
open-vsx.org
proxy.golang.org
pypi.org
pypi.python.org
registry.npmjs.com
registry.npmjs.org
registry.yarnpkg.com
repo.maven.apache.org
repo1.maven.org
repository.apache.org
rubygems.org
index.rubygems.org
repo.packagist.org
sum.golang.org
update.googleapis.com
www.nuget.org
```
{% endtab %}

{% tab title="AI プロバイダー" %}
AI Usage モニタリングが有効になっている場合にのみインターセプトされます。

```
ai-gateway.helicone.ai
ai-gateway.vercel.sh
ai.zenifra.com
aki.io
api-inference.modelscope.cn
api-sherlock.cloudferro.com
api.302.ai
api.abliteration.ai
api.ai-router.dev
api.aiand.com
api.ambient.xyz
api.anyapi.ai
api.auriko.ai
api.berget.ai
api.cerebras.ai
api.clarifai.com
api.claudin.io
api.cline.bot
api.code.umans.ai
api.cortecs.ai
api.crossmodel.ai
api.deepinfra.com
api.deepseek.com
api.dinference.com
api.empiriolabs.ai
api.fireworks.ai
api.friendli.ai
api.getlilac.com
api.githubcopilot.com
api.gmi-serving.com
api.greenpt.ai
api.groq.com
api.hpc-ai.com
api.impossibl.com
api.inceptionlabs.ai
api.inceptron.io
api.inference.wandb.ai
api.intelligence.io.solutions
api.jiekou.ai
api.kilo.ai
api.lkeap.cloud.tencent.com
api.llama.com
api.llmgateway.io
api.longcat.chat
api.lucidquery.com
api.meganova.ai
api.meta.ai
api.mistral.ai
api.modeloracle.com
api.moonshot.ai
api.moonshot.cn
api.morphllm.com
api.neuralwatt.com
api.nova.amazon.com
api.novita.ai
api.ofox.ai
api.openai-compat.model-serving.eu01.onstackit.cloud
api.orcarouter.ai
api.perplexity.ai
api.pioneer.ai
api.poe.com
api.qhaigc.net
api.qnaigc.com
api.regolo.ai
api.routing.run
api.sakana.ai
api.sarvam.ai
api.scaleway.ai
api.scx.ai
api.siliconflow.cn
api.siliconflow.com
api.stepfun.ai
api.stepfun.com
api.synthetic.new
api.tbox.cn
api.tensorx.ai
api.thegrid.ai
api.together.xyz
api.tokenfactory.nebius.com
api.trustedrouter.com
api.unorouter.com
api.upstage.ai
api.vivgrid.com
api.vultrinference.com
api.xiaomimimo.com
api.z.ai
api.zeldoc.ai
apis.iflow.cn
app.frogbot.ai
chat.d.run
cloud-api.near.ai
coding-intl.dashscope.aliyuncs.com
coding-plan-endpoint.kuaecloud.net
coding.dashscope.aliyuncs.com
crof.ai
daoxe.com
dashscope-intl.aliyuncs.com
dashscope.aliyuncs.com
go.fastrouter.ai
hyper.charm.land
inference.baseten.co
inference.coralbricks.ai
inference.do-ai.run
inference.hetzner.com
inference.net
inference.poolside.ai
inference.tinfoil.sh
inference.us-west.modal.direct
integrate.api.nvidia.com
kenari.id
llm.chutes.ai
llm.submodel.ai
llmtr.com
maas-api.ebcloud.com
moark.com
model.inferx.net
modelishub.com
models.mixlayer.ai
models.think.evroc.com
nano-gpt.com
oai.endpoints.kepler.ai.cloud.ovh.net
ollama.com
open.bigmodel.cn
openai.blueclaw.network
opencode.ai
openrouter.ai
pass.wafer.ai
routellm.abacus.ai
router.huggingface.co
router.requesty.ai
token-plan-ams.xiaomimimo.com
token-plan-cn.xiaomimimo.com
token-plan-sgp.xiaomimimo.com
token-plan.ap-southeast-1.maas.aliyuncs.com
token-plan.cn-beijing.maas.aliyuncs.com
tokenhub.tencentmaas.com
www.xpersona.co
zenmux.ai
```
{% endtab %}
{% endtabs %}

### ネットワーク要件

エージェントがAikidoに接続するには、外向きのインターネットアクセスが必要です。ポート443のHTTPSで`*.aikido.dev`を許可リストに追加してください。

## Aikidoが受け取るデータ

### インストール結果とSBOM

パッケージの内容や一般的な閲覧データはデバイス上に留まります。エージェントが報告するのは以下のみです。

* 許可されたインストール
* ブロックされたインストール
* フラグが付けられたインストール
* インストール済みのパッケージ

インストール結果は即座に報告されます。インストール済みのパッケージはSBOM（ソフトウェア部品表、使用中のパッケージのインベントリ）にまとめられ、1日1回生成・同期されます。また、エージェントは10分ごとにハートビートを送信するため、オンライン状態を確認できます。

### AI機能

[AI Usage](https://help.aikido.dev/docs/docs-ja/aikido-device-protection/using-aikido-endpoint/ai-monitoring)モニタリングが有効な場合、エージェントはAIプロバイダーのドメインへのトラフィックも検査します。Aikidoが受け取るのはインベントリのみです。具体的には、使用されたMCPサーバー、モデル、ツール、およびそれらが使用されたデバイスです。

### シークレットスキャン

[Secret Scanning](https://help.aikido.dev/docs/docs-ja/aikido-device-protection/using-aikido-endpoint/secret-scanning)は、シェル履歴などデバイス上のローカルファイルを読み取ります。ファイルの内容がアップロードされることはありません。シークレットが検出されると、Aikidoはシークレットの種類と、検出結果を識別できる程度の数文字の値を受け取ります。シークレット全体が送信されることはありません。

## 証明書

### CAの仕組み

Aikidoは2階層のCAチェーンを使用します。

1. **ワークスペースCA:** チェーンのルートであり、Aikido内で生成され、お客様のワークスペースに固有のものです。デバイスはその公開証明書を信頼します。秘密鍵はAikidoが保持します。
2. **デバイス証明書:** 有効期間が短く、デバイスごとに固有で、ワークスペースCAによって署名されます。プロキシはこれを使用してパッケージマネージャーのトラフィックを検査します。

各デバイスは独自の秘密鍵をローカルで生成し、署名リクエストのみをAikidoに送信します。秘密鍵がデバイスの外に出ることはありません。macOSでは、秘密鍵はAppleの保護されたストレージ（Secure Enclave / Keychain）に保存されるため、デバイスの所有者であっても読み取りやエクスポートはできません。

デバイス証明書の有効期間は最大4日間で、期限切れになる前に自動的に再発行されます。デバイス証明書は他の証明書に署名できず、これは署名時に強制されます。万が一メモリから抽出されても、すぐに失効します。

ワークスペースCAをご自身で配布する必要はありません。MDM構成プロファイルとインストーラーパッケージの両方に含まれているため、通常のデプロイの一環としてデバイスのトラストストアに登録されます。

**macOSでのCAファイルの場所:**

`/Library/Application Support/AikidoSecurity/EndpointProtection/run/endpoint-protection-combined-ca.pem`

### 証明書の確認

Aikidoの[Certificates](https://app.aikido.dev/endpoint-protection/certificates)ページには以下が表示されます。

* **Root CA Certificate:** ワークスペースCA。SHA-256フィンガープリント、作成日と有効期限、PEM形式の公開証明書が表示されます。
* **Issued Certificates:** ワークスペースCAによって署名されたすべてのデバイス証明書。発行先のデバイス、発行日時、フィンガープリントが表示されます。

このページを使用して、デバイスが登録されていることを確認したり、デバイス上の証明書をAikidoが発行したものと照合したりできます。

## 署名済みのエージェントアップデート

すべてのエージェントリリースは、Aikidoのビルドパイプラインで暗号署名されます。アップデートをインストールする前に、アップデーターがその署名を検証し、改ざんされたビルドや署名のないビルドを拒否します。アップデートを自動的にインストールするには、[Auto-update](https://help.aikido.dev/docs/docs-ja/aikido-device-protection/deploying-aikido-endpoint/connecting-and-managing-devices#auto-update)を有効にしてください。

* **macOS:** すべてのバイナリとインストーラーパッケージは、AikidoのApple Developer IDで署名され、Appleによって公証されています。
* **Windows:** バイナリはAuthenticodeで署名されています。

## macOSのネットワークフィルター

macOSでは、**System Settings** → **Network** → **Filters**に、デバイスごとに3つのAikidoエントリが表示されます。これは想定どおりの動作です。

| エントリ | 作成元 | 想定される状態 | 目的 |
| --- | --- | --- | --- |
| Content filter | MDMプロファイル | _Disabled_ | Aikidoが追加予定の将来の保護機能のためのものです。それまでは無効のままです。 |
| Transparent proxy | MDMプロファイル | _Disabled_ | Aikidoシステム拡張機能を事前承認します。構成は保持しません。 |
| Transparent proxy | Aikido拡張機能（実行時） | _Enabled_ | 実行時にのみ設定可能な自動有効化を含む、プロキシの完全な構成を保持します。 |

無効になっているMDMエントリは削除しないでください。実行時のTransparent proxyは、これらが提供する事前承認に依存しています。

## 制限事項

* **Device Protectionはウイルススキャナーではありません。** Secret Scanningを除き、ファイル、プロセス、システムの既存の脅威を検査しません。マルウェアがデバイスに到達する前にブロックするものであるため、すでにデバイス上にあるマルウェアは検出・削除されません。そのようなデバイスは侵害されているものとみなしてください。
* **Dockerコンテナ:** デフォルトでは保護されません。保護するには**Protect Containers**を有効にしてください。[Dockerコンテナでの Device Protection](https://help.aikido.dev/docs/docs-ja/aikido-device-protection/deploying-aikido-endpoint/device-protection-in-docker-containers)を参照してください。
* **WSL2:** Windows上のWSL2ディストリビューション内でのパッケージインストールは、デフォルトでは保護されません。**Protect WSL2**を有効にすると、Aikidoが実行中の各ディストリビューションにLinuxエージェントをインストールします。WSL2の保護はリクエストに応じて提供されます。[WSL2でのDevice Protection](https://help.aikido.dev/docs/docs-ja/aikido-device-protection/deploying-aikido-endpoint/device-protection-in-wsl2)を参照してください。
