🛡️ 技術調査 - Cloudflare CASB × Claude Enterprise 統合
目次

⚠️ 非公開(zenn 未公開)

🛡️ 技術調査 - Cloudflare CASB × Claude Enterprise 統合

■概要

統合の目的と位置づけ

Cloudflare は 2026-05-21、自社の API ベース CASB (Cloud Access Security Broker) に Anthropic Claude の統合を追加した。Cloudflare One ユーザーは、Claude Enterprise 組織内で起きている会話・添付ファイル・プロジェクト共有・生成物 (Artifact)・組織メンバー / ロール構成を、Anthropic が 2025-08 に GA した Compliance API 経由で監査できるようになった。

この統合は、AI 利用統制の論点が入口での遮断から「SaaS 内部に何が残っているか」の事後的な可視化へ広がったことを示す。従来の DLP プロキシや AI Gateway はプロンプト送信時点で危険なデータを止めるが、止めた後の Claude 内部の保存物・共有設定・権限変更は観測対象外だった。CASB の API ベース統合はこのギャップを埋め、AI SaaS を Microsoft 365 / Google Workspace / Salesforce と同じ統制スタック (CASB / SIEM / IGA / DSP) で扱う方向への重要な一歩となる。

主要事実

項目
発表日 2026-05-21 (Beta 表記なし、実質 GA)
Anthropic 側プラン要件 Claude Enterprise (フル機能) / Claude Console (Activity Feed のみ)
Claude Team / Pro / Max 対象外
Cloudflare 側プラン要件 Cloudflare One (Zero Trust) ユーザー (新規は最初の 2 連携無料)
認証方式 API key (x-api-key ヘッダ) — OAuth ではない
API ベース https://api.anthropic.com/v1/compliance/*
レート制限 600 req/min / parent organization (全 key・全 scope 共有)
Activity Feed 保持期間 6 年
データレジデンシー first-party の inference_geoglobal / us。workspace geo (at-rest) は us のみ。EU/JP は Bedrock/Vertex 経由
Findings 数 16 種 (API key hygiene 1 + Access security 6 + DLP 9)

構造的限界 (採用前に必ず認識する事項)

本統合には以下の構造的限界がある。これらは AI 統制設計において CASB を「補助観測コンポーネント」と位置づける根拠となる。

  • 検出ラグ: Claude 上での操作から CASB の finding 生成まで数分〜24 時間の遅延が発生する
  • リアルタイム遮断不可: API ベース (out-of-band) スキャンのため、操作の即時阻止はできない
  • Cowork / Claude Code CLI の死角: Compliance API の content エンドポイントは claude.ai の chat/project/artifact が対象で、Cowork のエージェントセッションや Claude Code CLI のローカル実行は coverage 外と報告されている (出典: General Analysis / MintMCP 解説。Cowork の role 有効化自体は Findings ルール「Claude Cowork enabled for role」で検出される)
  • Shadow Claude (個人 Pro / 直接 API 叩き) は不可視: 組織契約外の利用は構造的に検出できない

したがって本統合は AI Gateway + CASB のハイブリッド設計の一部品 として位置づけるのが正しい。


■特徴

API ベース統合 — エンドポイント・プロキシ不要

Cloudflare CASB は Compliance API を polling する out-of-band 型のスキャナである。エンドポイントエージェントもインライントラフィック検査も不要で、Anthropic 側で Compliance Access Key を発行して Cloudflare に渡すだけで連携が成立する。

"Cloudflare CASB now consumes this endpoint to surface actionable security findings without requiring inline traffic inspection or endpoint agents." (Cloudflare Blog, 2026-05-21)

導入の摩擦が低い一方、リアルタイム遮断には使えない。検出後に Gateway policy 化することで初めてインライン制御に繋がる。

二系統の API キーと最小権限スコープ

Anthropic は Compliance API 用に 2 種類の鍵を分けている。

鍵種別 プレフィックス 発行場所 スコープ
Compliance Access Key sk-ant-api01-... claude.ai > Organization settings > Data and privacy (primary owner のみ) 全エンドポイント
Admin API key sk-ant-admin01-... Claude Console > Settings > Admin keys (org admin) Activity Feed のみ

Compliance Access Key には 4 つの immutable スコープがある。

スコープ 権限内容
read:compliance_activities Activity Feed 読み取り
read:compliance_user_data chat / message / file / project / organization users / group members 読み取り
read:compliance_org_data 組織メタデータ (organizations / roles / groups) 読み取り。ユーザー一覧と group members の取得には read:compliance_user_data も別途必要
delete:compliance_user_data chat / file / project の永続削除

Cloudflare CASB は read 系 2-3 スコープのみで成立し、delete:compliance_user_data は要求しない。スコープが immutable なため、最小権限を誤ると鍵を再発行するしかない点に注意が必要である。

"A Compliance Access Key with read:compliance_user_data can read every chat, file, and project in every linked organization, including content the primary owner has not seen. Treat Compliance Access Keys like production database credentials." (Anthropic Docs)

検出される 16 種類の Findings

Cloudflare 側で検出されるルールは 3 カテゴリ 16 種類である。

API Key Hygiene (1 件)

Finding 名 重要度
Anthropic: Unused API key Medium

Access Security (6 件)

Finding 名 重要度 検出対象
Anthropic: High-privilege invite High 高権限ロールへの招待
Anthropic: Stale pending invite Low 未受諾の期限切れ招待
Anthropic: Claude Project visible across organization Low 組織全体に公開されたプロジェクト
Anthropic: Claude Cowork enabled for role High ロールへの Cowork 機能有効化
Anthropic: Claude Connector always allowed enabled for role High 外部 Connector の無条件許可
Anthropic: Claude for Chrome enabled for role High Chrome 拡張 (browser agent) の有効化

Data Loss Prevention (9 件、全件 High — DLP プロファイル設定が前提)

Finding 対象
Chat のダウンロード可能ファイル
Chat のプロンプト
Chat のレスポンス
Chat のアップロードファイル
Chat のプロバイダー生成ファイル
プロジェクトファイル
プロジェクトドキュメント
Artifacts
プロジェクト指示 (system prompt 相当)

DLP プロファイルは Cloudflare 側で定義した正規表現・MIP ラベル・PCI/PII 検出器を Anthropic 上の保存物に適用する形となる。

parent / linked org モデルによる取得範囲

Claude Enterprise は parent organization (identity 集約) の下に複数の linked organizations (claude.ai 系 / Claude Console 系) がぶら下がる構造を採っている。

  • ディレクトリ系 (linked org 横断): organizations, users, roles, groups
  • コンテンツ系 (claude.ai のみ): chats, chat messages, files, projects, project attachments, artifacts, project instructions

Claude Console (API Platform) 単独組織には chat 本文がそもそも存在しないため、Compliance API は Activity Feed までしか返さない。

Finding から Gateway Policy への昇格

Cloudflare が主張する差別化点は、CASB 検出を同じ Cloudflare スタック内の Gateway インライン制御に分単位で繋げられることである。

"A detected security finding in Claude, such as a user uploading files containing sensitive data, can become a Gateway policy in minutes, and you can use Gateway to block uploads to Claude for specific users, restrict access to the application entirely, or limit functionality until the issue is resolved." (Cloudflare Blog, 2026-05-21)

このループが API ベース CASB の検出ラグ問題を緩和する設計上の答えとなっている。ただし「分単位」の自動化の程度 (UI 1 クリックか手動コピーか) は公式 docs に明記がない。

Cloudflare One スタック内での位置関係

本統合は Cloudflare One (Zero Trust) の中の CASB モジュールとして機能する。関連コンポーネントとの役割分担は以下のとおりである。

制御点 担当レイヤー リアルタイム性 取り扱う情報
入口 (DNS/HTTP) Cloudflare Gateway リアルタイム URL / SNI / HTTP method
プロンプト送信時 AI Gateway / Prompt Firewall リアルタイム (TTFT 影響あり) prompt 本文 / 添付
保存後の監査 CASB (本統合) 1h〜24h ラグ 会話・添付・プロジェクト・権限
ログ集約 / 長期分析 SIEM (Logpush 経由) バッチ Activity Feed (6 年保持)
Shadow AI 検出 Gateway (HTTP ログ) 準リアルタイム 個人 AI SaaS の利用検知
アイデンティティ IdP (Okta/Entra) + SCIM 即時 (provisioning) ユーザ / グループ / ロール

Claude Enterprise 管理機能スタック内での位置

Claude Enterprise 側の管理機能と本統合の関係を整理する。

機能 説明 CASB との関係
Compliance API 会話・ファイル・組織メタデータの programmatic 取得 CASB のデータ源 (polling 対象)
Activity Feed 組織全体のイベントログ (6 年保持) CASB および SIEM 双方に流れる
Admin API Claude Console 組織管理 (ユーザー・API キー管理) CASB とは別系統
Analytics API 使用量・コスト集計 CASB とは別系統
SCIM / SSO IdP 経由のユーザープロビジョニング CASB の「ユーザー可視化」を補完
Audit Log CSV Export claude.ai の別機能 (ルックバック上限あり、CSV のみ) CASB とは補完関係

Compliance API パートナー生態系の中での位置

Anthropic は Compliance API を 28 以上のパートナーに開放しており、Cloudflare はその 1 つである。

カテゴリ パートナー例
CASB / SASE Cloudflare, Palo Alto Networks
SIEM / SecOps CrowdStrike, ReliaQuest, Cribl Stream
Identity Okta, SailPoint
eDiscovery / DSP Rubrik

「Cloudflare 集約」がロックインかどうかは設計次第で、同じ Compliance API を別ベンダー経由で読むことも可能である。


他社 CASB との比較

比較テーブル

観点 Cloudflare CASB Netskope (NewEdge AI) Palo Alto Prisma Access Microsoft Defender for Cloud Apps LLM Gateway 派 (Portkey 等)
Claude 制御点 Compliance API pull (out-of-band) inline GenAI DLP + Tenant Restriction inline DLP + SaaS App Mgmt Purview unified audit (Connector 整備中) 自前 proxy で全 LLM トラフィック把握
リアルタイム性 数分〜数時間 (scan event 起点) inline (ms オーダー) inline (ms オーダー) ログ転送 (分オーダー) inline (ms オーダー)
Anthropic 統合の有無 Compliance API ターンキー (2026-05) Tenant Restriction + GenAI DLP Tenant Restriction + SaaS App Mgmt Connector 整備中 proxy 経由で対応
Cowork / CLI 死角 あり (Compliance API 死角に依存) inline 化で部分カバー可 inline 化で部分カバー可 端末ログ統合次第 proxy 経由なら可視
個人プラン Shadow IT 検出 不可 (Gateway 併用で部分補完) URL カテゴリ / SWG で部分検出 同左 Discovery で部分検出 proxy 経由のみ可視
リアルタイム遮断 不可 (Gateway 連携で代替) 可能 可能 可能 可能
統合 SKU Cloudflare ZT Enterprise 必須 SSE 専業契約 NGFW + Prisma 抱き合わせ M365 E5 同梱可 LLM 利用量比例
AI 固有機能 補助観測 (DLP プロファイル連携) inline DLP + GenAI 分類 同左 Purview AI controls token budget / model route / safety eval
Gartner SSE 2026 位置 Visionary/Challenger Leader Leader Leader 対象外 (専業カテゴリ)
強み Compliance API ターンキー・Cloudflare One 一元管理 大量 SSE 顧客基盤 + AI Fast Path NGFW 既存資産活用 E5 既得層への展開 model-aware governance
弱み retrospective / Cowork 不可視 Anthropic Connector 成熟度 統合の複雑さ Anthropic 統合まだ薄い 自前運用コスト

