Kubernetes で自律 AI エージェントを安全に運用する — 受託の信頼境界・シークレット・可観測性設計 2026 | GH Media
URLがコピーされました

Kubernetes で自律 AI エージェントを安全に運用する — 受託の信頼境界・シークレット・可観測性設計 2026

URLがコピーされました
Kubernetes で自律 AI エージェントを安全に運用する — 受託の信頼境界・シークレット・可観測性設計 2026

InfoQ が “Securing Autonomous AI Agents on Kubernetes: Trust Boundaries, Secrets, and Observability” を公開 しました。Kubernetes 上で動く自律 AI エージェントを 信頼境界・シークレット・可観測性 の 3 軸で守るためのアーキテクチャ指針が示されています。

受託開発の現場では、顧客の本番 K8s クラスタに 「夜間バッチで自律的にコードを修正・デプロイする AI エージェント」 を展開するケースが急増しています。これは従来の “ステートレス Web アプリ” とは異なるリスクプロファイルを持ち、従来の K8s 運用の延長線では守れない 領域です。本記事では、受託で顧客 K8s に自律 AI エージェントを展開する際の標準設計を整理します。

なぜ “従来の K8s 運用” では足りないのか

通常の Web アプリと自律 AI エージェントの本質的な違いを整理します。

観点通常の Web アプリ自律 AI エージェント
動作の決定性高(同じ入力 → 同じ出力)低(同じ入力でも挙動が変わる)
外部呼び出し範囲設計時に固定実行時に動的決定
必要権限機能から逆算可能実行してみないとわからない
失敗時の挙動エラーを返して終了リトライ・別経路探索・自己修正
監査の容易さログで追跡可能なぜその判断をしたか不明瞭

特に 「実行時に動的に外部呼び出し範囲が決まる」 性質は、K8s の NetworkPolicy で「許可された出口だけを開ける」設計と相性が悪く、過剰に開けるか、過剰に閉じてエージェントが詰まるか の二択になりがちです。

信頼境界の設計 — 3 層モデル

InfoQ 記事と弊社の実装経験を統合した 3 層信頼境界モデル です。

┌─────────────────────────────────────────────────┐
│  Layer 3: Outer Boundary(顧客環境境界)            │
│  - VPC / Cluster Egress Gateway                  │
│  - NetworkPolicy で外部 LLM API のみ許可           │
└─────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────┐
│  Layer 2: Tenant Boundary(テナント境界)           │
│  - Namespace ごとの ResourceQuota / LimitRange   │
│  - PodSecurityAdmission(restricted)            │
│  - サービスアカウント・RBAC の最小権限化              │
└─────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────┐
│  Layer 1: Agent Boundary(エージェント境界)         │
│  - gVisor / Kata Containers(カーネル隔離)       │
│  - read-only root filesystem                    │
│  - capabilities: drop ALL                       │
│  - 実行ツールは sidecar 経由で呼ぶ                  │
└─────────────────────────────────────────────────┘

Layer 1(Agent Boundary) が最も重要です。自律 AI エージェントは「外部から細工された入力で意図しない操作を行う」可能性があるため、エージェント Pod 自身を gVisor 等で隔離 し、ツール実行は sidecar コンテナ経由 に分離します。エージェント Pod が破損しても、ホスト OS や他テナントへの影響を最小化できます。

これは HashiCorp Vault 2.0 と Identity Federation で扱った “エージェントの最小権限化” の思想と一体で、Vault の短寿命 secret 配布を Layer 1 内のみで完結 させるのが受託標準です。

シークレット配布 — “落ちている secret” を作らない

受託環境で最もやらかしやすいのが、エージェントに secret を渡す方法です。

Anti-Pattern 1: 環境変数に静的 API キー

env:
  - name: OPENAI_API_KEY
    value: "sk-..." # ← 絶対やらない

エージェント Pod が侵害された瞬間、API キーが抜かれて 顧客アカウント全体が乗っ取り される構造です。

Anti-Pattern 2: ConfigMap に secret

kind: ConfigMap   # ← Secret じゃない
data:
  api-key: "sk-..."

ConfigMap は監査ログから漏れやすく、バックアップ経由で secret が長期保存 されてしまうため避けます。

[Agent Pod 起動時]

[Vault / Workload Identity 経由で OIDC トークン取得]

[OIDC トークンを LLM プロバイダの "STS 風" エンドポイントに提示]

[15 分有効の API キーを発行]

[15 分ごとに自動ローテーション、ファイルにも残さない]

このパターンでは エージェント Pod 内に静的 secret が存在しない ため、Pod 侵害から secret 流出への直接の攻撃チェーンが切れます。

secret 種別配布方式寿命
LLM API キーOIDC + STS 風エンドポイント15 分
DB 接続情報Vault dynamic secrets1 時間
クラウド IAMWorkload Identityリクエスト毎
顧客 API キーVault + Transit用途ごと

ツール実行の sandboxing

自律 AI エージェントが呼び出すツール(コード実行、シェル、ファイル操作)は、エージェント本体とは別 Pod / 別コンテナ で動かします。

[Agent Pod]
  ├ agent コンテナ(LLM 推論・判断)
  ├ tool-executor サイドカー(ツール実行ゲートウェイ)
  └ observability サイドカー(ログ・トレース送出)

[Tool Pod(ジョブ単位で起動)]
  ├ shell-runner Pod(gVisor)
  ├ python-runner Pod(gVisor)
  └ db-query-runner Pod(最小権限 SA)

