実行ルールと通信ガイド
プロジェクトの「実行ルール」の画面は SaaS 版と同じです。ただし、マーケットプレイス版で効く範囲は SaaS 版より狭くなります。 登録 Agent は購入者が作ったコンテナで、その中の操作を基盤が 1 つずつ止めることはしないためです。
| ワークフロー | サイクル | |
|---|---|---|
| 基本ルール(Open/Guarded/Strict) | 起動の前に、Agent が対応しているかを確かめる | 効かない |
| プロジェクトで追加する禁止操作 | 効かない(Agent には渡らない) | 効かない |
| 外への通信 | NetworkPolicy(既定は外へ出られない)と、管理画面の「禁止 URL」で絞る | NetworkPolicy(既定は外へ出られる)と、管理画面の「禁止 URL」で絞る |
「禁止操作に書けば止まる」という SaaS 版の説明(実行ルールガイド)は、マーケットプレイス版には当てはまりません。 Agent にさせたくない操作は、Agent の作りと、下の通信の制限で防いでください。
基本ルールの確かめ方(ワークフロー)
ワークフローの工程で登録 Agent を起動する前に、実行基盤は次を確かめます。
- テナント全体の実行ルールと、プロジェクトの実行ルールを合わせ、厳しいほうをこの実行の基本ルールにします
- その基本ルールが、Agent の認定の「使える実行ルール」に入っているかを確かめます
- 入っていなければ起動せず、その工程は「ルールにより実行不可」で終わります。案件は確認依頼で止まります(記録には「Agentがこのプロジェクトの実行ルールに未対応」と出ます。起動ガイド)
「使える実行ルール」は、管理者が Agent の認定で登録します。Agent の開発者が、その基本ルールで動くことを試験で確かめた値です(設定ガイド)。
プロジェクトの基本ルールを厳しくすると、その基本ルールに対応していない Agent は動かなくなります。 たとえば「使える実行ルール」が Open と Guarded だけの Agent は、Strict のプロジェクトでは起動しません。
適用した基本ルールは、実行の記録に残ります。
Agent が自分で「この操作はしない」と判断したときは、Agent が「ルールにより実行不可」を報告することもあります。どの操作をそう扱うかは、Agent の作りで決まります。
禁止操作は Agent の実行には効きませんが、起動の前の照合には使われます。 プロジェクトの禁止操作に、もう無い連携先を指すものが残っていると、実行ルールを読めずに起動できません。少しおいて照合し直し、それでも読めないと確認依頼になります。使わなくなった連携先を指す禁止操作は消してください。
外への通信を絞る
登録 Agent が外部と通信できる範囲は、2 つの層で決まります。どちらも、プロジェクトではなく環境全体の設定です。
| 層 | 設定する人と場所 | 絞れるもの |
|---|---|---|
| 禁止 URL | 管理者。管理画面の「禁止 URL」 | 止めたい宛先の URL |
| NetworkPolicy | 環境を構築・運用する人。agent-executor の Helm の値 | 宛先の IP アドレス・ポート |
ワークフローの Agent
既定では、外へ出られません。 ワークフローの Agent の Pod が通信できるのは、DNS・プラットフォームの実行時の API・通信の判定サービスだけです。
外部のサービス(GitLab、LLM の API、社内のシステムなど)を使う Agent を動かすには、環境を運用する人が、agent-executor の marketplaceDefaults.networkPolicy.workflowEgress.allowedEgress に、許可する宛先とポートを書きます。
marketplaceDefaults:
networkPolicy:
workflowEgress:
allowedEgress:
- to:
- ipBlock:
cidr: 203.0.113.10/32
ports:
- protocol: TCP
port: 443
- NetworkPolicy は IP アドレスでしか書けません。特定の URL を止めたいときは、管理画面の「禁止 URL」に登録します
mode: openにすると、クラウドのメタデータなどを除く、すべての宛先・ポートに出られるようになります。勧めません- 宛先が増えたら、この値に足して agent-executor を更新します。Helm の値の変え方はアップデートガイドを参照してください
外へ出られないまま外部のサービスを使う Agent を置くと、実行は通信のエラーで失敗します。 新しい Agent を置く前に、Agent の開発者に通信先を確かめてください。
サイクルの Agent
サイクルの Agent の Pod は、会話で使う Agent と同じ NetworkPolicy です。クラウドのメタデータ(169.254.0.0/16)などを除き、すべての宛先に出られます。 止めたい宛先の IP アドレスの範囲は、環境を運用する人が agent-executor の marketplaceDefaults.networkPolicy.additionalDeniedEgressCIDRs に足します。
禁止 URL
Agent の Pod には、通信の判定サービスを通る HTTP(S) のプロキシの設定が入ります。このプロキシの設定に従う通信は、管理画面の「禁止 URL」に登録した宛先にはつながりません。 設定の仕方は設定ガイドにあります。
ただし、「禁止 URL」だけでは確実には止まりません。 プロキシの設定を使わずに直接つなぐ通信は、判定サービスを通りません。また、クラスターの中のサービスなど、判定せずに通す宛先もあります。確実に止めたい宛先は、NetworkPolicy でも塞いでください(ワークフローは allowedEgress に書かない、サイクルは additionalDeniedEgressCIDRs に足す)。
管理画面の「通信ドメイン制限」は、ウィジェットからの通信を許可・遮断する設定です。Agent の外への通信を絞るものではありません。