> For the complete documentation index, see [llms.txt](https://help.aikido.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.aikido.dev/docs/docs-ja/miscellaneous-info/aikido-broker-for-internal-applications.md).

# 内部アプリケーション向け Aikido Broker

内部ネットワーク上に存在し、インターネットから到達できないアプリケーションをスキャンおよび監視するために Aikido Broker を使用します。

ブローカーはあなたのインフラ内で動作し、Aikido のリクエストを許可した内部 URL に転送します。

<figure><img src="/files/d56e51e5232190f20cdc280780aeb2ff14decde8" alt=""><figcaption></figcaption></figure>

## ブローカーを使用するタイミング

会社ネットワーク内にのみ存在するアプリケーションやサービスに対するあらゆる Aikido スキャンでブローカーを使用してください。たとえば次のものです。

* オンプレ GitLab やその他のローカルコードプラットフォームでのコードスキャン
* プライベートまたはオンプレのコンテナレジストリでのコンテナスキャン
* 内部アプリケーションに対する AI ペンテスト
* 内部ドメインやサービスに対するフロントエンドおよび API テストのスキャン

## 要件

Aikido Broker を実行するには、次が必要です。

* [Docker (20.10+)](https://docs.docker.com/engine/) および [Docker Compose (1.29+)](https://docs.docker.com/compose/) がインストールされていること
  * オプションで Kubernetes 1.19+
* Aikido にスキャンさせたいアプリケーションへのネットワークアクセス
* への送信 HTTPS アクセス `*.aikidobroker.com`
* 小さなコンテナを実行するのに十分な CPU (1 コア) とメモリ (1 GB)

## インストール

{% stepper %}
{% step %}
**ブローカーのクライアントトークンを生成して設定する**

次へ移動 [Broker Clients ページ](https://app.aikido.dev/settings/integrations/broker/clients) に移動して新しい broker client secret を作成します。Client Secret は次の手順のために保存してください。

{% hint style="info" %}
このページにアクセスできない場合は、Aikido ダッシュボードのサポートに連絡してください
{% endhint %}
{% endstep %}

{% step %}
**リソース（内部 URL）を追加**

Aikido がブローカー経由でアクセスできる内部 URL を定義します。

これらは Aikido にスキャンさせたいアプリケーションと API です。たとえば次のようなものです。

* <https://api.internal.corp.local>
* <http://service-a.internal:8080>
* <https://10.0.5.20>

<figure><img src="/files/0b4417933e6d2f63a6566df3fc00b1d255a7289a" alt="" width="563"><figcaption></figcaption></figure>

Aikido UI では、一覧から既存のブローカーを選択するか、新しいブローカーを作成することで、これらのリソースを管理できます。

リソースを保存すると、各リソースに対して固有の Broker URL が生成されます。Aikido 内では、元の URL の代わりにこの Broker URL を使用してください。

<figure><img src="/files/be18e78e3ef04178d91f9a0c26bcbef15d11e4ab" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**ブローカーを起動する**

Aikido にアクセスさせたい内部アプリケーションにアクセスできるマシンでブローカーサービスを起動します。必ず次の値を置き換えてください。 `CLIENT_SECRET` clients ページで生成したものにしてください。

{% tabs %}
{% tab title="Docker" %}

```shellscript
docker run -d \\
  --name aikido-broker \\
  --restart=on-failure:3 \\
  --network host \\
  -e CLIENT_SECRET="AIK_BROKER_XXX_YYY_ZZZZ" \\
  -e ALLOWED_INTERNAL_SUBNETS="192.168.0.0/16,10.0.0.0/8,172.16.0.0/12,127.0.0.0/8" \\
  aikidosecurity/broker-client:latest
```

ブローカーが期待どおりに実行されているかは次で確認できます。 `docker logs aikido-broker`

{% hint style="warning" %}
Windows と Mac OS では次を使用します。 `host.docker.internal` の代わりに `localhost` または `127.0.0.1` ローカルサービスに接続します。
{% endhint %}
{% endtab %}

{% tab title="Kubernetes" %}
Aikido は次を提供します。 [ブローカーをデプロイするための Helm chart](https://github.com/AikidoSec/helm-charts/tree/main/broker-client) Kubernetes 環境内に。

```shellscript
helm repo add aikido https://aikidosec.github.io/helm-charts
helm repo update
helm install broker-client aikido/broker-client \\
  --set config.clientSecret="AIK_BROKER_XXX_YYY_ZZZZ" \\
  --namespace aikido \\
  --create-namespace
```

設定する [追加パラメータを](https://github.com/AikidoSec/helm-charts/blob/main/broker-client/values.yaml) 次を使用して `values.yaml` ファイルを使い、コマンドを次で実行します。 `helm install broker-client aikido/broker-client -f values.yaml`

次でブローカーが実行されているか確認できます。 `kubectl logs -n aikido -l app.kubernetes.io/name=broker-client`
{% endtab %}
{% endtabs %}
{% endstep %}

{% step %}
**ブローカーが安定するまで待つ**

Aikido への接続と登録が完了するまで約 30 秒待ちます。

起動して接続されると、Aikido は設定した内部リソースへの到達を開始できます。
{% endstep %}
{% endstepper %}

## 設定

ブローカーが内部サービスにどのように到達し、ホスト名をどのように解決するかを制御できます。

#### ALLOWED\_INTERNAL\_SUBNETS

ブローカーが呼び出しを許可される CIDR 範囲の一覧です。

これを使って次を行います。

* ブローカーを特定の内部ネットワークに限定する
* 無関係なインフラへの誤ったアクセスを防ぐ

例:

```
ALLOWED_INTERNAL_SUBNETS=10.0.0.0/8,192.168.1.0/24
```

#### DNS\_SERVERS

ブローカーが内部ホスト名を解決するために使用する、任意の DNS サーバー一覧です。

次の場合に使用します。

* 内部 DNS ゾーンがある場合（たとえば \*.corp.local）
* 内部サービスが公開 DNS では解決できない場合

例:

```
DNS_SERVERS=10.0.0.10,10.0.0.11
```

#### カスタム CA（内部 TLS）用の NODE\_EXTRA\_CA\_CERTS

内部サービスがプライベート CA で署名された証明書を使用している場合、その CA を指定して、ブローカーが TLS を正しく検証できるようにします。

代表的なユースケース:

* 自己署名証明書を使用する内部サービス
* サービス間暗号化のための内部 PKI

設定方法はデプロイ形態によって異なりますが、基本的には次を行います。

* カスタム CA ファイルをブローカーコンテナにマウントする
* 提供されている環境変数または設定オプションを使用して、ブローカーにその CA ファイルを指定する

カスタム証明書を追加する場合、ブローカーはコンテナ内でそれらを読み取れる必要があります。追加の `-v` フラグを付けて証明書フォルダをコンテナにマウントし、 `NODE_EXTRA_CA_CERTS` 変数でブローカーに証明書ファイルを指定します。短い例を次に示します。

```
docker run -d \\
  --name aikido-broker \\
  --restart=on-failure:3 \\
  --network host \\
  -v /path/to/corporate-ca.crt:/certs/corporate-ca.crt:ro \\
  -e CLIENT_SECRET="{secret}" \\
  -e ALLOWED_INTERNAL_SUBNETS="192.168.0.0/16,10.0.0.0/8,172.16.0.0/12,127.0.0.0/8" \\
  -e NODE_EXTRA_CA_CERTS=/certs/corporate-ca.crt \\
  aikidosecurity/broker-client:latest
```

#### MTLS\_PEM\_PATH と MTLS\_CA\_PATH

内部サービスが mTLS 証明書を使用している場合、これら 2 つの設定を使用できます。mTLS 証明書が自己署名でない場合、CA パスは不要です。

カスタム証明書を追加する場合、ブローカーはコンテナ内でそれらを読み取れる必要があります。追加の `-v` フラグを付けて証明書フォルダをコンテナにマウントし、 `MTLS_PEM_PATH` および `MTLS_CA_PATH` 変数です。短い例を次に示します。

```
docker run -d \\
  --name aikido-broker \\
  --restart=on-failure:3 \\
  --network host \\
  -v /path/to/corporate-mTLS.pem:/certs/corporate-mTLS.pem:ro \\
  -v /path/to/corporate-mTLS-ca.crt:/certs/corporate-mTLS-ca.crt:ro \\
  -e CLIENT_SECRET="{secret}" \\
  -e ALLOWED_INTERNAL_SUBNETS="192.168.0.0/16,10.0.0.0/8,172.16.0.0/12,127.0.0.0/8" \\
  -e MTLS_PEM_PATH=/certs/corporate-mTLS.pem \\
  -e MTLS_CA_PATH=/certs/corporate-mTLS-ca.crt \\
  aikidosecurity/broker-client:latest
```

#### プロキシ

内部ネットワークで特定のホストやインターネットへ到達するためにプロキシが必要な場合、そのプロキシを使うようブローカーを設定します。

次のような場合に便利です。

* ネットワーク内の送信トラフィックは HTTP または HTTPS プロキシを通さなければならない
* 内部セグメントには中央プロキシ経由でしか到達できない

ブローカーのプロキシ設定または環境変数を通じてプロキシ URL を設定します。 `HTTP_PROXY, HTTPS_PROXY, ALL_PROXY`

また、 `NO_PROXY` 環境変数を設定することで、特定のホストへのリクエストをプロキシ経由にしないようクライアントを構成することもできます（`-e NO_PROXY=noproxy.dev,my-domain.internal`）。値は、プロキシをバイパスするホストをカンマ区切りで並べたリストにする必要があります。

#### NODE\_TLS\_REJECT\_UNAUTHORIZED

自己署名の TLS 証明書が原因でブローカーに問題が発生し続ける場合は、'NODE\_TLS\_REJECT\_UNAUTHORIZED' 環境変数に値 0 を渡して、TLS 検証を無効にするようブローカーに指示できます。

```
docker run -d \\
  --name aikido-broker \\
  --restart=on-failure:3 \\
  --log-opt max-size=20m --log-opt max-file=5 \\
  --network host \\
  -e CLIENT_SECRET="{secret}" \\
  -e ALLOWED_INTERNAL_SUBNETS="192.168.0.0/16,10.0.0.0/8,172.16.0.0/12,127.0.0.0/8" \\
  -e NODE_TLS_REJECT_UNAUTHORIZED=0 \\
  aikidosecurity/broker-client:latest
```

#### FORCE\_WEBSOCKET と FORCE\_POLLING

ブローカーはデフォルトで wss トラフィックを使用し、失敗した場合はロングポーリングにフォールバックします。ネットワーク要件に応じて、これらの環境変数を使ってブローカーをどちらか一方に固定できます。

```
-e FORCE_WEBSOCKET=1
```

```
-e FORCE_POLLING=1
```

## Aikido で Broker リソースを使う方法

ブローカーをインストールして内部 URL をリソースとして追加すると、ブローカーは各リソースに対して固有の Aikido URL を生成します。これらの URL は、Aikido がブローカー経由で内部サービスに到達するための安全な入口として機能します。

<figure><img src="/files/261694fce758fcc24c8f1fb61fc3e810d8ba1f59" alt=""><figcaption></figcaption></figure>

**すべての Aikido スキャンでこれらの Aikido Broker URL を使用してください。**

これは重要です。なぜなら:

* Aikido は内部ネットワークに直接到達できない
* ブローカーが Aikido URL を内部サービスにマッピングする
* 内部 URL を直接使用しても機能しない

#### 例

Domains および API スキャン（フロントエンドスキャン）を設定する際は、内部アドレスの代わりに Broker URL を使用してください。

たとえば次のようになります。

* 使用しない <http://my-internal-app.test:8000>
* 次のような生成されたブローカー URL を使用します。 <https://4948_c562ddc641.aikidobroker.com>

<figure><img src="/files/2accb81c69d008d901d00e46bfd991b827cb8129" alt=""><figcaption></figcaption></figure>

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

### トラブルシューティングコマンドを実行する

まずこのコマンドを実行してください。ブローカー設定に対して DNS、接続性、その他の一般的な失敗箇所を素早くチェックし、通常は根本原因をすぐに特定できます。

{% tabs %}
{% tab title="Docker" %}

```bash
docker exec -it aikido-broker node /app/diagnostics.cjs
```

{% endtab %}

{% tab title="Kubernetes" %}

```bash
kubectl exec <pod> -c broker-client -- node /app/diagnostics.cjs
```

{% endtab %}
{% endtabs %}

### ログを確認する

警告メッセージやエラーがないか Docker ログを確認してください。

{% tabs %}
{% tab title="Docker" %}

```bash
docker logs aikido-broker
```

{% endtab %}

{% tab title="Kubernetes" %}

```
kubectl logs -n aikido -l app.kubernetes.io/name=broker-client
```

{% endtab %}
{% endtabs %}

### エラー: 別のクライアントのリソースにアクセスできません

キャッシュされた client id がもはや `CLIENT_SECRET` organization と一致しません。 `config/client_id` ファイルを削除して、もう一度お試しください。


---

# 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, and the optional `goal` query parameter:

```
GET https://help.aikido.dev/docs/docs-ja/miscellaneous-info/aikido-broker-for-internal-applications.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