Cloudflare CASB の固有の強みと弱み

比較テーブルの強み・弱み列に加え、本統合固有の論点を補足する。

  • 強み: Anthropic Compliance API を業界最速でターンキー統合し、Cloudflare One スタック内で Finding から Gateway policy 化まで完結できる。Cloudy (社内 LLM) による Findings の平易な説明文 (2026-02 以降) と Webhook (2026-04 以降) の SOAR 連携で semi-realtime 対応も可能
  • 弱み: 検出ラグ・遮断不可・Cowork / CLI 死角・Shadow Claude 不可視という構造的限界に加え、Cloudflare Zero Trust Enterprise 契約が前提で SMB には届きにくく、false positive による triage 負荷も Cloudflare 公式が認めている

■構造

●システムコンテキスト図

設定・ポリシー管理 監査レポート参照 チャット・プロジェクト利用 API 呼び出し・Claude Code Compliance API pollingx-api-key Findings / Logpush Finding → Gateway policy SSO / SCIM IdP ログ連携 HTTP ログ / Shadow IT Security Architect Compliance Officer Claude User Developer Cloudflare CASB(API-based Scanner) Claude Enterprise(Anthropic SaaS) SIEM(Splunk / Sentinel /Chronicle / Sumo Logic) IdP(Okta / Entra ID /Google Workspace) Cloudflare Gateway(SWG / DLP Proxy)
要素名 説明
Security Architect CASB のポリシー設定・統合設計を担う役割
Compliance Officer Findings・監査レポートを参照してコンプライアンス証跡を管理する役割
Claude User claude.ai でチャット・プロジェクトを利用するエンドユーザー
Developer Claude API や Claude Code CLI を使う開発者
Cloudflare CASB Compliance API を polling して Findings を生成する out-of-band スキャナー
Claude Enterprise Anthropic が提供する企業向け AI SaaS。Compliance API を公開する
SIEM Splunk / Microsoft Sentinel / Google Chronicle / Sumo Logic 等のログ集約・分析基盤
IdP Okta / Microsoft Entra ID / Google Workspace 等の ID プロバイダー。SSO と SCIM を提供
Cloudflare Gateway DNS / HTTP インライン制御。入口 DLP と Shadow AI 検出を担う

●コンテナ図

