Cloudflare は Microsoft Sentinel と連携し、Cloudflare のデータを 1 か所で分析しやすくします。このコネクターには 2 つのバージョンがあります。セットアップが簡単で、コスト管理しやすく、Sentinel Data Lake ↗ とも統合できるため、最新の Codeless Connector 連携の利用を推奨します。
Sentinel CCF Solution ↗(推奨):Codeless Connector Framework(CCF)を使うと、パートナー、上級ユーザー、開発者は、Microsoft Sentinel へデータを取り込むカスタムコネクターを作成できます。
Sentinel Function Based Connector ↗:Microsoft Sentinel 向け Cloudflare コネクターは、Azure Functions ↗ を使って Cloudflare の Logpush サービスからのセキュリティログを処理し、SIEM プラットフォームへ直接取り込みます。
このガイドでは、Azure Blob Storage を使って Cloudflare のログを Microsoft Sentinel の CCF コネクターと連携する手順を説明します。手順に沿うと、Cloudflare のログを Microsoft Sentinel 内で安全に収集、保存、分析でき、組織のセキュリティ監視とインシデント対応を強化できます。
始める前に、次の前提条件を満たしてください。
- Azure subscription:リソースの作成と管理ができる権限(
ContributorまたはOwnerロールを推奨)。 - Azure Storage account:Azure Data Lake Storage Gen2 が有効 ↗(hierarchical namespace がオン)。一般的な Logpush の Azure 送信先は標準の Blob Storage に対応しますが、CCF コネクターには hierarchical namespace が必要です。Logpush はこのアカウントに Cloudflare のログファイルを書き込みます。
- Azure Blob container:ストレージアカウント内に、Cloudflare Logpush ファイル受信用として用意します。CCF コネクターは Event Grid 経由で、このコンテナの新規ファイルを監視します。
- Microsoft Sentinel workspace:Log Analytics workspace の上にすでにデプロイされていること。コネクターの Data Collection Rule(DCR)と Data Collection Endpoint(DCE)はこの Log Analytics workspace に紐づき、取り込んだ Cloudflare のログレコードはすべてその中のテーブルに入ります。
- Cloudflare アカウント:エクスポートしたいドメインまたはアカウントへのアクセスと、Logpush ジョブを設定する権限。
CCF コネクターは、マルチテナントの Microsoft Entra アプリケーションとして登録された Cloudflare CCF コネクターアプリケーションに属するサービスプリンシパルを使って、Azure に認証します。コネクターをデプロイする ARM テンプレートは、このサービスプリンシパルへ必要なロールを自動で割り当てます。
デプロイするユーザーは、コネクターリソースをデプロイするために、Microsoft Sentinel workspace に対して Microsoft Sentinel Contributor、Contributor、または Owner が必要です。ARM テンプレートはサービスプリンシパル向けのロール割り当てを作成するため、ユーザーはストレージアカウントのスコープで Owner または User Access Administrator も必要です。Contributor と Microsoft Sentinel Contributor だけでは、ロール割り当てを作成できません。
デプロイ時、Cloudflare CCF コネクターのサービスプリンシパルは、Blob コンテナからログファイルを読むためにストレージアカウントで Storage Blob Data Reader を、Storage Queue からポインターメッセージを読んで削除するために Storage Queue Data Contributor を受け取ります。
詳細は、Microsoft のドキュメント Azure roles for Microsoft Sentinel ↗ および Azure roles for storage ↗ を参照してください。
ストレージアカウントをホストするサブスクリプションで、Microsoft.EventGrid リソースプロバイダーを登録する必要があります。Azure ポータルの Subscriptions で対象のサブスクリプションを選び、Settings > Resource providers で Microsoft.EventGrid を検索して、登録状態を確認してください。
または、次の Azure CLI コマンドを実行します。
az provider register --namespace Microsoft.EventGrid --subscription <subscription-id>
az provider show --namespace Microsoft.EventGrid --subscription <subscription-id> --query "registrationState"続行する前に、登録状態が Registered になっていることを確認してください。
デフォルトでは、コネクターのマネージドリソースが Blob コンテナのエンドポイントと Storage Queue のエンドポイントの両方に到達できるよう、ストレージアカウントはパブリックネットワークアクセスを許可する必要があります。
- Network Security Perimeter(NSP)でアクセスを制限しない場合は、ストレージアカウントの Networking ブレードを開き、Public network access を Enabled from all networks に設定します。
- 選択した仮想ネットワークまたは IPv4 CIDR 範囲でのアクセス制限は、IP 範囲と呼び出し元リージョンの親和性に関する Azure Storage ファイアウォールの制限のため、このコネクターではサポートされません。
- コンプライアンスでネットワーク制限が必要な場合は、代わりに Azure Network Security Perimeter(NSP) ↗ を使います。NSP ルールに Sentinel のサービスタグのインバウンド範囲を含め、Event Grid のシステムトピックサブスクリプションをシステム割り当てマネージド ID 配信に設定します。
選択肢の全体は、Microsoft の enabling storage network security for Sentinel ↗ を参照してください。
Azure Blob Storage アカウントと Microsoft Sentinel workspace は、同じ Azure サブスクリプションかつ同じリソースグループ に置く必要があります。これらのリソースがサブスクリプションまたはリソースグループをまたいで分かれていると、ARM テンプレートの検証時にデプロイが失敗します。詳細は トラブルシューティング を参照してください。
-
Cloudflare ダッシュボード ↗ にログインし、アカウントとドメインを選択します。
-
Analytics > Logs を開き、Logpush を選択します。
-
Create Logpush Job を選択します。エクスポートするログの種類(例:HTTP requests)を選びます。
-
送信先として Azure Blob Storage を選択します。
-
Azure Blob Storage の詳細を入力します。
- SAS Token(Shared Access Signature)
Azure ポータルで SAS トークンを生成するには、まずストレージアカウントを開きます。Data Storage で Containers を選び、対象のコンテナを選択します。設定内の Shared access signature を開きます。
writeやcreateなどの必要な権限を設定し、トークンの開始日と有効期限を指定します。設定後、SAS トークンを生成します。 -
Logpush ジョブを保存して有効化します。
詳細は、Cloudflare Logpush to Azure のドキュメント を参照してください。
- Azure ポータルにログインし、Microsoft Sentinel workspace を開きます。まだない場合は、Microsoft の オンボーディングガイド ↗ に従って Log Analytics workspace を作成し、その上で Microsoft Sentinel を有効化します。
- 左のナビゲーションで Content management の下にある Content hub を選択します。ページが空に見える場合は、更新してコンテンツ一覧の読み込みを待ってください。
- 検索バーに
Cloudflareと入力し、Enter を押します。 - Cloudflare CCF ソリューションを選択し、Install を選択します。
- ソリューションのインストール後、Manage を選択します。
- Cloudflare (Using Blob Container) (via Codeless Connector Framework) を選択し、Open connector page を選択します。
コネクターページで、次のフィールドを入力します。
- Service Principal ID:テナント内の Cloudflare CCF コネクターサービスプリンシパルのオブジェクト ID があらかじめ入ります。空の場合は、Microsoft Entra テナントで Cloudflare CCF コネクターアプリケーションに管理者の同意が付与されていることを確認し、ページを再読み込みしてください。詳細は Microsoft の 管理者同意ワークフロー ↗ を参照してください。
- Blob Container URL:Azure ポータルで、Cloudflare のログを受け取るストレージアカウントを開きます。Data storage > Containers で対象のコンテナを開き、Properties に進んで URL をコピーします。
- Storage Account Resource Group Name、Storage Account Location、Storage Account Subscription ID:ストレージアカウントの Overview ページで確認できます。
- Event Grid System Topic Name:初回デプロイでは、このフィールドは空のままにします。ARM テンプレートがトピックを自動作成します。既存デプロイを再設定する場合は、Azure ポータルの Event Grid > System topics を開き、場所で絞り込み、Source がストレージアカウントと一致するトピック名をコピーします。
Connect を選択してデプロイを開始します。完了すると、Azure ポータルに Deployment succeeded の通知が表示され、ボタンが Disconnect に変わります。
-
Azure ポータルで、Sentinel インスタンスの基盤となる Log Analytics workspace を開きます。
-
左のナビゲーションで Logs を選択します。
-
エディターに次のクエリを入力し、Run を選択します。
CloudflareV2_CL | take 10 -
Cloudflare のログレコードが返されることを確認します。
ARM テンプレートのデプロイが、次のようなエラーで失敗します。
InvalidTemplate: Deployment template validation failed:
'The resource 'Microsoft.Resources/deployments/CreateDataFlowResources' is not defined in the template.'CCF コネクターの ARM テンプレートは、単一のリソースグループスコープで動作し、ストレージアカウント、Blob コンテナ、Event Grid システムトピック、Storage Queue、Data Collection Rule(DCR)、Data Collection Endpoint(DCE)、Microsoft Sentinel workspace を同一配置のリソースとして相互参照します。これらのいずれかがデプロイスコープの外にあると、テンプレートは参照を解決できず、何も作成される前に検証が失敗します。
エラーを解消するには、次を実施します。
- 同一配置を確認する:Azure ポータルで、ストレージアカウントと Microsoft Sentinel workspace(または基盤の Log Analytics workspace)の両方を開き、Overview ブレードで Resource group と Subscription が一致することを確認します。異なる場合は、ストレージアカウントを Sentinel があるリソースグループへ移動するか、そのリソースグループに新しいストレージアカウントを作成します。
- ネットワークアクセスを確認する:ストレージアカウントでパブリックネットワークアクセスが有効か、前提条件 のとおり Network Security Perimeter が設定されているかを確認します。IPv4 CIDR アドレスによる選択的なネットワーク制限はサポートされません。
- デプロイを再実行する:リソースを揃えたあと、ARM テンプレートのデプロイを再実行します。
CreateDataFlowResourcesエラーは再発しないはずです。
ストレージ関連の失敗パターンと対処の一覧は、Microsoft の Azure Storage Blob connector troubleshooting guide ↗ を参照してください。
Sentinel コネクター(CCF および Function ベース)では、次のフィールドを利用できます。Azure へのログフィールド送信は、Enable Microsoft Azure のドキュメントにある logpush 機能で行えます。
CCF コネクターは、正規相当がある場合(例:ClientIP は SrcIpAddr、EdgeResponseStatus は HttpStatusCode)、Cloudflare のログフィールドを Microsoft Sentinel ASIM スキーマ ↗ に正規化します。スキーマ相当がないフィールドは、Cloudflare 固有の名前のまま残します。コネクターの出力テーブルに対する KQL クエリでは、次の表のフィールド名を使ってください。
パーサーのフィールド
Application
BotScore
BotScoreSrc
CacheCacheStatus
CacheResponseBytes
CacheResponseStatus
CacheTieredFill
ClientASN
ClientASNDescription
ClientDeviceType
ClientIPClass
ClientMatchedIpFirewall
ClientRefererHost
ClientRefererPath
ClientRefererQuery
ClientRefererScheme
ClientRequestPath
ClientRequestProtocol
ClientRequestQuery
ClientRequestScheme
ClientRequestURI
ClientTcpRtt
ClientTlsClientHelloServerName
ClientTlsStatus
ClientXRequestedWith
ColoCode
ConnectTimestamp
Datetime
DisconnectTimestamp
DstBytes
DstIpAddr
DstPortNumber
DvcAction
EdgeColoCode
EdgeColoID
EdgeEndTimestamp
EdgePathingOp
EdgePathingSrc
EdgePathingStatus
EdgeRateLimitAction
EdgeRateLimitID
EdgeRequestHost
EdgeResponseCompressionRatio
EdgeResponseStatus
EdgeServerIP
EdgeStartTimestamp
EventResult
EventSubType
FirewallMatchesSources
HttpContentType
HttpReferrerOriginal
HttpRequestHeaderHost
HttpRequestMethod
HttpStatusCode
HttpUserAgentOriginal
IpFirewall
MatchIndex
NetworkProtocol
NetworkRuleName
OriginProto
OriginResponseBytes
OriginResponseHTTPExpires
OriginResponseHTTPLastModified
OriginResponseTime
OriginSSLProtocol
OriginTcpRtt
OriginTlsCipher
OriginTlsFingerprint
OriginTlsMode
OriginTlsProtocol
OriginTlsStatus
OriginatorRayID
ParentRayID
ProxyProtocol
RayID
SecurityLevel
SrcBytes
SrcGeoCountry
SrcIpAddr
SrcPortNumber
TimeGenerated
Timestamp
TlsCipher
TlsVersion
WAFAction
WAFFlags
WAFMatchedVar
WAFProfile
WAFRuleID
WAFRuleMessage
WorkerCPUTime
WorkerStatus
WorkerSubrequest
WorkerSubrequestCount
ZoneID
ワークブックのフィールド
ClientDeviceType
SrcIpAddr
ClientIPClass
ClientRequestProtocol
ClientRequestReferer
ClientRequestURI
ClientRequestUserAgent
EdgePathingOp
EdgePathingSrc
EdgePathingStatus
EdgeResponseContentType
HttpRequestMethod
HttpStatusCode
TimeGenerated
threat
分析ルール
ClientIPClass
ClientRequestURI
DstBytes
HttpRequestMethod
HttpStatusCode
HttpUserAgentOriginal
SrcBytes
SrcGeoCountry
SrcIpAddr
TimeGenerated
WAFAction
WAFRuleID
WAFRuleMessage
ハンティングクエリ
ClientRequestURI
ClientTlsStatus
EdgeRequestHost
EdgeResponseStatus
HttpStatusCode
HttpUserAgentOriginal
NetworkRuleName
OriginTlsStatus
SrcGeoCountry
SrcIpAddr
TimeGenerated
Cloudflare の CCF Sentinel Solution をダウンロードする ↗
Microsoft Data Lake の概要 ↗
CCF プラットフォームについて ↗