使用本指南解决通过 Codeless Connector Framework (CCF) 将 Cloudflare 日志与 Microsoft Sentinel 集成时的常见问题。
原因: Cloudflare CCF 连接器所需的 Microsoft 托管服务主体尚未在你的 Microsoft Entra ID 租户中预配。这通常发生在连接器配置页面上的 Grant tenant-wide admin consent(授予租户范围管理员同意) 按钮无法完成 OAuth 重定向时——例如由于浏览器扩展、缓存会话、冲突的已登录账户、条件访问策略,或未完成的多重身份验证 (MFA) 质询。
修复:
-
确认订阅上已注册
Microsoft.SecurityInsights资源提供程序:az provider show --namespace Microsoft.SecurityInsights --query "{state:registrationState}"输出应返回
"state": "Registered"。 -
在 InPrivate/Incognito 浏览器会话中,以持有以下 Microsoft Entra 角色之一的用户身份登录:Privileged Role Administrator、Cloud Application Administrator、AI Administrator 或 Application Administrator。
-
打开 Microsoft 托管应用程序(App ID
4f05ce56-95b6-4612-9d98-a45c8cc33f9f)的直接租户范围管理员同意 URL,将{tenant-id}替换为你的 Entra 租户 ID:https://login.microsoftonline.com/{tenant-id}/adminconsent?client_id=4f05ce56-95b6-4612-9d98-a45c8cc33f9f -
完成同意流程,包括任何 MFA 质询。
验证: 刷新 Microsoft Sentinel 中的 Cloudflare 连接器配置页面。Service Principal ID(服务主体 ID) 字段应自动填充,且不再显示 Grant tenant-wide admin consent(授予租户范围管理员同意) 按钮。然后重试连接器部署。
你看到类似以下错误的部署失败:
Deployment template validation failed: 'The resource
'Microsoft.Resources/deployments/CreateDataFlowResources'
is not defined in the template.'原因: ARM 模板要求 Azure Blob Storage 账户和 Microsoft Sentinel workspace(及其底层 Log Analytics workspace)位于同一 Azure 订阅和同一资源组中。当它们位于不同订阅或不同资源组时,嵌套的 CreateDataFlowResources 子部署无法解析所需资源引用,验证会失败。
此错误的一个较不常见变体发生在目标订阅未注册 Microsoft.EventGrid 资源提供程序时。
修复:
-
确认这两个资源共置在同一 Azure 订阅和同一资源组中。如果不是,请重新部署或迁移它们,使两者共享订阅和资源组。
-
在目标订阅上注册所需的资源提供程序:
az provider register --namespace Microsoft.SecurityInsights az provider register --namespace Microsoft.EventGrid -
部署后,确认 Microsoft 托管服务主体在 Storage 账户上持有这些角色分配:
Storage Blob Data ReaderStorage Queue Data Contributor
-
确认 Storage 账户的网络配置允许连接器访问 Azure Storage Queue。
验证: 重新部署连接器。Deployments 刀片应显示状态 Succeeded(成功),连接器应转为 Connected(已连接)。
你看到类似以下错误的部署失败:
Failed to create required resources for data connector.
Invalid output table schema: The following columns which exist
in the current schema do not exist in the new schema or have
different types.原因: 较早版本的 Cloudflare CCF 连接器在 Log Analytics workspace 中创建了 CloudflareV2_CL 表。部署较新的连接器版本时,ARM 模板会尝试更新此表 schema。如果新 schema 省略了当前表中存在的列,或将现有列更改为不兼容的数据类型,Azure Monitor 会拒绝该更新。
修复: 在重新部署连接器之前,通过 Azure Monitor REST API 直接更新现有表 schema。使用在工作区上持有 Log Analytics Contributor 角色的账户,从 Azure Cloud Shell 运行更新。
-
从 Cloudflare CCF 连接器解决方案包(可在 Microsoft Sentinel Content Hub ↗ 获取)下载最新的
CloudflareV2_CL.jsonschema 定义,并将其上传到 Cloud Shell 会话。 -
请求 Azure Resource Manager 访问令牌:
az account get-access-token --resource https://management.azure.com/ -
应用更新后的表 schema,将占位符替换为你的值:
az rest --method PUT \ --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.OperationalInsights/workspaces/<workspace-name>/tables/CloudflareV2_CL?api-version=2025-07-01" \ --headers "Authorization=Bearer <access-token>" "Content-Type=application/json" \ --body @CloudflareV2_CL.json
验证: 该命令以 JSON 返回更新后的表定义。重新部署 Cloudflare CCF 连接器——部署应在没有 schema 验证错误的情况下完成。
原因: Data Collection Rule (DCR) schema 与正在投递的 Cloudflare Logpush schema 不同步。常见有两种变体:
- 数据类型不匹配: 字段在 DCR
streamDeclarations中声明了错误的 Sentinel 数据类型——例如将数值字段声明为string,或将BotDetectionIDs等可变形状字段声明为除dynamic以外的任何类型。记录会被摄取,但不匹配的列会填充为null。 - 保留列名冲突: Cloudflare 字段名与 Microsoft Sentinel 保留列名 ↗ 冲突。例如,Cloudflare Network Error Logging (NEL) 数据集包含
Type字段,但Type在 Sentinel 中是保留名。具有保留名称的字段无法以其原始名称存储。
修复:
- 从 Microsoft Sentinel Content Hub ↗ 将 Cloudflare CCF 解决方案升级到最新版本。新版本会逐步纠正连接器随附的字段数据类型,并增加对新 Cloudflare Logpush 字段的支持。
- 如果升级后缺失字段仍然存在——例如因为 DCR 已被自定义——请应用手动修复:
-
对于数据类型不匹配: 在 DCR
streamDeclarations和CloudflareV2_CL表定义中更新该字段的数据类型,以匹配 Cloudflare Logpush schema(例如浮点值如EdgeResponseCompressionRatio使用real,BotDetectionIDs使用dynamic)。 -
对于保留名称冲突: 在 DCR
transformKql转换中重命名该字段,并将重命名后的列添加到CloudflareV2_CL表定义。例如,要保留 NELType值:source | extend NELType = Type | project-away Type向
CloudflareV2_CL添加数据类型为string的NELType列。
-
验证: 发送一批新的 Logpush 数据,并查询 CloudflareV2_CL 中受影响的字段。值现在应已填充,不再为 null。
CCF 解决方案附带的 Cloudflare 工作簿可以加载,但不显示数据,或其查询失败,错误指示所引用的表或连接器不存在。
原因: 在较早版本中,随 Cloudflare CCF 解决方案附带的工作簿引用了旧版 Cloudflare_CL 表和旧版 CloudflareDataConnector。CCF 连接器通过解析器将数据摄取到 CloudflareV2_CL,因此即使日志正在正确摄取,针对旧版表的工作簿查询也不会返回结果。
修复: 将 Cloudflare CCF 解决方案升级到其工作簿引用 CCF 连接器解析器和 CloudflareV2_CL 表的版本。最新解决方案版本可从 Microsoft Sentinel Content Hub ↗ 获取。
验证: 重新打开工作簿。面板应填充最近的 Cloudflare 日志数据。
如果此处未涵盖你的问题:
- 查阅 Azure Marketplace 上的 Cloudflare CCF 解决方案页面 ↗,了解最新解决方案版本和部署先决条件。
- 查看 Cloudflare Logs 变更通知,了解可能影响 DCR 或表定义的近期 schema 变更。
- 涉及 Cloudflare 侧日志投递的问题,请联系 Cloudflare Support。
- 仅限于 Microsoft Azure 或 Microsoft Sentinel CCF 环境的问题,请联系 Microsoft Support。