Cloudflare One (Zero Trust) Claude Enterprise (Anthropic) GET /v1/compliance/*x-api-key600 req/min/parent Findings 生成 Finding event(Webhook) casb_findings dataset ダッシュボード表示 Block / Restrict policy SIEM 転送 CASB Scanner(Polling Engine) Findings Store(Detection DB) Gateway Policy Engine(Inline DLP / Block) Logpush(Log Forwarder) Zero Trust Dashboard(UI / API) Compliance APIapi.anthropic.com/v1/compliance
要素名 説明
CASB Scanner Compliance API を out-of-band で polling し、16 種の Findings ルールを適用するスキャンエンジン
Findings Store 検出された Findings を保管する内部 DB。severity / category / asset_type で構造化
Gateway Policy Engine CASB Finding を受けてインライン制御ポリシーを生成・適用する。Finding → Gateway policy 化を分単位で実現
Logpush casb_findings データセットを外部 SIEM に転送するログパイプライン (Splunk HEC / Azure Blob / S3 / GCS 等)
Zero Trust Dashboard Findings の可視化・トリアージ UI。Cloudy Summaries (AI 要約) を表示
Compliance API Claude Enterprise が公開する監査用 REST API。Activity Feed・コンテンツ・ディレクトリの 3 系統を提供

●コンポーネント図

Compliance API のコンポーネント

Compliance API (api.anthropic.com/v1/compliance) 認証レイヤー スコープ (immutable) Activity Feed エンドポイント Directory エンドポイント Content エンドポイント(claude.ai org のみ) レート制限 全エンドポイント利用可 全エンドポイント利用可 全エンドポイント利用可 Activity Feed のみ 必要 必要 必要 必要 必要 必要 必要 必要 必要 必要 Compliance Access Keysk-ant-api01-...(Primary Owner 発行) Admin API Keysk-ant-admin01-...(Org Admin 発行) read:compliance_activities read:compliance_user_data read:compliance_org_data delete:compliance_user_data GET /v1/compliance/activitieslimit max 5000cursor pagination GET /v1/compliance/organizations GET /v1/compliance/organizations/{uuid}/users GET /v1/compliance/organizations/{uuid}/roles GET /v1/compliance/groups GET /v1/compliance/apps/chatsuser_ids 最低1件必須 GET /v1/compliance/apps/chats/{id}/messages GET /v1/compliance/apps/projects GET /v1/compliance/apps/projects/{id}/attachments GET artifacts (versioned) GET /v1/compliance/apps/chats/files/{id}/content 600 req/min / parent org全 key + 全 endpoint で共有

キー種別・スコープの詳細は前掲「二系統の API キーと最小権限スコープ」、各エンドポイントの仕様は後述「Compliance API の直接利用例」を参照する。図中で押さえるべき特記事項は次のとおり。

  • GET /v1/compliance/organizations はページングがなく最大 1,000 件まで(超過時は 500 Internal Server Error「Response exceeds maximum of 1,000 organizations」 が返るため Anthropic サポートへ問い合わせる)
  • artifacts は claude_artifact_version_* 単位で版管理され、DLP スキャンは全バージョンが対象
  • 600 req/min / parent org は全 key・全 linked org・全 endpoint が共有する単一のレート制限

CASB Scanner のコンポーネント

CASB Scanner Findings ルール (16 種) Access Security (6) Data Loss Prevention (9)全件 High / DLP profile 必須 Polling 制御 Remediation (2026-05 時点) API Key Hygiene (1)Unused API key - Medium High-privilege invite - High Stale pending invite - Low Project visible across org - Low Cowork enabled for role - High Connector always allowed - High Claude for Chrome enabled - High Chat downloadable files Chat prompts Chat responses Chat uploaded files Chat provider-generated files Project files Project documents Artifacts Project instructions 初回スキャン: 数分以内継続スキャン: 1h-24h ラグ(scan-apps ドキュメント記載) 検出のみ (write 系スコープ不要)Admin API + SOAR で代替

16 種の Findings ルールの内訳は前掲「検出される 16 種類の Findings」を参照する。Scanner 動作上の要点は次のとおり。

  • Polling 制御: 初回は数分で Findings 表示、継続スキャンは 1h〜24h ラグ(API ベース CASB 共通の制約)
  • Remediation: 2026-05 時点で Claude 向け自動修復は未提供。検出後は Anthropic Admin API + SOAR で代替(write 系スコープ不要)

●ネットワーク構成図

エンドユーザー側 Cloudflare One (Zero Trust) Anthropic Cloud ダウンストリーム HTTPS (管理デバイス) 通過 or ブロック GET /v1/compliance/*x-api-key: sk-ant-api01-...600 req/min/parent(out-of-band / 定期 polling) JSON レスポンス(events / content / directory) casb_findings datasetHTTPS HEC / Blob / S3 Event push(semi-realtime) Finding → policy 化(分単位) Findings(16 種ルール評価後) Findings(severity=Critical/High) 従業員デバイス(WARP クライアント) Gateway(SWG / DLP Proxy)インライン制御 CASB Scanner(out-of-band polling) Logpush Service Webhook Service api.anthropic.com/v1/compliance/*HTTPS (TLS 1.3) Claude EnterpriseData Store(US / global) SIEM(Splunk / Sentinel /Chronicle) SOAR(XSOAR / Tines) Gateway Policy(Block / Restrict)
要素名 説明
従業員デバイス (WARP) Cloudflare WARP クライアント経由で Gateway を強制経由させる管理デバイス
Gateway (SWG / DLP Proxy) HTTPS インライン検査。アップロード前 DLP ブロックと Shadow AI 検出を担う。リアルタイム遮断可能
CASB Scanner api.anthropic.com に対して HTTPS GET を定期 polling。エンドポイントエージェント / プロキシ不要の out-of-band 方式
api.anthropic.com /v1/compliance/* Compliance API のエントリポイント。認証は x-api-key ヘッダ (OAuth ではない)
Claude Enterprise Data Store Compliance API が読み取る実データの保存先。データレジデンシーは US / global のみ (first-party)
Logpush Service casb_findings データセットを SIEM に継続転送。Splunk HEC / Azure Blob / S3 / GCS に対応
Webhook Service 2026-04 以降。Finding 発生時に外部 SOAR / チャットへ event を push (到達は秒オーダー、ただし検出まで 1h-24h のラグあり)
Gateway Policy CASB Finding を受けて動的に生成されるインラインブロックポリシー。「分単位」で適用可能 (Cloudflare 表現)

■データ

●概念モデル

Anthropic Claude Enterprise テナント claude.ai linked org Claude Console linked org Cloudflare One — Zero Trust Finding カテゴリ has has has has has has has has has (no chat content) 横断 events events polling GET /v1/compliance/* x-api-key600 req/min/parent 1 : many 1 : many 1 : many contains may carry may carry may carry has has has generates used by ParentOrganization(identity hub) ComplianceAccessKey(4 scopes) LinkedOrg (claude.ai) LinkedOrg (Claude Console) ACT_FEED Users Roles Groups Chats Projects Messages File (uploaded) File (provider-generated) Artifacts (versioned) ProjectInstructions ProjectAttachments(project_file / project_doc) Users Roles Groups ACT_FEED CASBIntegration(Anthropic) Finding(16 rules) DLPProfile API Key Hygiene (1) Access Security (6) DLP (9, profile-driven)

所有関係と利用関係の補足

関係 方向 多重度
ParentOrganization → LinkedOrganization 所有 1 : many
ParentOrganization → ComplianceAccessKey 所有 1 : many
LinkedOrganization (claude.ai) → Chat 所有 1 : many
Chat → Message 所有 1 : many
Message → File (uploaded) 利用 1 : many (0..1 per message)
Message → File (provider-generated) 利用 1 : many (0..1 per message)
Message → Artifact (version) 利用 1 : many (0..1 per message)
Project → ProjectAttachment 所有 1 : many
Project → Artifact 所有 1 : many
CASBIntegration → Finding 生成 1 : many
DLPProfile → Finding (DLP category) 利用 many : many
ActivityFeed ParentOrg 横断 (claude.ai + Console)

●情報モデル

ParentOrganization : string: id : string: uuid : string: name : enum[parent]: type : string: sso_provider : string: scim_provider : timestamp: created_at LinkedOrganization : string: uuid : string: id : string: parent_uuid : enum[claude_ai, claude_console]: kind : string: name : timestamp: created_at User : string: id : string: full_name : string: email : enum[admin, billing, claude_code_user, developer, managed, membership_admin, owner, primary_owner, user]: organization_role : timestamp: created_at : timestamp: deleted_at Role : string: id : string: organization_uuid : string: name : string: description : timestamp: created_at : timestamp: updated_at Group : string: id : string: name : string: description : enum[direct, scim]: source_type : list~string~: roles : timestamp: created_at : timestamp: updated_at GroupMember : string: user_id : string: email : timestamp: created_at : timestamp: updated_at Chat : string: id : string: name : string: organization_uuid : string: project_id : string: user_id : string: model : string: href : timestamp: created_at : timestamp: updated_at : timestamp: deleted_at Message : string: id : string: chat_id : enum[user, assistant]: role : list~ContentBlock~: content : list~FileRef~: files : list~FileRef~: generated_files : list~ArtifactRef~: artifacts : timestamp: created_at File : string: id : string: filename : string: mime_type : enum[project_file, chat_file, generated_file]: type : timestamp: created_at Artifact : string: id : string: version_id : string: title : string: artifact_type : timestamp: created_at Project : string: id : string: organization_uuid : string: owner_user_id : string: name : enum[private, organization]: visibility : timestamp: created_at : timestamp: updated_at : timestamp: deleted_at ProjectAttachment : string: id : string: project_id : string: filename : string: mime_type : enum[project_file, project_doc]: type : timestamp: created_at ProjectInstructions : string: project_id : string: content Activity : string: id : string: organization_id : string: organization_uuid : string: type : Actor: actor : timestamp: created_at Actor : enum[user_actor, api_actor, admin_api_key_actor, unauthenticated_user_actor, anthropic_actor, scim_directory_sync_actor]: type : string: email_address : string: user_id : string: api_key_id : string: admin_api_key_id : string: ip_address : string: user_agent : string: workos_event_id : string: directory_id : string: idp_connection_type ComplianceAccessKey : string: id : string: organization_id : string: name : string: prefix : set~enum[read:compliance_activities, read:compliance_user_data, read:compliance_org_data, delete:compliance_user_data]~: scopes : string: created_by : timestamp: created_at : timestamp: revoked_at CASBIntegration : string: id : string: name : enum[anthropic]: saas_name : string: admin_api_key_id : string: project_api_key_id : timestamp: created_at : timestamp: updated_at Finding : string: id : string: integration_id : string: name : enum[api_key_hygiene, access_security, data_loss_prevention]: category : enum[Critical, High, Medium, Low]: severity : string: asset_id : string: asset_type : string: description : int: instance_count : timestamp: detected_at : enum[Active, Ignored, Hidden, Pending, Processing, Validating, Completed, Failed, Rejected]: status DLPProfile : string: id : string: account_id : string: name : list~DLPRule~: rules : enum[Critical, High, Medium, Low]: severity_override contains 1 many issues 1 many has 1 many defines 1 many has 1 many has 1 many has 1 many assigned many many contains 1 many optionally_in many 1 uploads 1 many produces 1 many has 1 many has 1 1 contains 1 many performed_by 1 1 generates 1 many triggers many many authenticates 1 1

●エンティティ補足説明

ParentOrganization / LinkedOrganization

  • ParentOrganization は claude.ai 上にのみ存在し、Claude Console (platform.claude.com) には表示されない
  • LinkedOrganization の kindclaude_ai(会話・プロジェクトコンテンツを保持)か claude_console(APIワークロード管理のみ、chat content なし)
  • uuid (標準 UUID 形式) と id (org_プレフィックス形式) が共存し、前者が正規識別子

User

  • organization_role は built-in 9 値の enum: admin, billing, claude_code_user, developer, managed, membership_admin, owner, primary_owner, user
  • アクティブメンバーのみ List に返る (削除ユーザーは即時消滅するが Activity Feed では 6 年間 user_* ID で索引可能)

Chat / Message

  • Chat の deleted_at は soft-delete(UI から削除)時に設定。hard-delete(Compliance API DELETE)後は 404 で不可視
  • Message の content[{ type: "text", text: "..." }] 配列
  • files (ユーザーアップロード、claude_file_* ID)、generated_files (AI 生成バイナリ、claude_gen_file_* ID)、artifacts (versioned テキスト、claude_artifact_version_* ID) の 3 種は null 可

File

  • id プレフィックスで種別を区別:
    • claude_file_* — ユーザーアップロード (chat & project 共用エンドポイント)
    • claude_gen_file_* — AI ツール生成バイナリ
    • claude_proj_doc_* — プロジェクトドキュメント (text/plain のみ)
  • ダウンロードレスポンスは Content-Disposition, Content-Type, Content-MD5 (RFC 1864), Transfer-Encoding: chunked ヘッダ付き

Artifact

  • id (安定識別子) と version_id (claude_artifact_version_*) の 2 層構造
  • 同一 Artifact が複数の assistant ターンで改版されるたびに新しい version_id が発行される
  • ダウンロードは version_id 指定 (テキスト本体)

ProjectAttachment

  • type discriminator: project_file (binary, claude_file_*) / project_doc (text/plain, claude_proj_doc_*)
  • ページネーションは page token 方式 (next_page)

Activity / Actor

  • Activity の type は "hundreds of distinct" 値が存在。代表例: claude_chat_created, claude_file_uploaded, rbac_role_assigned, compliance_api_accessed, sso_login_initiated, org_join_proposal_decided
  • Actor union: type discriminator で 6 種を区別。scim_directory_sync_actoridp_connection_typeOktaSCIMV2 / AzureSCIMV2 を区別可能
  • Activity Feed は最新順 (newest-first) cursor pagination (after_id / before_idfirst_id / last_id で返却)
  • limit デフォルト 100、最大 5,000。全エンドポイント合計 600 req/min/parent org の rate limit を共有

ComplianceAccessKey

  • プレフィックス sk-ant-api01-...、claude.ai primary owner のみ発行可
  • scopes は作成後 immutable (変更には新規発行 + 旧鍵削除が必要)
  • Admin API key (sk-ant-admin01-...) は read:compliance_activities スコープのみ、content 系エンドポイントは 403

Finding (Cloudflare CASB)

フィールド 値/例
id string Finding 固有 ID
integration_id string CASBIntegration ID
name string "Anthropic: Unused API key" 等
category enum api_key_hygiene, access_security, data_loss_prevention
severity enum Critical, High, Medium, Low
asset_id string 対象リソース ID (API key ID / user ID / project ID 等)
asset_type string "api_key", "user", "project" 等
description string 検出内容テキスト
instance_count int 同一 Finding の発生件数
detected_at timestamp 初回検出日時
status enum Active, Ignored, Hidden, Pending, Processing, Validating, Completed, Failed, Rejected

DLP Finding 固有フィールド: file_name, file_link, dlp_profiles (マッチした DLP プロファイル ID 配列)

DLPProfile (Cloudflare 側)

  • Cloudflare Zero Trust 側で定義。正規表現・MIP 感度ラベル・PCI/PII 検出器をルールとして持つ
  • rules は DLPRule オブジェクトのリスト (名称・パターン・エントリ数)
  • severity_override で Finding の severity を上書き可能
  • CASB Integration に複数プロファイルを紐付け可。DLP Finding はプロファイルマッチ時のみ発生

●ページネーション方式まとめ

エンドポイント群 ソート順 方式 パラメータ
Activities newest-first cursor after_id / before_id (返却: first_id / last_id)
Chats / chat messages oldest-first cursor 同上
Projects / attachments / users / roles / groups / group members endpoint-specific page token page (返却: next_page)
Organizations / files ページネーションなし (1 回で全件)

■構築方法

必須パラメータテーブル

統合を動作させるために必要なキー・スコープ・発行場所を一覧で示す。

キー種別 プレフィックス 発行場所 必要ロール Compliance API でのスコープ CASB スキャン要否
Compliance Access Key sk-ant-api01-... claude.ai > Organization settings > Data and privacy Primary Owner のみ read:compliance_activities
read:compliance_user_data
read:compliance_org_data
delete:compliance_user_data (任意)
必須 (DLP/content scanning)
Admin API key sk-ant-admin01-... Claude Console > Settings > Admin keys org admin read:compliance_activities のみ 可 (Activity Feed のみ)
Analytics API key claude.ai > Analytics > API keys Compliance API 非対象 不可
Claude API key sk-ant-api03-... Claude Console > Settings > API keys Compliance API 非対象 不可

CASB 推奨構成: Compliance Access Key に read:compliance_activities + read:compliance_user_data + read:compliance_org_data の 3 スコープを付与し、delete:compliance_user_data別の read-only キーと分離して発行する。スコープは作成後 immutable (変更不可・再発行必須)。

発行 発行 x-api-key ヘッダ x-api-key ヘッダ Primary Owner(claude.ai) Compliance Access Keysk-ant-api01-...scope: read:* Org Admin(Claude Console) Admin API keysk-ant-admin01-...scope: read:compliance_activities only Cloudflare CASB(DLP + Posture scan) Activity Feed のみ

前提条件

条件 詳細
Claude Enterprise 契約 Compliance API のフル機能 (chat/file/project DLP スキャン) に必須。Claude Console (Platform) 組織は Activity Feed のみ。Team / Pro / Max は対象外
Cloudflare One 契約 Cloudflare Zero Trust の有償 SKU。新規顧客は最初の 2 CASB 連携が無料
Primary Owner の存在 Compliance Access Key の発行は claude.ai の primary owner のみ可能。Admin API key は Console org admin が発行可能
Anthropic 担当への連絡 Compliance API は オンリクエストで有効化。自動では有効にならない

Anthropic 側セットアップ

Compliance API 有効化リクエスト

Anthropic 担当者 (Account Executive または Customer Success Manager) に Compliance API 有効化を依頼する。有効化はテナントの parent organization レベル で行われ、すべての linked organizations (claude.ai 系・Claude Console 系) に自動で波及する。

有効化後:

  • claude.ai 組織: Organization settings > Data and privacyCompliance access keys セクションが出現
  • Claude Console 組織: 新規作成の Admin API key に read:compliance_activities スコープが付与される (有効化前に作成した Admin API key は scope を持たず 403 を返す — 再発行が必要)

Compliance Access Key 発行手順

① claude.ai へ primary owner でサインイン ② Organization settings > Data and privacy を開く ③ 'Compliance access keys' セクションで 'Create key' をクリック ④ キー名を入力し、スコープを選択・read:compliance_activities・read:compliance_user_data・read:compliance_org_data※ delete は別キーで分離推奨 ⑤ 'Create' をクリック ⑥ 表示された sk-ant-api01-... をシークレットマネージャに保存(表示は1回限り) ⑦ 環境変数にエクスポートexport ANTHROPIC_COMPLIANCE_ACCESS_KEY=sk-ant-api01-...

スコープ選定指針:

スコープ 付与する権限 CASB に必要か
read:compliance_activities Activity Feed 読み取り 必要 (イベント監査)
read:compliance_user_data chat / file / project / users / group members 読み取り 必要 (DLP content scan)
read:compliance_org_data organizations / roles / groups メタデータ読み取り 推奨 (user名解決・posture)
delete:compliance_user_data chat / file / project の永続削除 不要 (CASB は read のみ)

警告: read:compliance_user_data を持つキーは、primary owner が未読の会話を含む組織内すべてのチャット・ファイル・プロジェクトを読める。本番 DB 認証情報と同等に扱い、ソースコードや SIEM 設定ファイルへの埋め込みは厳禁。シークレットマネージャに格納すること。

スコープ確認・ローテーション

発行済みキーのスコープ確認は以下の方法で行う:

  • UI: claude.ai > Organization settings > Data and privacy > Compliance access keys の Scopes 列を参照
  • キープレフィックス: sk-ant-api01-... = Compliance Access Key (スコープは作成時に指定)
  • API エラー: スコープ不足時は 403 レスポンスボディに Got: [...] / Needed: [...] が明示される
{
  "error": {
    "type": "permission_error",
    "message": "Missing required scopes. Got: ['read:compliance_activities'] Needed: ['read:compliance_user_data']"
  }
}

ローテーション手順 (無停止):

  1. 同スコープで新キーを発行
  2. 統合先 (Cloudflare CASB) に新キーを設定
  3. 動作確認
  4. 旧キーを削除

Cloudflare 側セットアップ

Zero Trust ダッシュボードでの Anthropic 統合追加

① Cloudflare ダッシュボード → Zero Trust を開く ② 左メニュー: Integrations > Cloud & SaaS ③ 'Add Integration' をクリック ④ 統合一覧から 'Anthropic' を選択 ⑤ Compliance API key (sk-ant-api01-...) を入力(Admin API key = sk-ant-admin01-... の場合は Activity Feed のみ対象) ⑥ 'Save' をクリックして統合を保存 ⑦ 初回スキャン開始 (数分で Findings が表示される)

操作パス: Zero Trust > Integrations > Cloud & SaaS > Add Integration > Anthropic

入力値:

  • Organization-level admin key: Compliance Access Key (sk-ant-api01-...) を貼り付け。DLP/posture findings の検出には read:compliance_user_data が含まれるキーが必要
  • 保存後、スキャンが即時開始し数分以内に Findings ダッシュボードに検出結果が表示される

DLP プロファイル設定

CASB の DLP カテゴリ (9 件) を有効化するには、Cloudflare DLP プロファイルを事前に作成・紐付けする必要がある。

DLP プロファイル作成手順 (Zero Trust > Data Loss Prevention > DLP Profiles):

  1. Create profile をクリック
  2. プロファイル名・説明を入力
  3. 以下から検出器を追加:
    • 既定の検出器: PCI (クレジットカード番号 / CVV)、PII (SSN・メールアドレス・電話番号等)、PHI (医療情報)
    • 正規表現: 独自の内部識別子や機密コードネームを正規表現で定義
    • Microsoft Information Protection (MIP) ラベル: Purview 連携で機密ラベルを再利用
    • カスタムワードリスト: 特定の顧客名・プロジェクトコード等のキーワード
  4. プロファイルを保存し、Anthropic CASB 統合に紐付け

DLP プロファイルが設定されると、以下のアセットが自動スキャン対象になる:

DLP Finding 名 スキャン対象 Severity
Downloadable File with DLP Profile match チャット内のダウンロード可能ファイル High
Claude Chat User Prompt with DLP Profile match ユーザープロンプトのテキスト High
Claude Chat Assistant Response with DLP Profile match アシスタントの応答テキスト High
Claude Chat Uploaded File with DLP Profile match チャットにアップロードされたファイル High
Claude Chat Generated File with DLP Profile match Claude が生成したファイル (PDF/CSV/スライド等) High
Claude Project File with DLP Profile match プロジェクト添付ファイル High
Claude Project Document with DLP Profile match プロジェクトドキュメント (テキスト) High
Claude Chat Artifact with DLP Profile match Claude 生成の Artifact (コード/Markdown 等) High
Claude Project Instructions with DLP Profile match プロジェクトのシステムプロンプト High

初回スキャン

統合追加直後にスキャンが自動開始する。Cloudflare の説明では「数分以内に Findings が表示される」(初回スキャン)。継続スキャンの周期は公式ドキュメントに明示がないが、通常の API-based CASB は 1〜24 時間ごとに定期実行される。

Project API key を追加する場合 (任意 scope 拡張)

Claude Console のプロジェクト単位のメタデータまでスキャン対象を広げる場合、Project-level API key を追加で設定できる。

  • 発行場所: Claude Console > Settings > API keys (project スコープを選択)
  • 付与される追加アクセス: プロジェクトメタデータおよびプロジェクト固有の API key 情報
  • 設定方法: Cloudflare CASB の Anthropic 統合設定画面で「Add project key」から追加

最小権限原則に従い、プロジェクト操作の監査が不要であれば追加しなくてよい。


■利用方法

Findings の確認

ダッシュボード表示

Cloudflare Zero Trust ダッシュボードでの確認パス:

Zero Trust > Cloud & SaaS findings

検出結果は Posture Findings (misconfigurations / access security) と Content Findings (DLP マッチ) の 2 タブに分かれて表示される。各 Finding には以下の情報が含まれる:

  • Finding タイプ名
  • Severity (Critical / High / Medium / Low)
  • インスタンス数 (同一ルールの検出件数)
  • 紐付く統合名 (Anthropic)
  • ステータス (Active / Ignored / Remediated 等)
  • 検出日時

Cloudflare の社内 LLM "Cloudy" が各 Finding に plain-language summary (「なぜリスクか」「どう直すか」) を自動付与する (2026-02 以降)。

カテゴリ・asset_type フィルタ

Finding 一覧では以下のフィルタが使用可能:

フィルタ軸 選択肢
Finding タイプ Posture Findings / Content Findings
Severity Critical / High / Medium / Low
Integration Anthropic / (他の統合)
ステータス Active / Ignored / Hidden / Remediation 中

Anthropic 統合の Finding は 3 カテゴリ 16 種:

API Key Hygiene (1 件)

Finding 名 Severity
Anthropic: Unused API key Medium

Access Security (6 件)

Finding 名 Severity
Anthropic: High-privilege invite High
Anthropic: Stale pending invite Low
Anthropic: Claude Project visible across organization Low
Anthropic: Claude Cowork enabled for role High
Anthropic: Claude Connector always allowed enabled for role High
Anthropic: Claude for Chrome enabled for role High

Data Loss Prevention (9 件 — DLP プロファイル設定が前提)

全件 High Severity。前掲の DLP Finding 表を参照。

Compliance API の直接利用例

Cloudflare CASB はバックグラウンドでこれらの API を polling しているが、セキュリティ担当者が直接呼び出すことも可能。

環境変数の設定

# Compliance Access Key (claude.ai 発行、DLP/content スキャン用)
export ANTHROPIC_COMPLIANCE_ACCESS_KEY="sk-ant-api01-..."

# Admin API key (Claude Console 発行、Activity Feed のみ)
# export ANTHROPIC_ADMIN_KEY="sk-ant-admin01-..."

GET /v1/compliance/activities — Activity Feed の取得

# 最新 1 件を取得
curl --fail-with-body -sS \
  "https://api.anthropic.com/v1/compliance/activities?limit=1" \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY"
# 期間・イベントタイプで絞り込み
curl --fail-with-body -sS -G \
  "https://api.anthropic.com/v1/compliance/activities" \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
  --data-urlencode "activity_types[]=claude_file_uploaded" \
  --data-urlencode "activity_types[]=claude_chat_created" \
  --data-urlencode "created_at.gte=2026-05-01T00:00:00Z" \
  --data-urlencode "limit=100"
# ページネーション (next page = older activities)
last_id=$(curl --fail-with-body -sS \
  "https://api.anthropic.com/v1/compliance/activities?limit=100" \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" | jq -er '.last_id')

curl --fail-with-body -sS -G \
  "https://api.anthropic.com/v1/compliance/activities" \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
  --data-urlencode "limit=100" \
  --data-urlencode "after_id=${last_id}"

主要クエリパラメータ:

パラメータ 説明
limit integer 返却件数 (default 100, max 5000)
after_id string このカーソルより古いイベントを取得 (前進)
before_id string このカーソルより新しいイベントを取得 (後退)
created_at.gte / .lte / .gt / .lt RFC3339 期間絞り込み
activity_types[] string (反復) イベントタイプ絞り込み
actor_ids[] string (反復) 操作者 ID 絞り込み
organization_ids[] string (反復) 組織 UUID 絞り込み

GET /v1/compliance/apps/chats — チャット一覧の取得

# 特定ユーザーの 2026-05-01 以降のチャットを取得
curl --fail-with-body -sS -G \
  "https://api.anthropic.com/v1/compliance/apps/chats" \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
  --data-urlencode "user_ids[]=user_01XyDMpzjS89pFZXqSFUBDr6" \
  --data-urlencode "created_at.gte=2026-05-01T00:00:00Z" \
  --data-urlencode "limit=100"

注意: user_ids[]最低 1 個・最大 10 個 が必須。先に GET /v1/compliance/organizations/{org_uuid}/users でユーザー ID を取得すること。

GET /v1/compliance/apps/chats/{chat_id}/messages — チャットメッセージの取得

chat_id="claude_chat_01H5CWunD7RpVJ5bHa8RCkja"

curl --fail-with-body -sS \
  "https://api.anthropic.com/v1/compliance/apps/chats/$chat_id/messages" \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY"

レスポンスには chat_messages 配列が含まれ、各メッセージに content (テキスト)、files (ユーザーアップロード)、generated_files (Claude 生成ファイル)、artifacts (Artifact) の ID が付与される。

ファイル・Artifact のダウンロード

# ユーザーアップロードファイル / プロジェクトファイル (claude_file_* ID)
file_id="claude_file_01UaT9wBcDfGhJkLmNpQrSv7"
curl --fail-with-body -sS -OJ \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
  "https://api.anthropic.com/v1/compliance/apps/chats/files/$file_id/content"
# -OJ: Content-Disposition の filename でローカル保存

# Claude 生成ファイル (claude_gen_file_* ID)
gen_file_id="claude_gen_file_01TbR8wAcCeFhJkLnPqStUvX"
curl --fail-with-body -sS -OJ \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
  "https://api.anthropic.com/v1/compliance/apps/chats/generated-files/$gen_file_id/content"

# Artifact コンテンツ (claude_artifact_version_* ID を使用)
artifact_version_id="claude_artifact_version_01KmNpQrSt3UvWxYz5AbCdEfG"
curl --fail-with-body -sS \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
  "https://api.anthropic.com/v1/compliance/apps/artifacts/$artifact_version_id/content"

プロジェクト添付ファイル一覧

project_id="claude_proj_01KGp4eZNug9ri4kE35RSppq"

curl --fail-with-body -sS -G \
  "https://api.anthropic.com/v1/compliance/apps/projects/$project_id/attachments" \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY"

レスポンスの type フィールドで project_file (バイナリ、claude_file_*) と project_doc (テキスト、claude_proj_doc_*) を判別し、それぞれの対応エンドポイントでダウンロードする。

レート制限: 全 /v1/compliance/* エンドポイントで合計 600 req/min / parent organization (すべてのキー・すべての linked org で共有)。429 時は anthropic-ratelimit-requests-reset ヘッダの時刻まで待機し、cursor を advance させないこと。

DLP プロファイルの作成と紐付け

Zero Trust > DLP Profiles'Create profile' 検出器を追加・PCI (カード番号)・PII (SSN/Email/電話)・PHI (医療情報)・正規表現・MIP ラベル・カスタムワード プロファイル保存 Zero Trust > Cloud & SaaSAnthropic 統合設定 >DLP profile を紐付け 次回スキャンから9 種 DLP Finding が有効

DLP プロファイル設計の推奨構成:

プロファイル例 主な検出器 Finding Severity
規制由来 PCI / HIPAA / GDPR カード番号・CVV・SSN・PHI Critical / High
業界固有 金融口座番号・医療 ID 独自の内部識別子 (正規表現) High
知財・営業秘密 内部コードネーム・未公開財務 キーワードリスト + 正規表現 Medium

誤検知対策: Artifact (生成コード) は test fixture やコメント内の「fake」データを拾いやすい。Cloudy Summaries の説明文でトリアージし、コードコンテキストを除外する除外ルールを正規表現に組み込む。

Finding → Gateway policy への昇格

CASB で検出した Finding をインライン制御 (入口ブロック) に昇格させる手順。

CASB Finding 検出例: Claude Project visible across organization Zero Trust > Cloud & SaaS findings で Finding を確認 Finding の 'Manage' をクリック インスタンスの 3点メニュー > 'Block with Gateway HTTP policy' Gateway ポリシーの設定・対象ユーザー / グループの指定・制限内容の選択 (block / restrict upload / restrict access) ポリシーを保存→ Gateway がインライン制御を即時適用

Cloudflare は「CASB finding から Gateway policy 化まで数分」と表現している。

Gateway policy のユースケース:

シナリオ Gateway 設定例
特定ユーザーの claude.ai へのアップロードをブロック HTTP policy: destination=claude.ai, action=block, selector=user_id
組織全体で claude.ai へのアクセスを制限 HTTP policy: destination=claude.ai, action=block
DLP 違反ユーザーのみ quarantine HTTP policy: selector=group, action=isolate

注意 (2026-05 時点): Anthropic 統合の 自動 Remediation (Finding から自動でプロジェクト設定を元に戻す機能) は未提供。Gateway policy への昇格は手動または SOAR 経由。

Logpush / Webhook での SIEM 転送

Logpushバッチ転送 Webhookイベント push2026-04 以降 Cloudflare CASBFindings SIEMSplunk / Sentinel / Sumo Logic SOAR / チケットPagerDuty / Jira / Tines

Logpush による SIEM 転送

設定パス: Zero Trust > Insights > Logs > Manage Logpush > Create a Logpush job

データセット: CASB Findings

Splunk HEC への Logpush:

# Cloudflare Logpush ジョブを API で作成 (Zone ID または Account ID で指定)
CHANNEL_ID=$(python3 -c 'import uuid; print(uuid.uuid4())')

curl "https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/logpush/jobs" \
  --request POST \
  --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "name": "casb-findings-to-splunk",
    "destination_conf": "splunk://<SPLUNK_ENDPOINT>:8088/services/collector/raw?channel='"$CHANNEL_ID"'&insecure-skip-verify=false&sourcetype=cloudflare:casb&header_Authorization=Splunk%20<HEC_TOKEN>",
    "dataset": "casb_findings",
    "enabled": true
  }'

Splunk HEC の destination_conf フォーマット:

splunk://<host>:<port>/services/collector/raw?channel=<UUID>&sourcetype=cloudflare:casb&header_Authorization=Splunk%20<TOKEN>

Splunk HEC 疎通確認:

curl "https://<SPLUNK_ENDPOINT>:8088/services/collector/raw?channel=$CHANNEL_ID&sourcetype=cloudflare:casb" \
  --header "Authorization: Splunk <HEC_TOKEN>" \
  --data '{"test":"ping"}'
# 成功時: {"text":"Success","code":0}

Microsoft Sentinel への転送:
Sentinel では Azure Blob Storage 経由のインジェストを推奨。Logpush job の destination_conf に Azure Blob Storage SAS URL を指定し、Sentinel 側の Codeless Connector Framework またはカスタム Data Collection Rule でインジェストする。

curl "https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/logpush/jobs" \
  --request POST \
  --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "name": "casb-findings-to-sentinel",
    "destination_conf": "azure://<STORAGE_ACCOUNT>.blob.core.windows.net/<CONTAINER>?<SAS_TOKEN>",
    "dataset": "casb_findings",
    "enabled": true
  }'

Sumo Logic への転送:

curl "https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/logpush/jobs" \
  --request POST \
  --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "name": "casb-findings-to-sumo",
    "destination_conf": "https://<SUMO_ENDPOINT>/receiver/v1/http/<TOKEN>",
    "dataset": "casb_findings",
    "enabled": true
  }'

Webhook によるリアルタイム通知 (2026-04 以降)

Webhook は Logpush (バッチ) と異なり、Finding 検出時に 個別 push される (ただし CASB スキャン自体に 分〜時間のラグがあるため "semi-realtime")。

Webhook 設定手順:

  1. Webhook 宛先を事前登録: Zero Trust > 設定 > CASB Webhooks で宛先 URL・認証情報を登録
  2. Finding を開いて送信: Cloud & SaaS findings > Finding 選択 > Manage > インスタンスの 3点メニュー > Send webhook
  3. 宛先を選択して送信
  4. 本番送信前に Test delivery で疎通確認

Webhook の典型的な連携先:

連携先 用途
Slack / Teams severity=Critical の Finding を SOC チャネルに即時通知
PagerDuty / Opsgenie on-call 担当者へのインシデント発火
Splunk SOAR / Cortex XSOAR / Tines 自動 playbook 起動 (例: Claude project を private 化 → ユーザーに Slack 警告)
Jira / ServiceNow 監査記録用チケットの自動生成

Severity 別トリアージフロー (推奨):

Critical High Medium Low Webhook 受信 Severity Slack #sec-incidents 即時通知+ PagerDuty 発火+ SOAR: 自動 private 化 Slack #sec-review 通知営業時間内に人間判断 (24h) Weekly digest でまとめてレビュー Logpush → SIEM 蓄積月次ダッシュボードレビュー

■運用

Findings のトリアージ (High/Medium/Low の優先順位、SLA、誰がオーナーか)

Cloudflare CASB が生成する 16 種の Finding は 3 カテゴリ × 複数 severity で構成される。
検出ラグ (1h〜24h) を前提に、以下の SLA とオーナーを設計する。

Finding 別オーナーと SLA の目安

Severity Finding 例 推奨 SLA 一次オーナー エスカレ先
High Claude Cowork enabled for role / Connector always allowed / Claude for Chrome enabled / High-privilege invite 検出後 4h 以内 に確認・判断 SOC 担当 CISO
High (DLP) chat/prompt/artifact に PII・PCI・PHI マッチ 検出後 4h 以内 に隔離方針決定 DLP チーム 法務 / DPO
Medium Unused API key 検出後 48h 以内 に有効性確認 Platform 担当 セキュリティ
Low Stale pending invite / Claude Project visible across org 週次レビューで対処 IT 管理

トリアージフロー (Webhook 受信後)

Webhook 受信 (Finding 生成、semi-realtime)
│
├─ severity = High + category = DLP (PII/PCI/PHI)
│    ├─ Slack #sec-incidents へ即時通知
│    ├─ PagerDuty インシデント発火 (on-call)
│    ├─ SOAR: 対象ユーザへ Slack DM で警告 + 管理者承認を要求
│    └─ 4h 以内に SOC 判断 → 自動 private 化 or 手動削除
│
├─ severity = High + category = Access Security
│    ├─ Slack #sec-review へ通知 (営業時間内)
│    ├─ 当該ロールの担当部署リーダーへ確認メール自動送信
│    └─ 4h 以内に「意図的な設定か否か」判断 → 不要なら Admin Console で無効化
│
├─ severity = Medium
│    └─ Weekly digest (Cloudflare 2025-11 機能) でまとめレビュー
│        → 有効期限切れ API key は当該チームに 48h 以内の回答を要求
│
└─ severity = Low
     └─ Logpush 経由で SIEM に蓄積 → 月次棚卸しで一括クローズ

Cloudflare CASB の false positive 問題への対応:

  • internally-sharedpublic と誤判定するケースが公式に明記されている。
  • トリアージ時に Finding の詳細 (description / Cloudy Summary) を必ず確認し、
    誤検知と判断した場合は「Ignore」+ Cloudflare Support に feedback を送り精度改善を促す。
  • 誤検知率が高い Finding ルールは Severity を 1 段落として運用することを検討する。

継続スキャンと再スキャン (API rate limit 600 req/min/parent org の budget 管理、複数連携での共有戦略)

rate limit の構造

Compliance API は 600 req/min per parent organization の予算を全スコープ・全 key で共有する。
Cloudflare CASB、SIEM forwarder、独自監査ツールが同じ parent org に対して動いている場合、
合計が上限を超えると CASB のスキャンが 429 で止まる。

Parent Organization (rate limit: 600 req/min)
  ├── Cloudflare CASB (polling)         ← 消費 X req/min
  ├── Cribl / SIEM forwarder            ← 消費 Y req/min
  ├── 独自レポートスクリプト            ← 消費 Z req/min
  └── 残り budget = 600 - X - Y - Z

budget 管理の指針

  • Cloudflare CASB が主: SIEM forwarder や独自スクリプトを CASB 側と切り離し、
    Activity Feed は CASB → Logpush で SIEM に流す構成にすることで、
    直接 Compliance API を叩くコンシューマーを最小化する。
  • 帯域配分の目安 (組織規模 ~500 users の場合):
コンシューマー req/min 目安 優先度
Cloudflare CASB スキャン 〜100〜200 最高
Activity Feed forwarder (Cribl / 自前) 〜50〜100
独自レポート / ダッシュボード 〜50 低 (業務時間外に分散)
空きバッファ 200〜400 スパイク吸収
  • 429 発生時: retry-after ヘッダ (秒) を読んでバックオフ。cursor は advance しない
    (Anthropic の公式推奨)。
# 429 レスポンスのヘッダ確認例
curl -i -X GET https://api.anthropic.com/v1/compliance/activities \
  -H "x-api-key: $COMPLIANCE_KEY" \
  -H "anthropic-version: 2023-06-01" | grep -E 'ratelimit|retry-after'

# 例: anthropic-ratelimit-requests-remaining: 0
#     anthropic-ratelimit-requests-reset: 2026-05-22T10:30:00Z
#     retry-after: 60
  • scope 不足 (403) は 1 unit 消費するため、scope 設定ミスが多発すると budget が削れる。
    403 ボディの "Got": [...], "Needed": [...] を監視して早期に是正する。

再スキャンの重要な注意点

Cloudflare 公式が明示している制約:

  • DLP プロファイルを 後から既存統合に追加 した場合、有効化以降に modification event
    あったファイルしか再評価されない。
  • 全件を DLP の網に掛けたい場合は 統合作成時に DLP プロファイルを同時設定 する。
  • 設定変更後に旧データを強制再スキャンする公式手段はない (2026-05 時点)。

つまり後付けで DLP プロファイルを追加しても、有効化以降に modification event があったファイルしかスキャンされず、旧データは死角になる。対策として、全プロジェクト/ファイルの一覧を Compliance API で取得し、自前スクリプトで「内容を一度 GET → 変更日時を確認」する補完スキャンを走らせて死角を最小化する。


Compliance Access Key のローテーション (immutable scope の制約、新鍵作成→旧鍵削除の手順)

immutable scope の制約

Compliance Access Key のスコープは作成時に確定し、後から変更できない
これは OAuth のスコープ更新とは異なり、「鍵を更新する」概念が存在しない。
スコープ変更 = 旧鍵廃棄 + 新鍵発行 のセットになる。

ローテーション手順

Step 1. 新しい Compliance Access Key を発行 (旧鍵はまだ有効)
   claude.ai > Organization settings > Data and privacy
   > Compliance API > Create new key
   → スコープ: read:compliance_activities + read:compliance_user_data
     (+ read:compliance_org_data) を選択。
     ※ delete:compliance_user_data は選択しない (CASB 用途には不要)

Step 2. 新しい鍵を Cloudflare CASB に設定
   Cloudflare Zero Trust > CASB > Integrations > Anthropic
   > Edit Integration > API Key を差し替え

Step 3. 動作確認 (新鍵での接続テスト)
   curl -s https://api.anthropic.com/v1/compliance/activities?limit=1 \
     -H "x-api-key: $NEW_KEY" \
     -H "anthropic-version: 2023-06-01" | jq '.data.id'

Step 4. 旧鍵を無効化
   claude.ai > Organization settings > Data and privacy
   > Compliance API > [旧鍵] > Revoke

Step 5. Activity Feed で `compliance_api_accessed` event を確認
   旧鍵の使用が止まり、新鍵の使用が記録されていることを確認する。

ローテーション頻度の推奨

条件 推奨ローテーション周期
通常運用 年 1 回 (90 日ルールがある場合は 90 日)
鍵が漏洩した疑い 即時。旧鍵を先に Revoke し、CASB の接続が切れた後に新鍵を設定
CASB ベンダー変更 ベンダー切替と同時にローテーション
Primary Owner 異動 新 Primary Owner が発行し直す (鍵の所有者が変わる)

注意事項:

  • Compliance Access Key を発行できるのは Primary Owner のみ
    Primary Owner が不在の場合は Anthropic サポートへ連絡が必要。
  • read:compliance_user_data を持つ鍵は組織内の全会話・全ファイルを読める。
    Anthropic 公式の警告: "Treat Compliance Access Keys like production database credentials."
    鍵の保管は Secret Manager (AWS Secrets Manager / GCP Secret Manager / Vault) を使用し、
    平文での環境変数保持を避ける。

Activity Feed と SIEM の長期保存 (Anthropic 6 年保持 vs SIEM 側保持期間)

保持期間のギャップ

保持期間 注意事項
Anthropic Activity Feed 6 年 (queryable within 1 minute of occurring) API で取得可能な範囲
SIEM (Splunk/Sentinel 標準) 90 日〜1 年 (ライセンス依存) 長期保管は別途コールドストレージが必要
S3/GCS/Azure Blob (コールドアーカイブ) 無制限 (保管コスト次第) Logpush でリアルタイム流し込み可

Anthropic が 6 年保持する Activity Feed を SIEM 側が 90 日しか持たない場合、
「SIEM で検索できるが Anthropic でも取れる」という二重管理の無駄が生じる一方、
「SIEM にない 90 日超の分は Compliance API から再取得する必要がある」という依存も生まれる。

推奨アーキテクチャ

Anthropic Activity Feed (6 年)
     │ Compliance API polling (Cloudflare CASB or 自前 forwarder)
     ▼
Cloudflare Logpush ─────────────────────────────────────────────┐
     │                                                           │
     ├─► SIEM Hot tier (Splunk/Sentinel) [90日〜1年]            │
     │    └─ リアルタイム検索・アラート                          │
     │                                                           │
     └─► コールドアーカイブ (S3/GCS/Azure Blob) [無制限]  ◄────┘
          └─ SOC2 / ISO 42001 監査向け長期証跡
             (Logpush は最初から Object Storage にも並列書き込み可)

Logpush 設定の骨格 (Cloudflare CLI/API)

# Logpush job を S3 に作成 (CASB findings を長期保管)
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/logpush/jobs" \
  -H "X-Auth-Email: $CF_EMAIL" \
  -H "X-Auth-Key: $CF_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "casb-findings-to-s3",
    "dataset": "casb_findings",
    "destination_conf": "s3://$BUCKET_NAME/casb-findings?region=ap-northeast-1",
    "enabled": true,
    "frequency": "high"
  }'

ISO/IEC 42001 / SOC 2 要件との整合

  • ISO/IEC 42001 § 9.1: 継続監視の証跡が必要。Logpush + S3 で 6 年分 (Anthropic 保持と同等) を
    保管しておくことで、年次サーベイランス審査でギャップが生じない。
  • SOC 2 Trust Service Criteria CC7.2: 変更の監視と異常検知の証跡が必要。
    Activity Feed の actor_type / ip_address が監査証跡として機能する。
  • 実務的な保管期間設計: SIEM Hot 1 年 + コールドアーカイブ 7 年を推奨。
    Anthropic の 6 年を超える 7 年設定はソースが消えた後でも証跡が残る。

監査レポートの定期出力 (ISO/IEC 42001 / SOC 2 監査向け)

定期レポートの種類と出力源

レポート 頻度 データソース 主な受け手
AI 利用ダッシュボード 週次 CASB Findings (Weekly Digest 機能) セキュリティ責任者
DLP インシデントサマリー 月次 SIEM (Logpush casb_findings) DLP チーム / 法務
Access Security 棚卸し 四半期 Compliance API /v1/compliance/organizations 系 IT 管理 / CISO
ISO/IEC 42001 § 9.1 証跡 年次 (監査前) コールドアーカイブ + SIEM 外部監査法人
SOC 2 Type II 準備 年次 Activity Feed + CASB Findings 外部監査法人

月次 DLP レポート生成の curl 例

# 過去 30 日の DLP カテゴリ Findings を JSON で取得
# (Cloudflare API 経由で CASB findings を列挙)
START_DATE=$(date -u -v-30d '+%Y-%m-%dT%H:%M:%SZ' 2>/dev/null || \
             date -u -d '30 days ago' '+%Y-%m-%dT%H:%M:%SZ')

curl -s "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/casb/findings" \
  -H "X-Auth-Email: $CF_EMAIL" \
  -H "X-Auth-Key: $CF_API_KEY" \
  -G \
  --data-urlencode "category=data_exposure" \
  --data-urlencode "integration=claude" \
  --data-urlencode "detected_at.gte=$START_DATE" \
  | jq '.result | group_by(.severity) | map({severity: ..severity, count: length})'

ISO/IEC 42001 監査向け Compliance API 直接照会例

# 四半期棚卸し: 組織ロール一覧と権限の取得
curl -s "https://api.anthropic.com/v1/compliance/organizations/$ORG_UUID/roles" \
  -H "x-api-key: $COMPLIANCE_KEY" \
  -H "anthropic-version: 2023-06-01" \
  | jq '.data[] | {role_id: .id, name: .name, permissions: [.permissions[].name]}'

# Primary Owner / Admin ユーザー一覧 (高権限棚卸し)
curl -s "https://api.anthropic.com/v1/compliance/organizations/$ORG_UUID/users" \
  -H "x-api-key: $COMPLIANCE_KEY" \
  -H "anthropic-version: 2023-06-01" \
  | jq '.data[] | select(.role == "primary_owner" or .role == "admin") | {email, role, created_at}'

■ベストプラクティス

最小権限の scope 設計 (delete は要求しない / read 系のみ)

Compliance Access Key の 4 スコープのうち、Cloudflare CASB の用途では以下の 2〜3 のみを付与する。

スコープ CASB 用途での必要性 付与指針
read:compliance_activities Activity Feed 取得 (API key 使用状況、組織変更 event) 付与
read:compliance_user_data chat / file / project / member のコンテンツ取得 付与
read:compliance_org_data organizations / roles / groups メタデータ 必要な場合のみ付与
delete:compliance_user_data chat / file / project の永続削除 付与しない

delete:compliance_user_data を持つ鍵が漏洩すると、組織内の全会話・ファイル・プロジェクトを
取り消し不可の形で消去できる。CASB は検出ツールであり削除は人手で判断すべき操作なので、
この scope を CASB 鍵に含めることは設計上の誤りとみなす。

# スコープ設計の意思決定ツリー
CASB 用途か?
 ├─ Yes → delete scope は付与しない
 │         read:compliance_activities + read:compliance_user_data で開始
 │         グループ名の人間可読化が必要なら read:compliance_org_data を追加
 └─ No (eDiscovery / 法的保全など) → 別鍵を発行し、delete scope を別管理

DLP プロファイルの 3 層設計 (Critical / Confidential / Internal)

Cloudflare DLP プロファイルは Claude の chat / file / artifact に横断適用される。
以下の 3 層に分けて設計することで、誤検知率と見落とし率のバランスを取る。

3 層モデル

プロファイル名 検出対象 Severity 対応
Critical Regulatory-PII クレジットカード番号 (PCI DSS)、PHI (HIPAA)、EU 個人識別子 (GDPR) Critical 即時ブロック要求 + インシデント起票
Confidential Internal-IP 未公開財務数字・M&A コードネーム・顧客提案書 ID (正規表現 + キーワード辞書) High SOC 確認後に対処
Internal Business-Sensitive 組織内コードネーム・プロジェクト略称・内部プロセス文書 Medium 週次レビュー

Cloudflare DLP プロファイル作成例 (API)

# Critical 層: クレジットカード番号検出プロファイル
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/dlp/profiles/custom" \
  -H "X-Auth-Email: $CF_EMAIL" \
  -H "X-Auth-Key: $CF_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "critical-pci-pii",
    "description": "Credit card numbers, SSN, EU personal identifiers",
    "entries": [
      {"name": "Credit Card Numbers", "enabled": true, "type": "predefined",
       "predefined_id": "0001"},
      {"name": "Social Security Numbers", "enabled": true, "type": "predefined",
       "predefined_id": "0003"}
    ]
  }'

# Confidential 層: 内部コードネーム辞書 (例: M&A コードネーム "ProjectSakura")
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/dlp/profiles/custom" \
  -H "X-Auth-Email: $CF_EMAIL" \
  -H "X-Auth-Key: $CF_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "confidential-internal-ip",
    "entries": [
      {"name": "MA-CodeName-ProjectSakura", "enabled": true, "type": "custom",
       "pattern": {"regex": "ProjectSakura|SAKURA-[0-9]{4}", "require_count": 1}}
    ]
  }'

多言語環境での注意

Claude は日本語での業務利用が増えている。英語パターンのみでは見落とす。
以下の日本語 PII を正規表現で補完する:

マイナンバー: \d{4}[\s-]?\d{4}[\s-]?\d{4}
運転免許番号: \d{2}-\d{2}-\d{6}
健康保険証番号: \d{8}

Cowork / Connector / Claude for Chrome 機能の段階的解禁

Access Security カテゴリの Finding 3 件はいずれも「High-risk 機能が有効化されている」検出。
これらの機能は 段階的に解禁し、解禁状況を CASB で継続監視する 設計が推奨。

段階的解禁マトリクス

機能 Finding ルール名 リスク概要 解禁推奨条件
Claude for Chrome Claude for Chrome enabled for role ブラウザ上のデータを Claude が参照できる 管理デバイス限定 + DLP 設定済み
Connector (Drive/Gmail/GitHub 等) Claude Connector always allowed enabled for role 外部サービスへの自動連携 利用サービスの許可リスト承認後
Cowork (エージェント実行) Claude Cowork enabled for role ローカル実行・ツール呼び出し OTel 監視基盤整備後 + sandbox 環境評価後

段階的解禁の手順例 (Connector)

Phase 1 (初期): 全ロールで Connector を無効化
   → CASB Finding "Connector always allowed" が出ない状態が基準線

Phase 2 (パイロット): 承認済みチームのロールのみ Drive Connector を有効化
   → CASB で "Connector enabled for role: pilot_team" を監視

Phase 3 (本番展開): 月次の Finding レビューで問題がないことを確認後に拡大
   → 新しいロールへの Connector 有効化は変更管理チケットと紐付け

監視: CASB Finding で "Connector always allowed" が意図しないロールに出たら
     直ちに Admin Console で無効化し、変更履歴を Activity Feed で確認

Finding → Gateway policy 自動化と人手判断の境界

CASB Findings を Cloudflare Gateway のインライン制御に昇格させる際、
自動化して良い範囲人手判断を必須とする範囲 を明確に分ける。

自動化可 vs 人手必須の境界

アクション 自動化可否 理由
SOC チャンネルへの Finding 通知 自動化可 情報伝達のみ
Jira/ServiceNow への ticket 作成 自動化可 記録のみ
対象ユーザへの警告 Slack DM 自動化可 ブロックを伴わない
Claude Project の visibility を private に変更 条件付き自動化可 Critical DLP のみ自動 (High は人手)
Gateway で特定ユーザの Claude アクセスを遮断 人手必須 業務停止につながる。誤検知時のダメージが大きい
会話・ファイルの削除 (delete scope) 人手必須 + 二重承認 取り消し不可。法的証拠としての保全義務とも競合

SOAR playbook の骨格 (Tines/Splunk SOAR)

# Finding: DLP Critical (PCI data in chat) への自動対応例
trigger:
  source: cloudflare_casb_webhook
  condition: severity == "critical" AND category == "data_exposure"

actions:
  - step: notify_soc
    type: slack_message
    channel: "#sec-incidents"
    message: "CRITICAL DLP Finding: {{ finding.title }} | User: {{ finding.actor_email }}"

  - step: create_ticket
    type: jira_create_issue
    project: SEC
    priority: High
    description: "{{ finding.description }} \n\nFinding ID: {{ finding.id }}"

  - step: wait_for_approval
    type: human_approval
    approver: "@soc-lead"
    timeout: 30m
    message: "Approve private-izing the Claude project? {{ finding.asset_id }}"

  - step: remediate_if_approved
    condition: approval == "approved"
    type: anthropic_admin_api_call  # Admin API 経由で project 設定変更
    endpoint: "PATCH /v1/organizations/{{ org_id }}/projects/{{ project_id }}"
    body: '{"visibility": "private"}'

Shadow Claude (個人 Pro / 直接 API) 検出を Gateway DNS で補う

CASB の Compliance API 統合は 組織契約の Claude Enterprise のみを対象とする。
個人 Pro / 個人 Max / 直接 API キー利用 (Shadow Claude) は構造的に見えない。

Shadow Claude 検出のための補完手段

[3 層の Shadow Claude 検出]

Layer 1: Cloudflare Gateway (SWG) による DNS/HTTP 観測
   → 管理デバイスが claude.ai にアクセスしているトラフィックを検出
   → Enterprise tenant 外の利用も同じドメインなので「アクセス数」は把握可能
   → 但し Enterprise か個人かの区別はできない (Tenant ID ベースの識別は別途 Tenant Restriction)

Layer 2: Tenant Restriction ヘッダ挿入 (Cloudflare Gateway / Zscaler / Netskope)
   → Cloudflare Gateway の HTTP policy で claude.ai 宛リクエストに
     Tenant Restriction 用のヘッダを強制付与 (具体ヘッダ名は Anthropic Help Center の Tenant Restrictions ページを参照)
   → org-id が合わないリクエストは Anthropic 側でエラー (個人アカウントでのアクセスをブロック)

Layer 3: IdP (Okta/Entra) アプリカタログでの Shadow App 検出
   → SSPM (SaaS Security Posture Management) や IdP のアプリ利用ログで
     claude.ai を "Approved" に分類し、Personal 利用の OAuth トークンを棚卸し

Layer 4: Shadow IT Discovery (Cloudflare Gateway の HTTP ログ分析)
   → URL category "Generative AI" で全 AI SaaS アクセスを可視化
   → api.anthropic.com への直接アクセス (Claude API 直叩き) も検出

Tenant Restriction 設定の概念 (Cloudflare Gateway HTTP Policy)

HTTP Policy:
  Selector: hostname in {claude.ai, api.anthropic.com}
  Action: Allow
  HTTP Response Headers: Add
    "Cloudflare-Access-JWT-Assertion": <CF Access JWT>
    (Anthropic Tenant Restriction ヘッダ: support.claude.com 記事参照)

注意: Tenant Restriction の実装方法は Cloudflare / Zscaler / Palo Alto / Netskope で異なる。
詳細は Anthropic Help Center: Tenant Restrictions を参照。


EU/JP データレジデンシー要件への対応 (Bedrock/Vertex 経由の検討)

Anthropic first-party のデータレジデンシー制約

設定 利用可能値 EU/JP 対応
inference_geo (per-request) "global" / "us" のみ EU/JP は提供なし
workspace geo (at-rest) "us" のみ EU/JP は提供なし

Claude Enterprise を first-party で使う限り、データの静止場所は US 固定
EU/JP データレジデンシーが法的要件の場合は以下の代替経路を検討する。

代替経路の比較

経路 EU リージョン JP リージョン Compliance API
Anthropic first-party US/global のみ US/global のみ 利用可
AWS Bedrock Frankfurt (eu-central-1) 等で利用可 東京 (ap-northeast-1) は Anthropic 一次確認未完 Compliance API は first-party 専用 → 別途設計が必要
Google Vertex AI EU リージョンで利用可 東京リージョンは Anthropic 確認未完 同上

EU/JP 要件がある場合の設計指針

1. データ at-rest の保存場所 (Bedrock/Vertex EU/JP リージョン) を確保
   └─ チャット本文や添付の EU/JP 物理保管は達成可能

2. Compliance API による監査クエリは api.anthropic.com (US) 経由になる
   └─ 「データは EU に置くが、監査 API は US を通る」という
      越境転送の二層構造を DPO に説明する必要がある
   └─ GDPR Standard Contractual Clauses (SCC) の締結が事実上必須

3. Cloudflare CASB + Compliance API の組み合わせを EU/JP で使う場合:
   └─ CASB のスキャンは US 経由のため、Bedrock/Vertex の EU 保管と
      CASB の US 経由スキャンの両方が DPIA の対象になる

4. 現実的な対処:
   - EU/JP 要件が strict なら Bedrock/Vertex + 自前 Compliance Pipeline を検討
   - 緩和可能なら first-party Claude Enterprise + SCC + DPIA で対処

LLM Gateway (AI Gateway / Portkey / LiteLLM) との並走パターン

CASB は out-of-band の事後監査。LLM Gateway は inline のリアルタイム制御。
両者は競合しない — 役割を分担させる設計が正しい。

並走パターンの役割分担

[ユーザー/アプリ]
     │
     ▼ (全 LLM トラフィック)
[LLM Gateway: Cloudflare AI Gateway / Portkey / LiteLLM]
  ├─ inline DLP: prompt 送信前に PII 検出・マスク
  ├─ model routing: Sonnet / Opus / Haiku の振り分け
  ├─ token budget 制御 (コスト管理)
  ├─ rate limiting (ユーザー別/チーム別)
  ├─ prompt injection 検出 (Firewall for AI)
  └─ semantic caching
     │
     ▼ (フィルタ通過後のリクエスト)
[Anthropic Claude Enterprise API]
     │
     ▼ (Compliance API / out-of-band)
[Cloudflare CASB]
  ├─ chat / file / project / artifact の事後 DLP スキャン
  ├─ Access Security (Cowork/Connector/Chrome の有効化状況)
  ├─ API key hygiene
  └─ Findings → SIEM / SOAR

Cloudflare AI Gateway との組み合わせ例

# Cloudflare AI Gateway 経由で Claude を呼ぶ (DLP inline + CASB out-of-band 両立)
curl https://gateway.ai.cloudflare.com/v1/$ACCOUNT_ID/claude-gateway/anthropic/v1/messages \
  -H "X-Auth-Key: $CF_WORKER_TOKEN" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "業務要件の分析をしてください"}]
  }'
# AI Gateway: DLP でプロンプトを inline スキャン
# CASB:      生成された会話を後から Compliance API で事後スキャン

LiteLLM Proxy との並走 (OSS 選択肢)

# litellm_config.yaml (抜粋)
model_list:
  - model_name: claude-sonnet
    litellm_params:
      model: anthropic/claude-sonnet-4-6
      api_key: os.environ/ANTHROPIC_API_KEY

general_settings:
  # 全リクエストのログを S3 に保存 (Compliance API と相補的)
  store_model_in_db: true
  callbacks: ["s3"]
# LiteLLM が inline ログ、CASB が Claude UI 側の out-of-band 監査を担う二重カバレッジ

■トラブルシューティング

症状 / 原因 / 対処 一覧表

# 症状 主な原因 対処
1 API key 認証エラー (401) 鍵の種別違い / 鍵が失効 / typo 下記参照
2 rate limit 超過 (429) 600 req/min 超過 / 複数コンシューマー競合 下記参照
3 Findings が表示されない Compliance API 未有効化 / DLP プロファイル未設定 / Console 組織に chat 本文なし 下記参照
4 誤検知 (false positive) internally-shared を public と誤判定 / archived ユーザーを inactive と誤判定 下記参照
5 EU residency 顧客が困る workspace geo が US のみ 下記参照
6 Claude Code CLI / Cowork が監査に出ない 構造的制約: Compliance API の対象外 下記参照
7 DLP プロファイル変更後に旧データが検出されない modification event 起点のスキャン仕様 下記参照

1. API key の認証エラー (401)

症状: Compliance API へのリクエストが 401 Unauthorized を返す。
CASB ダッシュボードで "Integration connection failed" が表示される。

主な原因と確認手順:

# 1. 鍵の種別を確認 (prefix で判断)
echo $KEY | cut -c1-15
# sk-ant-api01-... → Compliance Access Key (全エンドポイント可)
# sk-ant-admin01- → Admin API key (Activity Feed のみ)
# sk-ant-api03-... → モデル推論用 API key (Compliance API は 403)

# 2. 直接テストして 401 か 403 かを切り分け
curl -s -o /dev/null -w "%{http_code}" \
  https://api.anthropic.com/v1/compliance/activities?limit=1 \
  -H "x-api-key: $KEY" \
  -H "anthropic-version: 2023-06-01"
# 401 → 鍵自体が無効 (Revoked / typo / 別 org の鍵)
# 403 → 鍵は有効だが scope 不足 (必要: read:compliance_activities)

# 3. 鍵の有効性を claude.ai で確認
# claude.ai > Organization settings > Data and privacy > Compliance API
# 鍵が Revoked 状態 / リストに存在しない場合は再発行

対処:

  • 401: 新しい Compliance Access Key を Primary Owner が発行し、CASB に再設定する。
  • 403: 鍵のスコープを確認。scopeは immutable なので不足している場合は再発行が必要。
    403 レスポンスボディ "Got": [...], "Needed": [...] でどの scope が足りないか確認する。

2. rate limit 超過 (429) — 600 req/min budget の共有

症状: CASB のスキャンが断続的に停止する / Findings の更新が止まる。
429 Too Many Requests が Compliance API のログに記録される。

原因の特定:

# rate limit ヘッダを確認
curl -I https://api.anthropic.com/v1/compliance/activities?limit=1 \
  -H "x-api-key: $COMPLIANCE_KEY" \
  -H "anthropic-version: 2023-06-01" \
  | grep -E 'ratelimit|retry-after'

# 出力例:
# anthropic-ratelimit-requests-limit: 600
# anthropic-ratelimit-requests-remaining: 0     ← 0 なら枯渇
# anthropic-ratelimit-requests-reset: 2026-05-22T10:31:00Z
# retry-after: 45

対処:

  1. 複数コンシューマーを把握する: 同じ parent org の Compliance API を叩いているツールを列挙し、
    CASB 以外のコンシューマー (Cribl/SIEM forwarder / 自前スクリプト) の req/min を測定する。
  2. non-CASB コンシューマーのスケジュールを分散: レポートスクリプトは業務時間外 (深夜) に移動。
  3. CASB 以外のツールは CASB → Logpush 経由で取得: Compliance API を直接叩かず、
    Cloudflare Logpush 経由で Findings / Activity を受け取る設計に変更する。
  4. 429 時は cursor を advance しない: Anthropic 公式推奨。バックオフ後に同 cursor で再試行する。

3. Findings が表示されない

症状: CASB ダッシュボードに Claude の Finding が一件も出ない。

原因の切り分けフロー:

Step 1. Compliance API が有効化されているか確認
   claude.ai > Organization settings > Data and privacy > Compliance API
   → "Enabled" と表示されていない場合は Primary Owner が有効化する

Step 2. Cloudflare CASB の Integration が接続できているか確認
   Cloudflare Zero Trust > CASB > Integrations > Anthropic
   → Status が "Connected" になっているか
   → Connection Failed の場合は API key の再設定 (→ 原因1)

Step 3. DLP プロファイルが設定されているか確認 (DLP Finding の場合)
   DLP カテゴリの Finding は DLP プロファイルが設定されていないと生成されない
   → Cloudflare Zero Trust > DLP > Profiles にプロファイルが存在するか
   → CASB Integration に DLP プロファイルが紐付いているか

Step 4. 対象 Org が Claude Console (Platform) 組織のみの場合
   Claude Console 組織には chat 本文が存在しない
   → DLP Finding は原理的に出ない (Activity Feed のみが対象)
   → claude.ai 側の linked organization が存在するか確認

Step 5. 初回スキャンの完了を待つ
   初回統合後のフルスキャンには数時間〜1 日かかる
   → Integration 作成から 24h 待ってから確認する

4. 誤検知 (internally-shared を public 誤判定 / archived ユーザーを inactive 誤判定)

症状: Finding が発生したが、実際には問題のない設定だった。
Cloudflare 公式トラブルシューティングが明示的に認めている既知の問題。

誤検知パターン 原因 対処
"Project visible across organization" が組織全体共有でないのに発生 共有スコープの判定ロジックの誤判定 Finding を "Ignore" し、Cloudflare Support に報告 (developers.cloudflare.com/cloudflare-one/integrations/cloud-and-saas/troubleshooting/casb/ の feedback フォームへ)
archived ユーザーが "Inactive user" Finding として出続ける SCIM deprovision 済みユーザーの残存ステータス Anthropic Admin Console でユーザーが実際に deactivated されているか確認。された場合は Support に feedback
DLP Finding が test fixture / サンプルデータにマッチ 正規表現が文脈なしでパターンマッチ DLP プロファイルに除外パターン (NOT CONTAINS "test" AND NOT CONTAINS "example") を追加

誤検知の管理フロー:

Finding 受信
  → Cloudy Summary と Finding 詳細を確認
  → 実際のリスクか誤検知か判断
     ├─ 実リスク → 通常トリアージフローへ
     └─ 誤検知 → CASB ダッシュボードで "Ignore" + タグ付け
                   → 週次で Ignore 件数を集計し、精度改善要求を Cloudflare Support へ

5. Workspace geo が US のみで EU residency 顧客が困る

症状: EU データ居住要件のある組織が Claude Enterprise を first-party で使えない。
または first-party を使っているが GDPR DPO から「EU 外にデータが出ている」と指摘された。

原因: Anthropic の workspace geo は us のみ提供。EU/JP は未提供 (2026-05 時点)。

対処オプション:

オプション EU データ保管 Compliance API 備考
A: Anthropic first-party + SCC US のみ 利用可 GDPR Art. 46 SCC 締結で越境転送を正当化
B: AWS Bedrock EU リージョン EU 可 利用不可 (別途設計が必要) Bedrock API への Claude Code / API 利用は EU に留まる
C: Google Vertex AI EU リージョン EU 可 同上
D: ZDR (Zero Data Retention) + A US 経由だがデータ非保持 縮退 EU 居住者のデータが US を通過する点は残る

オプション A を選ぶ場合の最低手順:

  1. Anthropic と Data Processing Agreement (DPA) を締結。
  2. Standard Contractual Clauses (SCC) を DPA に付属させる。
  3. DPIA を作成し、EU から US への転送の必要性・比例性を文書化。
  4. 従業員・ユーザーへの透明性通知を行う (GDPR Art. 13/14)。

6. Claude Code CLI / Cowork が監査に出てこない (構造的制約、OTel で補う)

症状: Claude Code CLI や Cowork (エージェント実行) の操作が
Compliance API にも CASB Findings にも現れない。

原因: 第三者の解説では「Cowork のエージェントセッションは Audit Logs / Compliance API / Data Exports に含まれない」と報告されています (General Analysis / MintMCP 解説。Anthropic 公式 docs での明示は本記事執筆時点では未確認)。Cowork の role 有効化自体は CASB の Finding ルール「Claude Cowork enabled for role」で検出されます。

ローカル実行型エージェントの会話ログはユーザーのラップトップ上にのみ存在するため、
クラウド側の Compliance API では取得できない。

補完手段 (OTel + 複数ソース):

Claude Code CLI の監査 (Compliance API では取れない部分)
  │
  ├─ 1. OpenTelemetry (OTel) ストリーム
  │      Claude Code は OTel exporter をサポート
  │      → OTEL_EXPORTER_OTLP_ENDPOINT に自社 OTel collector を向ける
  │      → tool call / span / model invocation が SIEM に流れる
  │      ※ Anthropic: "OTel is not a replacement for audit logging"
  │        (会話本文そのものは OTel に乗らないケースあり)
  │
  ├─ 2. LLM Gateway 経由の強制
  │      Claude Code を直接 api.anthropic.com に向けず
  │      LiteLLM / Portkey / AI Gateway 経由に統制
  │      → Gateway 側でログ取得
  │      (管理デバイスの Tenant Restriction と組み合わせる)
  │
  ├─ 3. EDR (Endpoint Detection & Response)
  │      claude-code プロセスの起動・API 通信を端末レベルで記録
  │
  └─ 4. コードリポジトリ監査
         Claude Code が生成・コミットしたコードを GitHub / GitLab
         の commit log / PR レビューで追跡

Claude Code の OTel 設定例:

# Claude Code を OTel 経由で社内 collector に向ける
export OTEL_EXPORTER_OTLP_ENDPOINT=https://otel-collector.internal:4318
export OTEL_SERVICE_NAME=claude-code
export OTEL_RESOURCE_ATTRIBUTES="team=engineering,env=production"

# Claude Code 実行 (以後 OTel spans が collector に送信される)
claude --model claude-sonnet-4-6 "このコードをレビューしてください"

7. DLP プロファイル変更後の後付け検出 — modification event 起点なので旧データに当たらない

症状: DLP プロファイルを追加・変更した後、既存のファイル/会話に対して
Findings が生成されない。新しいアップロードやメッセージには Findings が出る。

原因: Cloudflare CASB の DLP スキャンは modification event をトリガーにして動作する。
プロファイルを後付けしても、既存の変更のないファイルはスキャン対象にならない。
この動作は Cloudflare 公式ドキュメントで明示されている。

対処:

【即時対応】
既存ファイルの手動スキャン補完スクリプト (Python 例)

import anthropic
import json

client = anthropic.Anthropic(api_key=COMPLIANCE_KEY)

# 1. 全プロジェクトのファイル一覧を取得
projects = client.get("/v1/compliance/apps/projects")

# 2. 各ファイルのコンテンツを GET して DLP プロファイルに突き合わせる
#    (Cloudflare DLP API で自前チェック or 外部 DLP ツールで代替)
for project in projects["data"]:
    attachments = client.get(f"/v1/compliance/apps/projects/{project['id']}/attachments")
    for att in attachments["data"]:
        content = client.get(f"/v1/compliance/apps/chats/files/{att['id']}/content")
        # ここで DLP パターンマッチ処理 (正規表現 / Presidio 等)
        check_dlp(content, project["id"], att["id"])

【予防策】
- 統合作成時に DLP プロファイルを同時設定する (後付けしない)
- DLP プロファイルの変更は「変更管理」として記録し、
  変更前の全ファイルに対して手動補完スキャンをスケジュールする
- 重大な DLP ポリシー変更 (Critical 層の新規追加等) は
  integration を一時削除・再作成することで full scan をトリガーする方法も検討
  (但し削除中は Finding が生成されないことに注意)

まとめ

Cloudflare は 2026-05-21、自社の API ベース CASB に Anthropic Compliance API 統合を追加し、Claude Enterprise 組織内の会話・添付・プロジェクト共有・生成物を out-of-band で監査できるようになりました。AI 利用統制の論点は「入口で止める」から「保存物を継続監査する」へ広がっており、本統合はその実装パターンの一つです。一方で API ベース CASB は検出ラグと遮断不可という構造的限界を持ち、Claude Code CLI / Cowork や Shadow Claude が盲点になるため、AI Gateway や IdP 制御と組み合わせたハイブリッド設計が前提となります。

この記事が少しでも参考になった、あるいは改善点などがあれば、ぜひリアクションやコメント、SNSでのシェアをいただけると励みになります!

■参考リンク

Cloudflare 公式

Anthropic 公式

Compliance API の限界・死角

フレームワーク・規制

LLM Gateway / 並走パターン

CASB アーキテクチャ