> 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を使用します。

Brokerはインフラ内で動作し、Aikidoのリクエストを許可した内部URLへ転送します。Dockerコンテナとして、またはHelmチャートを使ってKubernetes上にデプロイできます。

<figure><img src="https://715870456-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyKbzcQGrx7UtrG0nPZZ7%2Fuploads%2Fgit-blob-c282290965e1bd32bbfac2b40c20300c89058e43%2Fbroker.png?alt=media" alt=""><figcaption></figcaption></figure>

## Brokerを使うタイミング

Aikido Brokerは、以下を含む、社内ネットワーク内にのみ存在するアプリケーションやサービスに対する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クライアントトークンを生成して設定する**

その後、Splunk Cloud と Splunk Enterprise の両方でトークンを作成します: [Broker Clientsページ](https://app.aikido.dev/settings/integrations/broker/clients) で新しいbroker client secretを作成します。Client Secretは次の手順のために保存してください。

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

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

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

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

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

<figure><img src="https://715870456-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyKbzcQGrx7UtrG0nPZZ7%2Fuploads%2Fgit-blob-e99f873b3d644c3408a3ffac079ea2f4813eb75b%2FScreenshot%202026-02-11%20at%2017.08.56.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

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

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

<figure><img src="https://715870456-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyKbzcQGrx7UtrG0nPZZ7%2Fuploads%2Fgit-blob-4e24af93ed89ab26bb469618e9e511eeda047b09%2FScreenshot%202026-02-11%20at%2017.09.05.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**Brokerを起動する**

Aikidoにアクセスさせたい内部アプリケーションにアクセスできるマシン上で、Brokerサービスを起動します。以下の `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
```

Brokerが期待どおりに動作しているかは、以下で確認できます。 `docker logs aikido-broker`

{% hint style="warning" %}
WindowsおよびMac OSでは、ローカルサービスに接続するために `host.docker.internal` を `localhost` または `127.0.0.1` の代わりに使用してください。
{% endhint %}
{% endtab %}

{% tab title="Kubernetes" %}
Aikidoは、 [BrokerをデプロイするためのHelmチャートを提供しています。](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`

Brokerが動作しているかは、以下で確認できます。 `kubectl logs -n aikido -l app.kubernetes.io/name=broker-client`
{% endtab %}
{% endtabs %}
{% endstep %}

{% step %}
**Brokerが安定するまで待つ**

Aikidoへの接続と登録が完了するまで、約30秒待ってください。

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

## 設定

Brokerが内部サービスに到達する方法や、ホスト名を解決する方法を制御できます。

#### ALLOWED\_INTERNAL\_SUBNETS

Brokerが呼び出しを許可されるCIDR範囲のリストです。

これは以下の目的で使用します。

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

例:

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

#### DNS\_SERVERS

Brokerが内部ホスト名を解決するために使用する、任意のDNSサーバーのリストです。

以下の場合に使用します。

* 内部DNSゾーンがある（例: \*.corp.local）
* 内部サービスが公開DNSでは解決できない

例:

```
DNS_SERVERS=10.0.0.10,10.0.0.11
```

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

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

一般的な使用例:

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

この設定方法はデプロイ方法によって異なりますが、全体としては次のようになります。

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

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

```
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パスは不要です。

カスタム証明書を追加する場合、Brokerがコンテナ内でそれらを読み取れる必要があります。追加の `-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
```

#### プロキシ

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

これは以下のような場合に便利です。

* ネットワーク内のアウトバウンド通信はHTTPまたはHTTPSプロキシを経由しなければならない
* 内部セグメントへは中央プロキシ経由でのみ到達できる

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

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

#### NODE\_TLS\_REJECT\_UNAUTHORIZED

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

```
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

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

```
-e FORCE_WEBSOCKET=1
```

```
-e FORCE_POLLING=1
```

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

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

<figure><img src="https://715870456-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyKbzcQGrx7UtrG0nPZZ7%2Fuploads%2Fgit-blob-582a7e7e123dc0a2c3d5c9084b5d02bf802269ac%2FScreenshot%202025-11-17%20at%2010.20.50.png?alt=media" alt=""><figcaption></figcaption></figure>

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

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

* Aikidoは内部ネットワークに直接到達できない
* BrokerはAikido URLを内部サービスにマッピングする
* 内部URLを直接使っても動作しない

#### 例

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

たとえば:

* 使用しないでください <http://my-internal-app.test:8000>
* 代わりに、次のような生成済みのBroker URLを使用してください。 <https://4948_c562ddc641.aikidobroker.com>

<figure><img src="https://715870456-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyKbzcQGrx7UtrG0nPZZ7%2Fuploads%2Fgit-blob-b4fd379ab6f83dd0f85f3bc0862715b9fb9a705f%2FScreenshot%202025-11-17%20at%2010.25.48.png?alt=media" alt=""><figcaption></figcaption></figure>

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

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

まずこのコマンドを実行してください。Broker設定に対して簡易ヘルスチェック（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` ファイルを削除して、再試行してください。

## Brokerをアンインストールする

まずスキャンからBroker URLを削除してください。Brokerがなくなると、まだBroker URLを指しているスキャンは失敗します。

その後、Brokerを停止して削除します。

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

```bash
docker stop aikido-broker
docker rm aikido-broker
docker rmi aikidosecurity/broker-client:latest
```

証明書や設定フォルダーをコンテナにマウントしていた場合、それらのファイルはホスト側に残ります。不要であれば手動で削除してください。
{% endtab %}

{% tab title="Kubernetes" %}

```bash
helm uninstall broker-client --namespace aikido
```

その名前空間がBroker専用に作成されたものであれば、それも削除できます。

```bash
kubectl delete namespace aikido
```

{% endtab %}
{% endtabs %}

最後に、 [Broker Clientsページ](https://app.aikido.dev/settings/integrations/broker/clients) に移動してクライアントを削除してください。これによりクライアントシークレットが失効し、そのリソースとBroker URLが削除されます。


---

# 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.