Tool Pod はジョブ単位で使い捨て にし、ファイルシステム・ネットワークを完全に切り離します。これにより、エージェントが「悪意ある shell コマンド」を生成しても、被害を Tool Pod 内に閉じ込められます。

これは AI エージェント本番DB削除ガードレール で扱った “破壊的操作の隔離” と同方向で、AI 本体に直接 DB 接続権限を持たせない設計が決め手です。

可観測性 — “なぜそうしたのか” を残す

自律 AI エージェントの可観測性は、通常のメトリクス・ログ・トレースに 「意思決定ログ」 を加えた 4 軸で構成します。

内容保管先
メトリクスリクエスト数、トークン消費、ツール呼び出し数Prometheus
ログ通常のアプリログLoki / CloudWatch
トレースLLM 呼び出し → ツール呼び出しの連鎖Tempo / Jaeger
意思決定ログプロンプト全文・出力全文・選択した経路長期保管 S3 + 暗号化

意思決定ログ は、インシデント発生時に 「なぜ AI がこの操作を選んだのか」 を再現するために必須です。プロンプトと出力を すべて長期保管 することで、3 ヶ月後の事後調査にも耐えられます。

ただし、意思決定ログには顧客データが含まれるため、保管先の暗号化・アクセス制御・保持期間 の設計が必須です。

OPA / Kyverno による Pod 起動ポリシー

エージェントが新しい Pod を起動するケース(並列ジョブ、Tool Pod など)では、OPA Gatekeeper / Kyverno で起動許可ルール を強制します。

ポリシー内容
許可された image registry のみ顧客の Container Registry 以外を拒否
privileged: false の強制privileged Pod の起動を全面禁止
read-only root filesystem の強制rootfs 書き込み Pod を拒否
特定 Namespace 限定エージェントは指定 Namespace 内でのみ Pod 起動可
imagePullPolicy: Always 強制古いイメージのキャッシュ攻撃防止

「エージェントが OPA に弾かれた Pod を生成しようとした」 という監査ログ自体が、エージェントの異常行動の早期検知に使えます。

受託サービス化 — 価格設計

自律 AI エージェント運用基盤の構築・保守を受託サービスとして提供する際の価格設計です。

プラン構築費月額対象内容
Starter80〜150 万円15〜30 万円単一 K8s クラスタ、エージェント数 1〜2信頼境界 + secret 配布の基礎構築
Standard200〜400 万円40〜80 万円マルチクラスタ or 高可用性要件Starter + OPA + 意思決定ログ + 24/5 監視
Enterprise500〜1,000 万円100〜250 万円機微情報を扱う本番、コンプラ要件Standard + 監査資料 + 24/7 + ペネトレ年 2 回

構築費の内訳は 設計(30%)+ 実装(40%)+ 運用引継ぎ(20%)+ 監査対応(10%) が目安です。月額には 意思決定ログのストレージ費用 が大きな比重を占めるため、保持期間を顧客と握っておくことが重要です。

受託でハマりやすい 5 つの落とし穴

落とし穴 1: 顧客が “AI 用 Namespace” を区別できていない

既存のアプリ Namespace に AI エージェントを同居させると、事故時の切り分けが困難 になります。「AI 専用 Namespace + 専用ノードプール」 を契約条件に明記します。

落とし穴 2: GPU ノードのコスト爆発

エージェントの並列度を制御せずに走らせると、GPU ノードのオートスケールでコストが想定の 3〜5 倍 に化けます。Pod レベルでの並列上限 を OPA で強制します。

落とし穴 3: LLM プロバイダ障害時の挙動

OpenAI / Anthropic 障害時にエージェントがリトライループに陥り、ログが指数的に膨張 します。Circuit Breaker + 障害時の人間エスカレーション をデフォルトで組み込みます。

落とし穴 4: 意思決定ログの容量爆発

プロンプトを全保管すると 月数 TB に達する ケースがあります。「重要度別に保持期間を分ける」 ポリシーを設計時に決めます。

落とし穴 5: 顧客側の運用引継ぎ失敗

構築は完了したが、顧客側で運用できずに 「全部弊社が見続ける」 状態になりがちです。ランブック + Day-1 〜 Day-90 の運用訓練 を必ず納品物に含めます。これは Vercel Open Agents 受託保守 で扱った “顧客が運用できる形での納品” の思想と一体です。

まとめ — “AI を K8s に乗せる” の質を上げる

自律 AI エージェントを K8s に乗せる事例は急増していますが、信頼境界・secret 配布・可観測性 が標準化されないままの実装が多く、1 顧客の事故が業界の AI 導入機運を冷やす リスクが現実的になりつつあります。

弊社では、本記事の標準アーキテクチャに沿った K8s 自律 AI エージェント基盤の構築・保守 を Starter / Standard / Enterprise の 3 段階でパッケージ化しています。「自社 K8s に AI エージェントを安全に乗せたい」「既存のエージェント基盤を再設計したい」というご相談は お問い合わせフォーム からお気軽にどうぞ。

Sources

URLがコピーされました

グリームハブ株式会社は、変化の激しい時代において、アイデアを形にし、人がもっと自由に、もっと創造的に生きられる世界を目指しています。

記事を書いた人

鈴木 翔

鈴木 翔

技術の可能性に魅了され、学生時代からプログラミングとデジタルアートの分野に深い関心を持つ

関連記事