セキュリティ監査に合格するAIエージェントの構築: 視覚的証拠とガバナンス
SOC 2 の監査人は、あなたのデプロイを止めた質問をしました。「AIエージェントが実際に何をしたのか、どうやって知ることができますか?」
あなたには API ログがあります。データベースの取引記録があります。トークン使用量の指標もあります。しかし、自律エージェントが8秒で5つのツールを連携させて顧客データを変更したとき、監査人が求めるのは1つだけです。画面上で起きたことの視覚的証拠。
テキストログだけでは十分ではありません。コンプライアンスのフレームワークはログを求めません。代わりに統制の証拠を求めます。そしてAIエージェントにとって、その証拠は視覚的なものです。
監査人が実際に求めるもの
SOC 2 の監査人が「AIエージェント」を見ると、次のように考えます。"もし故障してしまい、それを否定したことを証明できなかったらどうするのか?"
SOC 2 Type II:
- システムがアクセスした内容の実証可能な証拠
- 不正な操作を防いだ統制の証拠
- 監査トレイルを再現する能力(ログを読むだけではなく再現可能であること)
HIPAA(医療情報):
- エージェントがアクセスしたPHIの視覚的証拠
- エージェントがデータを外部へ流出させなかった証拠
- 規制当局にリアルタイムで示せる監査ログ
GDPR(データプライバシー):
- エージェントがユーザーの同意を尊重した証拠
- 処理されたデータの証拠
- 検査時にコンプライアンスを示す能力
SOC 3 / FedRAMP / NIST:
- 行動の監査証跡(API 呼び出しログだけでなく)
- エージェントの動作をリアルタイムで可視化
- 侵害時の鑑識的証拠
テキストログだけでは物足りません。API ログには GET /customer/12345 のような記録が残ります。視覚的な監査証跡は次のことを示します:エージェントが顧客ページを取得し、名前を抽出し、コンプライアンスチェックを実行し、結果を返した――すべてスクリーンショットとして記録されています。
なぜログだけでは不十分なのか
シナリオ 1: エージェントの幻覚
エージェントのログは "Processed payment of $10,000"。監査人は尋ねます。「実際に支払いを処理したのですか?エージェントが送信したときの支払いページはどうでしたか?」
視覚的証拠がなければ答えることはできません。
シナリオ 2: 静かな失敗
API ログには "HTTP 200 OK" と表示されます。ところが、表示ページにはエラーが出ており、エージェントはそれを見落としました。取引は実際には完了していません。
ログは成功を示し、ページは失敗を示します。監査人はどちらが真実なのかを問います。
シナリオ 3: 横方向移動
エージェントのログは通常の API 呼び出しを示します。しかし、それは本来の範囲外のシステムへアクセスしたのでしょうか?資格情報を外部へ持ち出したのでしょうか?視覚的な監査証跡は、エージェントが見たもの――そして見なかったもの――を正確に示します。
シナリオ 4: コンプライアンス証拠
18か月後に規制当局があなたを監査する際、今日エージェントが行ったことを再現できますか?ログは劣化します。スクリーンショットは永遠です。
実運用例: Claude Agent + PageBolt MCP
Claude Agent SDK と PageBolt を用いて監査に合格するエージェントを構築する方法は以下のとおりです:
エージェントコード:
const Anthropic = require("@anthropic-ai/sdk").Anthropic;
const client = new Anthropic();
// PageBolt MCP for visual audit trails
const tools = [
{
name: "take_screenshot",
description: "Take a screenshot of the current page for audit proof",
input_schema: {
type: "object",
properties: {
url: { type: "string", description: "URL to screenshot" }
},
required: ["url"
}
},
{
name: "fill_form",
description: "Fill a form field on the current page",
input_schema: {
type: "object",
properties: {
selector: { type: "string" },
value: { type: "string" }
},
required: ["selector", "value"]
}
}
];
async function auditableAgent(task) {
const messages = [];
const auditTrail = [];
// Initial request with audit context
messages.push({
role: "user",
content: `Task: ${task}
IMPORTANT: Before and after each action, take a screenshot for compliance audit. This is proof of your actions for SOC 2/HIPAA auditors.`
});
let response = await client.messages.create({
model: "claude-opus-4-5-20251101",
max_tokens: 4096,
tools: tools,
messages: messages
});
while (response.stop_reason === "tool_use") {
const toolUse = response.content.find(block => block.type === "tool_use");
この機能の概要:
- エージェントは各操作の前後にスクリーンショットを撮ります
- スクリーンショットは PageBolt に保存されます(改ざん防止クラウド)
- 監査証跡にはタイムスタンプ、URL、視覚的証拠が含まれます
- 監査人はエージェントのセッション全体を動画として再生できます
視覚的証拠が必要なケースとログ
| シナリオ | ログは十分ですか? | 視覚的証拠は必要ですか? |
|---|---|---|
| 公開 API 呼び出し(機微な UI はなし) | ✅ はい | ❌ いいえ |
| データベーストランザクション | ✅ はい | ❌ いいえ |
| エージェントが顧客データにアクセス | ❌ いいえ | ✅ はい |
| エージェントがコンプライアンスフォームを記入 | ❌ いいえ | ✅ はい |
| エージェントが規制対象システムにアクセス | ❌ いいえ | ✅ はい |
| エージェントが医療記録にアクセス | ❌ いいえ | ✅ 必須 |
| 不具合調査 | ❌ いいえ | ✅ はい |
目安: エージェントが UI や規制データに触れる場合は、視覚的証拠を取得してください。
コストと労力
セルフホスト型監査証跡:
- Puppeteer のスクリーンショット:エージェント1件あたり 300–500MB
- インフラストラクチャ:月額 3,500ドル以上
- 運用:月20時間以上(デバッグ、監視、スケーリング)
PageBolt MCP アプローチ:
- ホストされたスクリーンショット:月額 29ドル(10,000 リクエスト)
- セットアップ:30分(MCP の統合)
- 運用:月約0時間
次のステップ
- Claude Agent SDK の設定に PageBolt MCP を追加する
- エージェントのアクションをスクリーンショット呼び出しでラップする
- 監査証跡をコンプライアンスシステムに保存する
- 契約前に監査人へデモを行う
PageBoltを無料で試す — 月間100リクエスト、クレジットカード不要。監査可能なエージェントを1つ構築してください。規制当局との対話がどう変わるかをご覧ください。
