SJ blog
security
S

信頼度ランク

S 公式ソース確認済み
A 成功実績多数・失敗例少数
B 賛否両論
C 動作未確認・セキュリティリスク高
Z 個人所感

CISA+五カ国連合が初の「AIエージェント安全運用ガイドライン」を公開——最小権限・ゼロトラスト・可逆性の原則を本番エージェントに適用する実践

Five Eyes六機関が初のAIエージェント安全ガイドラインを共同発行。権限・設計・行動・構造・サプライチェーンの5リスクを整理し、最小権限・ゼロトラスト・可逆性の原則を本番エージェントへ適用する実践を解説する。

一言結論

六機関が共同発行した初のAIエージェント安全ガイドラインは「新しいセキュリティ規律ではなく既存のゼロトラスト・最小権限・多層防御をエージェントに拡張せよ」という一貫したメッセージを持つ。権限・設計・行動・構造・サプライチェーンの5リスクカテゴリが整理され、プロンプトインジェクションや特権昇格への対策が開発者が今すぐ実装できるレベルで記述されている。

何が起きたか

2026年5月1日、以下の6機関が共同で「Careful Adoption of Agentic AI Services」(AIエージェントサービスの慎重な導入)を発行した。

発行機関
  - CISA(米国サイバーセキュリティ・インフラセキュリティ庁)
  - NSA(米国家安全保障局)
  - ASD ACSC(オーストラリア信号局・豪州サイバーセキュリティセンター)
  - CCCS(カナダ通信安全機関・サイバーセキュリティセンター)
  - NCSC-NZ(ニュージーランド国家サイバーセキュリティセンター)
  - NCSC-UK(英国国家サイバーセキュリティセンター)

Five Eyes同盟(米英加豪ニュージーランド)がAIエージェントに特化したセキュリティガイダンスを共同発行するのは今回が初めて。The Register・CyberScoopなどセキュリティメディアで広く報道されている。


ガイドラインの核心メッセージ

核心: AIエージェントは新しいセキュリティ規律を必要としない。
既存のサイバーセキュリティフレームワークと統治構造に組み込め。

適用すべき既存原則:
  - ゼロトラスト(Zero Trust)
  - 多層防御(Defense-in-Depth)
  - 最小権限アクセス(Least-Privilege Access)
  - 可逆性と被害封じ込め(Resilience and Reversibility)

方針: 効率性の向上よりレジリエンス・可逆性・リスク封じ込めを優先。
      低リスクなユースケースから段階的に展開せよ。

5つのリスクカテゴリ

1. 権限リスク(Privilege Risk)
   └─ エージェントへの過剰権限付与
   └─ 一つの侵害が連鎖的被害を引き起こす

2. 設計・設定リスク(Design/Configuration Risk)
   └─ エージェントの目的外動作を誘発する設定ミス
   └─ システムプロンプトの不適切な公開

3. 行動リスク(Behavioral Risk)
   └─ プロンプトインジェクション
   └─ 意図しない情報漏洩・データ持ち出し
   └─ 過度に積極的なアクション実行

4. 構造リスク(Structural Risk)
   └─ マルチエージェントシステムでの信頼の連鎖問題
   └─ エージェントAの誤り判断がエージェントBに伝播

5. サプライチェーンリスク(Supply-Chain Risk)
   └─ 悪意あるLLM・ツール・プラグインの混入
   └─ MCPサーバーやエージェントフレームワークへの攻撃

実装チェックリスト

1. 最小権限の設計

# ❌ 過剰権限エージェント(ガイドラインが警告するパターン)
agent_permissions_bad = {
    "filesystem": "read_write_all",
    "network": "unrestricted_outbound",
    "databases": "full_access",
    "email": "send_to_anyone",
    # → 侵害されると全システムが危険に
}

# ✅ 最小権限エージェント(ガイドライン準拠)
agent_permissions_good = {
    "filesystem": {
        "read": ["/data/reports/"],   # 特定ディレクトリのみ
        "write": ["/data/output/"],   # 書き込みは出力先のみ
    },
    "network": {
        "outbound_allowlist": [
            "api.factset.com",
            "api.bloomberg.com",
        ],
        # 許可リスト以外への接続は自動ブロック
    },
    "email": {
        "send": False,  # エージェントからの直接メール送信を禁止
    },
}

ガイドラインはさらに「各エージェントを個別のプリンシパルとして構築し、固有の暗号鍵または証明書を持つ独立したアイデンティティを与えよ」と明記している。

2. プロンプトインジェクション対策(行動リスク)

def sanitize_external_content(content: str) -> str:
    """
    外部から取得したコンテンツ(Webページ・ドキュメント等)を
    エージェントに渡す前にサニタイズする。
    """
    INJECTION_PATTERNS = [
        "ignore previous instructions",
        "you are now",
        "system:",
        "<|im_start|>",  # ChatML形式のインジェクション
    ]

    for pattern in INJECTION_PATTERNS:
        if pattern.lower() in content.lower():
            content = content.replace(pattern, f"[SANITIZED]")

    return content

