AI API ゲートウェイのコントロール プレーン監査証跡: インシデント中のキー、テナント、支出の変更を再構築
ランタイム ログではモデル呼び出しについて説明しますが、インシデントの対応は多くの場合、誰がキーを作成したか、支出制限を変更したか、ルーティング プロファイルを昇格したか、アクセスを取り消したかなど、管理者の履歴に依存します。デフォルトで生のプロンプトを保存せずに、ゲートウェイ、パートナー API、アイデンティティ、プロバイダー、使用状況イベントを結合する追加専用の監査証跡を構築します。
AI の支出が急増したり、鍵が漏洩したりした場合、ランタイム テレメトリだけでは十分ではありません。セキュリティ チームと FinOps チームは、コントロール プレーンの変更を再構築する必要があります。つまり、誰が API キーを作成または変更したか、どのテナントまたはプロジェクトが影響を受けたか、どのアップストリーム認証情報が関係していたのか、スパイクの前に支出制限が変更されたかどうか、封じ込め中に何が取り消されたのかなどです。
実際的なパターンは、AI API ゲートウェイ用の正規化された追加専用の監査イベント パイプラインです。ランタイム トレースは、モデル呼び出しが何をしたかを答えます。コントロール プレーンの監査ログは、誰がアクセス、予算、ルーティング、キー、サービス アカウント、テナント ステータス、モデル プロファイル、クレジット、プロバイダーの資格情報を変更したかを明らかにします。
事実、推奨事項、予測
事実: 一部の AI プロバイダーは、組織構成、プロジェクト、API キー、サービス アカウント、ワークスペース、メンバー、使用状況、コスト レポートをカバーする管理画面または監査画面を公開しています。適用範囲はプロバイダー、アカウントの種類、展開コンテキストによって異なります。 OpenTelemetry は、イベントと GenAI テレメトリ属性の一般的な意味規則も提供する一方で、キャプチャされた入力および出力コンテンツには機密データが含まれる可能性があることを警告します。
推奨事項: ゲートウェイを、仮想キー、テナント、リセラー顧客、ウォレット、支出制限、モデル プロファイル、パートナー API 自動化、アップストリーム資格情報プール、緊急検疫アクションなどのゲートウェイ固有の概念に対する正規の監査レイヤーとして扱います。可能な場合はプロバイダー管理イベントを関連付けますが、すべてのアップストリーム コンソール アクションが監視可能であるかのように振る舞うのではなく、ギャップを明示的にマークします。
予測: AI コントロール プレーンの監査は、特にチームがモデル アクセスの再販、顧客プロビジョニングの自動化、または高リスクのサービス アカウントの管理を行う場合、エンタープライズ AI ゲートウェイの標準要件になるでしょう。プロバイダ監査 API は改善されますが、プロバイダのリソース概念は異なるままであるため、ゲートウェイには依然として独自の正規化されたイベント モデルが必要です。
最初に調査の質問を定義します
監査証跡は、インシデント中に応答者が実行するクエリから逆算して設計する必要があります。短い質問リストから始めます:
- 異常が発生する前に作成、更新、再有効化、または取り消されたキーはどれですか?
- 各キーが影響したテナント、顧客、プロジェクト、ワークスペース、ウォレット、コスト センターはどれですか?
- 人間の管理者、サービス アカウント、パートナー API クライアント、SCIM プロセス、サポート オペレーター、またはスケジュールされた自動化のうち、どの主体が変更を加えましたか?
- どの認証方法が使用されましたか: SSO セッション、管理者 API トークン、サービス アカウント、ブレークグラス アカウント、または Webhook リプレイ?
- 使用量が増加する前に、支出制限、モデル アクセス、ルーティング プロファイル、レート制限、またはクレジット残高が変更されましたか?
- 結果のトラフィックを処理したアップストリーム プロバイダーの認証情報、プロジェクト、サービス アカウント、またはワークスペースはどれですか?
- どのような封じ込め措置が行われ、それらは完了しましたか?
ゲートウェイにすでに API キー管理、請求、チーム制御、プロバイダー ルーティングがある場合、監査証跡は別の分離されたログ ストリームを作成するのではなく、これらのシステムに参加する必要があります。
正規化された監査イベント スキーマを使用する
任意の JSON BLOB を保存しないでください。後でアナリストが解釈できるようにしてください。すべてのコントロール プレーン イベントに安定したスキーマを使用し、制御された名前空間でソース固有の拡張機能を許可します。
コアフィールド
{
"event_id": "evt_01J...",
"occurred_at": "2026-09-09T13:51:22.481Z",
"ingested_at": "2026-09-09T13:51:23.040Z",
"source_system": "gateway_admin_api",
"action": "key.issued",
"result": "success",
"risk_level": "high",
"actor_type": "service_account",
"actor_id": "sa_partner_provisioner_42",
"actor_org_id": "org_acme_reseller",
"auth_method": "partner_api_key",
"resource_type": "virtual_api_key",
"resource_id": "vk_123",
"tenant_id": "tenant_789",
"customer_id": "cust_456",
"project_id": "proj_support_bot",
"workspace_id": null,
"key_id_hash": "sha256:...",
"upstream_provider": "provider_a",
"upstream_credential_id_hash": "sha256:...",
"request_correlation_id": "req_abc",
"idempotency_key_hash": "sha256:...",
"ip_address": "203.0.113.10",
"user_agent_hash": "sha256:...",
"policy_before_hash": null,
"policy_after_hash": "sha256:..."
}スキーマは、人間が読める調査と機械による結合の両方をサポートする必要があります。最も重要なフィールドは、アクション、アクター、リソース、テナント、キーのフィンガープリント、アップストリームの認証情報の系統、相関 ID、ポリシー スナップショットのハッシュです。
生の値ではなくハッシュを使用する理由は何ですか?
監査証跡にはシークレットではなく、安定した結合ポイントが必要です。仮想キーとアップストリーム資格情報の決定論的ハッシュまたはフィンガープリントを保存します。ポリシー スナップショットのハッシュを保存します。編集されたスナップショットは、承認された監査閲覧者のみが利用できます。これにより、調査者は、エクスポートされたすべてのログで生の認証情報や機密の内部構成を公開することなく、支出ポリシー、ルーティング プロファイル、またはキー スコープが変更されたことを証明できます。
ランタイム テレメトリをコントロール プレーン監査ログから分離する
AI ゲートウェイは、多くの場合、リクエスト ID、モデル、プロバイダー、トークン数、レイテンシ、コスト見積もり、最終コスト、キャッシュ動作、安全性シグナル、エラー ステータスなどのランタイム メトリクスを収集します。これらのレコードは AI API 使用状況分析には不可欠ですが、コントロール プレーンの監査イベントとは異なります。
実行時レコードは次のようになります:
{
"request_id": "req_model_001",
"tenant_id": "tenant_789",
"key_id_hash": "sha256:...",
"model_profile_id": "profile_support_premium",
"provider": "provider_a",
"started_at": "2026-09-09T13:56:10Z",
"estimated_cost_usd": "0.18",
"settled_cost_usd": "0.22",
"status": "success"
}
コントロール プレーンの監査イベントには次のようなものがあります:
{
"event_id": "evt_profile_002",
"action": "model_profile.changed",
"tenant_id": "tenant_789",
"resource_id": "profile_support_premium",
"actor_id": "sa_partner_provisioner_42",
"occurred_at": "2026-09-09T13:54:03Z",
"policy_before_hash": "sha256:old",
"policy_after_hash": "sha256:new",
"risk_level": "high"
}
両方のレコードに共有結合戦略が必要ですが、異なる保持、アクセス制御、ペイロード ルールが必要です。コントロール プレーンの監査ログはサンプリングしないでください。実行時トレースは可観測性コストのためにサンプリングされる可能性がありますが、使用状況と請求元帳は完全なままである必要があります。
ゲートウェイ発行の仮想キーを参加ポイントにします
マルチテナント ゲートウェイでは、仮想キーが最も便利な調査ハンドルです。ゲートウェイが発行したキーは、テナント、顧客、ユーザー、サービス アカウント、モデル プロファイル、支出制限、ルーティング ポリシー、レート制限、上流プロバイダーの資格情報、および請求ウォレットを指すことができます。
インシデント発生中、対応者は鍵の指紋から次のことにピボットできる必要があります。
- キーを所有するテナントと顧客;
- それを作成または最後に変更したアクター;
- 各時点で有効な範囲、モデル プロファイル、および支出制限;
- そのキーを使用して行われた呼び出しに使用される上流プロバイダの認証情報;
- そのキーによって生成された使用量とコストのレコード;
- 失効、ローテーション、隔離、および復元イベント。
これは、パートナー API 自動化 を通じて顧客スコープのキーを発行するプラットフォームにとって特に重要です。安定した仮想キーのフィンガープリントがなければ、プロビジョニング イベント、クレジットの変更、テナント構成、ランタイムの使用状況は別の話になります。
一流のパートナー API イベント
をキャプチャパートナー API は、管理コンソールで手動で実行されていたアクションを自動化するため、監査リスクを生み出します。また、商業上の紛争も引き起こします。再販業者は、誰がクレジットをチャージしたか、顧客キーがいつ発行されたか、またはテナントが予算を超過した理由を尋ねる可能性があります。
少なくとも、次のイベントを第一級の監査アクションとして記録します:
customer.createdcustomer.updatedkey.issuedkey.scope_changedkey.revokedcredit.topup.requestedcredit.topup.settledspend_limit.changedrate_limit.changedmodel_profile.changedtenant.quarantinedtenant.unquarantinedwebhook.replayedidempotency_key.reused
お金関連のイベントの場合は、正確な小数点以下の金額、通貨、以前の残高、新しい残高、外部支払い参照、および決済ステータスを保存します。冪等操作の場合は、冪等キー ハッシュと正規操作 ID を保存して、重複した再試行について後で説明できるようにします。
プロバイダー管理者ログに依存せずにログを関連付けます
プロバイダーのコントロール プレーンは均一ではありません。一部のプロバイダーは、組織の設定、プロジェクト、キー、ユーザー、サービス アカウント、ワークスペース、使用状況、コストに関する監査ログと管理 API を公開しています。その他には、コンソールのエクスポート、クラウド監査ログ、請求レポート、または手動調整が必要です。 API が存在する場合でも、リソース名と保持ポリシーは異なります。
したがって、ゲートウェイ監査アーキテクチャでは機能フラグを使用する必要があります:
{
"provider": "provider_a",
"capabilities": {
"admin_audit_api": true,
"project_key_inventory": true,
"service_account_inventory": true,
"workspace_cost_report": false,
"credential_last_used_at": true
}
}
プロバイダ イベントをインポートするときは、同じ監査テーブルに正規化しますが、ソース メタデータは保持します:
source_system: provider_admin_api、provider_console_export、cloud_audit_log、billing_reportsource_event_id: 元のプロバイダ イベント ID (使用可能な場合)source_resource_path: 元のプロジェクト、ワークスペース、キー、またはサービス アカウントのパスprovider_capability_gap: ゲートウェイが直接イベントを受信するのではなく、コンテキストを推測した場合に true
目標は、完璧な可視性を主張することではありません。目標は、インシデントレポートが観察された事実と推測された関係を区別できるように、対象範囲とギャップを明確にすることです。
追加専用のストレージと修正イベントを使用する
監査イベントは不変である必要があります。イベントが正しく解析されなかった場合は、元の行を編集するのではなく、修正イベントを書き込みます。これは、請求に関する紛争、再販業者の信用に関する紛争、キーの漏洩調査、および事件後のレビューにおいて重要です。
実際のストレージ設計では、次の 3 つの層を使用します。
- ホット クエリ ストア: は、テナント、アクター、アクション、キー ハッシュ、リクエスト相関 ID、および高速インシデント クエリ用の occurred_at によってインデックス付けされます。
- 不変アーカイブ: 保持制御と整合性チェックを備えた追加専用のオブジェクト ストレージまたは台帳スタイルのテーブル。
- エクスポート ストリーム: エンタープライズ セキュリティ ワークフロー用の SIEM、ウェアハウス、またはイベント バスのエクスポート。
エクスポートは便利ですが、SIEM を唯一の信頼できるストアにしないでください。汎用 SIEM は、仮想キー、テナント ウォレット、モデル プロファイル、リセラー顧客、アップストリーム資格情報プールなどのゲートウェイ固有の概念を理解できない場合があります。ゲートウェイ台帳の信頼性を維持し、正規化されたコピーをエクスポートします。
インシデント クエリ パックを構築する
インシデント対応はアドホック SQL で始めてはなりません。最も一般的なシナリオ向けに保存されたクエリを事前に構築します。
1.支出が急増する前に作成されたキー
SELECT occurred_at, actor_type, actor_id, tenant_id, customer_id,
resource_id, key_id_hash, auth_method, ip_address
FROM audit_events
WHERE action IN ('key.issued', 'key.reenabled', 'key.scope_changed')
AND tenant_id = :tenant_id
AND occurred_at BETWEEN :spike_start - INTERVAL '24 hours' AND :spike_start
ORDER BY occurred_at;2.異常な使用の前に支出制限を変更
SELECT occurred_at, actor_id, resource_id,
policy_before_hash, policy_after_hash, request_correlation_id
FROM audit_events
WHERE action = 'spend_limit.changed'
AND tenant_id = :tenant_id
AND occurred_at BETWEEN :window_start AND :window_end
ORDER BY occurred_at;
3.ウィンドウ
中にアップストリーム認証情報が操作されましたSELECT occurred_at, action, actor_id, upstream_provider,
upstream_credential_id_hash, source_system
FROM audit_events
WHERE upstream_credential_id_hash IS NOT NULL
AND occurred_at BETWEEN :window_start AND :window_end
ORDER BY occurred_at;
4.高価な路線へのモデル プロファイル プロモーション
SELECT occurred_at, actor_id, tenant_id, resource_id,
policy_before_hash, policy_after_hash
FROM audit_events
WHERE action = 'model_profile.changed'
AND risk_level IN ('medium', 'high', 'critical')
AND occurred_at BETWEEN :window_start AND :window_end;
5.封じ込めの検証
SELECT occurred_at, action, actor_id, tenant_id, resource_type,
resource_id, result
FROM audit_events
WHERE tenant_id = :tenant_id
AND action IN ('key.revoked', 'tenant.quarantined',
'upstream_credential.rotated', 'spend_limit.changed')
AND occurred_at >= :containment_start
ORDER BY occurred_at;
これらのクエリは、ロールベースのアクセス権を持つセキュリティ、プラットフォーム、FinOps チームが利用できる必要があります。すべての調査員が保険契約のスナップショットの詳細や支払い参照を確認する必要があるわけではありません。
調査スケジュールの例
これはデータの形状を示す架空のタイムラインであり、実際の事件ではありません:
- 13:48 —
spend_limit.changed: テナントの月間制限が以前のポリシー ハッシュから新しいポリシー ハッシュに引き上げられました。 - 13:51 —
key.issued: パートナー API サービス アカウントによって作成された新しい顧客スコープのキー。 - 13:54 —
model_profile.changed: より高価なモデル クラスを許可するためにテナント ルーティング プロファイルが変更されました。 - 13:56 — 新しいキーのフィンガープリントのランタイム使用量が増加し始めます。
- 14:05 — テナントの異常アラート ファイアを消費します。
- 14:09 —
key.revoked: 疑わしい仮想キーが取り消されました。 - 14:13 —
upstream_credential.rotated: プロバイダーの資格情報が封じ込めとしてローテーションされました。
このタイムラインは、管理上の意図、自動プロビジョニング、ルーティング ポリシー、ランタイム コスト、および封じ込めを結び付けるため便利です。デフォルトでは、生のプロンプトを保存する必要はありません。
プライバシーと保持のトレードオフ
監査の詳細が増えるとフォレンジックが向上しますが、プライバシーとコンプライアンスのリスクが増大する可能性があります。生のプロンプトや完全なリクエスト本文よりも、メタデータ、ハッシュ、編集されたポリシー スナップショット、相関 ID を優先します。テナントがより詳細なログを明示的に有効にする場合は、独自の監査イベント、保持期間、およびアクセス制御を備えた別個のポリシーを作成します。
推奨される保持層:
- コントロール プレーン監査イベント: コンプライアンスおよび紛争期間全体にわたってサンプリングされずに保持されます。
- 使用状況および請求元帳: 請求書、税金、チャージバック要件に関する完全な財務記録を保持します。
- ランタイム トレース: 感度と可観測性のコストに基づいてサンプリングするか、保持期間を短縮します。
- 生のプロンプトと出力: 監査用にデフォルトでオフ。法的および運用上正当な場合にのみ、明示的なテナント ポリシーを通じて有効にします。
テナント ID、キー フィンガープリント、リクエスト ID、ワークフロー ID、アクター ID などの高カーディナリティ フィールドは、一部の可観測性システムではコストがかかります。コントロール プレーンの監査イベントをサンプリングすることでこの問題を解決しないでください。代わりに、完全な監査イベントを台帳に入れ、選択したフィールドを高コストの可観測性ツールにエクスポートします。
すべての変更ではなく、リスクについての警告
あらゆる管理イベントのリアルタイム アラートによりノイズが発生します。リスクスコアリングを使用します。次の場合にただちに警告します:
- 支出制限が大幅に引き上げられます;
- キーは通常とは異なる攻撃者または通常とは異なるネットワークによって作成されます;
- テナントは隔離されていません;
- より高価なモデルや制限の少ないモデルを許可するためにモデル プロファイルが変更されます。
- 上流プロバイダの認証情報が作成、エクスポート、ローテーション、または無効化されます;
- パートナー API の冪等性キーは別のペイロードで再利用されます;
- Webhook リプレイにより、顧客のクレジットまたは鍵の状態が変更されます。
リスクの低いイベントは、毎日のレビューまたは SIEM の関連付けに移すことができます。重要なのは、下流での悪用、コストの高騰、または封じ込めの失敗を説明する可能性が最も高いコントロール プレーンの変更を明らかにすることです。
実装チェックリスト
- キー、テナント、ユーザー、サービス アカウント、使用量制限、クレジット、ルーティング プロファイル、プロバイダーの資格情報、隔離の正規アクション名を定義します。
- 発生と取り込みのために不変のイベント ID とタイムスタンプを保存します。
- アクター タイプ、アクター ID、認証方法、ソース システム、リクエスト相関 ID を記録します。
- 仮想キー、アップストリーム認証情報、べき等キー、ユーザー エージェント、および機密ポリシー コンテンツには安定したハッシュを使用します。
- テナント ID、キー フィンガープリント、モデル プロファイル ID、およびリクエスト相関 ID を通じて、監査イベントをランタイム使用状況に結合します。
- 可能であれば、機能フラグとギャップ注釈を使用してプロバイダー管理イベントをインポートします。
- コントロール プレーンの監査イベントをサンプリングしないようにします。
- その場で更新する編集ではなく、修正イベントを使用します。
- SIEM またはウェアハウスにエクスポートしますが、ゲートウェイ監査台帳はゲートウェイ固有のリソースに対して正規に保持します。
- キーの作成、支出制限の変更、モデル プロファイルの変更、パートナー API のクレジット イベント、アップストリームの認証情報の変更、および封じ込め検証のためのインシデント クエリを事前に構築します。
実用的な結論
AI API インシデントの場合、多くの場合、重要な質問は「どのようなプロンプトが送信されたか?」ではありません。それは「こうなる前に何が変わったのか?」です。ゲートウェイ監査証跡は、新しいキー、支出制限の変更、パートナー API の自動化、ルーティング プロファイルの更新、プロバイダーの資格情報の変更、封じ込めアクションを 1 つのタイムラインで迅速に解決する必要があります。
正規化されたスキーマから開始し、仮想キーのフィンガープリントをメインの結合ポイントにし、イベントを追加専用にし、ランタイム テレメトリをコントロール プレーンの履歴から分離し、不均一なプロバイダー監査カバレッジを設計します。これにより、監査システムをプロンプト倉庫に変えることなく、セキュリティ、プラットフォーム、FinOps チームに防御可能な記録を提供できます。