def run_agent_with_external_data(task: str, external_docs: list):
    # 外部コンテンツは必ずサニタイズしてからエージェントに渡す
    sanitized_docs = [sanitize_external_content(doc) for doc in external_docs]

    return agent.run(
        task=task,
        context=sanitized_docs,
        # 外部コンテンツとシステムプロンプトを明確に分離
        content_type="external_untrusted",
    )

3. 人間の監督ポイントを設計する

推奨: 高リスクアクションの前に必ず人間承認を挟む

低リスク(自動実行可):
  - 情報の検索・読み取り
  - レポートの下書き生成
  - 計算・集計処理

中リスク(通知必須):
  - ファイルへの書き込み
  - 外部APIへのデータ送信(読み取り専用以外)

高リスク(人間承認必須):
  - 金融取引の実行
  - 本番データベースへの書き込み・削除
  - 外部への通知送信(メール・Slack)
  - 設定変更
# ガイドラインが推奨する段階的展開パターン
AGENT_DEPLOYMENT_STAGES = [
    {
        "stage": 1,
        "name": "観察モード",
        "description": "エージェントが提案のみ。実行は人間が行う",
        "autonomous_actions": [],
    },
    {
        "stage": 2,
        "name": "低リスク自律モード",
        "description": "読み取り・レポート生成のみ自律実行",
        "autonomous_actions": ["read", "report_generation"],
    },
    {
        "stage": 3,
        "name": "限定自律モード",
        "description": "承認済みの定型アクションのみ自律実行",
        "autonomous_actions": ["approved_api_calls", "scheduled_reports"],
    },
]

4. マルチエージェントの信頼モデル(構造リスク)

# エージェントAからの指示を無条件に信頼してはならない
# 権限は指示の中継によって昇格しない

HIGH_RISK_ACTIONS = {"delete_database", "send_email", "deploy_code", "transfer_funds"}

class SecureAgentRunner:
    def __init__(self, agent_id: str):
        self.agent_id = agent_id

    def execute_instruction(self, instruction: dict, source: str):
        # 高リスクアクションは人間以外からの指示を拒否
        if instruction["action"] in HIGH_RISK_ACTIONS:
            if source != "human":
                raise SecurityError(
                    f"High-risk action '{instruction['action']}' from "
                    f"non-human source '{source}' denied"
                )

        # 自身の権限範囲内かチェック(権限は昇格しない)
        if not self._has_permission(instruction["action"]):
            raise PermissionError(
                f"Agent {self.agent_id} lacks permission for {instruction['action']}"
            )

        return self._execute(instruction)

5. 可逆性の確保

可逆性の設計原則: 本番環境での操作前に「元に戻せるか?」を確認

✅ 可逆な操作:
  - データベースへの INSERT(DELETE で取り消し可能)
  - ファイルコピー(削除で取り消し可能)
  - APIへの書き込み(バックアップから復元可能)

❌ 不可逆な操作(特別注意):
  - メールの送信
  - バックアップなしのデータベース DELETE
  - 外部APIトリガー(副作用が伝播する可能性)
  - 公開リポジトリへのプッシュ

6. サプライチェーンリスクへの対応

# MCPサーバーのサプライチェーン検証チェックリスト

# 1. 使用するMCPサーバーのソースコードを確認する
git clone https://github.com/vendor/mcp-server
# → postinstallスクリプト・依存パッケージを精査

# 2. 依存パッケージをハッシュ付きで固定する
# package-lock.json / uv.lock のハッシュを検証

# 3. MCPサーバーをコンテナで隔離する
# 侵害されても他のシステムに波及しないよう設計

# 4. 更新は手動承認(CI自動マージは避ける)
# 信頼できるリポジトリからのみ更新を許可

CAISIガイドラインとの違いを整理する

本稿の記事(Five Eyes agentic AI guidance)と、最近公開されたNIST/CAISIのフロンティアモデル評価(別記事参照)は目的が異なる点に注意が必要だ。

NIST CAISI(別記事)   : モデル公開前の安全性評価(能力評価・レッドチーム)
CISA Five Eyes(本稿) : モデル/エージェントを本番展開後の運用セキュリティ

注意点・未確認事項

  • 法的拘束力: あくまで推奨事項であり、現時点では法的義務ではない。ただし規制産業(金融・医療・エネルギー等)では別途コンプライアンス要件が存在する可能性がある。
  • 「慎重な採用」の定義: ガイドラインは段階的展開を推奨しているが、具体的な評価期間や成熟度指標は各組織が独自に定義する必要がある。
  • ツール別の詳細評価: 本ガイドラインは特定のAIプラットフォームやエージェントフレームワークに言及していない。具体的なツールの安全評価は別途実施が必要。
  • 本稿の情報: CISA公式ガイドライン・The Register・CyberScoop・Cloud Security Allianceの公開情報をベースに構成。

参考リンク

注記: 本稿はCISA公式ガイドライン・The Register・CyberScoopなどの公開情報をベースに構成した。詳細な実装要件はCISA公式ドキュメントを参照すること。