与 Microsoft Sentinel 集成

Last published : Oct 06, 2026
您可以将 NetScaler Console 与 Microsoft Sentinel 集成,以将以下分析数据从 NetScaler Console 导出到 Microsoft Sentinel:
  • WAF 违规
  • Bot 违规
  • SSL 证书洞察
  • 网关洞察
  • 指标和事件
  • NetScaler® Console 审计日志
Microsoft Sentinel 提供集中式数据收集,可从应用程序、服务器等各种来源收集数据。作为管理员,您可以在 Microsoft Sentinel 中报告洞察或违规后查看数据并做出决策。
要成功集成,请确保您拥有有效的 Azure 订阅,然后按照每个部分下的步骤操作:

配置 Log Analytics 工作区

需要 Log Analytics 工作区来存储和分析收集的数据。
  1. 登录 Azure。
  2. 单击 创建资源。
    资源
  3. 在搜索栏中,键入 log analytics workspace 并在 Log Analytics Workspace 下单击 Create。
    日志分析工作区
  4. 在 Log Analytics Workspace 主页中,单击 Create。
    工作区创建
  5. 在 创建 Log Analytics 工作区 中:
    1. 选择活动的订阅和资源组。
      注意:
      如果您有权限,也可以单击 Create new 以添加资源组。
    2. 指定一个您选择的名称。
    3. 从列表中选择您的区域。
    4. 单击 查看 + 创建。
      工作区创建预最终阶段
    5. 出现验证通过消息。单击 Create 以部署工作区。
      工作区创建
    6. 您可以看到部署正在进行的消息。在看到部署完成消息后,单击 Go to resource。
      工作区资源
      工作区已成功创建。

创建 Microsoft Entra 应用程序

您必须创建一个与 Azure 订阅关联的 Entra 应用程序,以便代表 Log Analytics 工作区进行通信。创建应用程序后,您还必须授予 Microsoft Sentinel Contributor 角色权限。该应用程序还提供诸如 Client ID、Tenant ID 和 Client Secret 等详细信息。建议您记下这些详细信息。在 NetScaler Console 中创建订阅以完成集成过程时,需要这些详细信息。
  1. 在 Azure 门户中,在搜索栏中键入关键字。
  2. 点击 Microsoft Entra ID 选项。
    Entra 应用程序
  3. 单击 Add 并选择 App registration。
    注册应用程序
  4. 为应用程序指定名称,在 Supported account types 下选择默认选项,然后单击 Register。
    应用程序注册
  5. 注册应用程序后:
    1. 记下 Client ID 和 Tenant ID。
      客户端和租户 ID
    2. 为您的应用程序创建 Secret ID。单击 Certificates & secrets,然后在 Client secrets 下单击 New client secret。提供描述、有效期,然后单击 Add 为您的应用程序创建 Secret ID。
      客户端密钥 ID
    3. 您的应用程序的详细信息已显示。请务必在密钥创建后立即记下值下显示的 ID。如果您导航到任何其他 GUI 选项,此值将隐藏。
      值 ID

使用 Microsoft Entra ID 数据连接器将数据发送到 Microsoft Sentinel

Microsoft Entra ID 日志提供有关访问您的 Entra 租户的用户、应用程序和网络的全面信息。有关更多信息,请参阅使用 Microsoft Entra ID 数据连接器将数据发送到 Microsoft Sentinel。

配置数据收集终结点

您必须创建一个数据收集终结点以获取终结点 URL。在 NetScaler Console 中创建订阅时需要此项。
  1. 在 Azure 门户中,在Azure 服务下,选择数据收集终结点或在搜索栏中键入关键字。
    DCR 选择
  2. 在数据收集终结点页面中,单击创建。
    DCR 创建
  3. 在创建数据收集终结点中:
    1. 指定您选择的终结点名称
    2. 选择 订阅、资源组 和 区域。
    3. 单击审核 + 创建。
    4. 在看到验证通过消息后,点击 创建。
您必须记下端点 URL。在 数据收集端点 主页面中,选择已创建的端点,点击 JSON 视图,并记下端点 ID。
DCR ID

创建表以导出数据

您必须为要从 NetScaler Console 导出到 Microsoft Sentinel 的每个洞察创建表并提供 JSON 信息。您可以参考以下有关每个洞察的表要求的详细信息:
洞察 所需的表总数
SSL 洞察 3
WAF 1
Bot 1
网关洞察 5
事件 1
指标 1
审计日志 1
每个数据收集规则 (DCR) 最多可以创建 10 个表。超过 10 个表,您必须创建另一个 DCR。
  1. 在 Azure 门户中导航到您的工作区,然后单击“设置”下的“表”。
  2. 单击“创建”并选择“新建自定义日志(基于 DCR)”
    表
  3. 在“创建自定义日志”中:
    1. 指定表名称。表名称必须采用 console_insightname 格式。例如:console_ns_sslvserver、console_ns_ssl_certkey。您可以参考步骤 4 获取适用于每个洞察的表名称。
    2. 提供描述以添加有关表名称的更多信息。这是可选的。
    3. 创建新的数据收集规则并添加。
    4. 从列表中选择数据收集终结点。
      表参数
    5. 单击 下一步。
  4. 在“架构和转换”选项卡中,您必须上传要导出的洞察的 JSON 示例日志。您可以为每个洞察使用以下示例 JSON 并创建一个 JSON 文件以上传:
    洞察 JSON 要使用的表名称
    SSL (1) {"id": "3eb05733-c326-493c-9aa0-f7db3a6b4277", "ns_ip_address": "10.106.186.141", "name": "zeta_192_168_110_250", "vsvr_ip_address": "", "vsvr_port": -1, "vsvr_type": "", "state": "", "partition_name": "", "display_name": "10.106.186.141", "poll_time": 1716539986, "managed": "f", "ssl2": "f", "ssl3": "t", "tls10": "t", "tls11": "t", "tls12": "t", "dh": "f", "ersa": "t", "sslprofile": "", "tls13": "f", "dhkeyexpsizelimit": "DISABLED", "pushenctriggertimeout": 1, "sessionticket": "", "includesubdomains": "f", "sessionticketkeyrefresh": "", "ssllogprofile": "", "serverauth": "", "ssltriggertimeout": 100, "ersacount": 0, "strictcachecks": "NO", "dhfile": "", "sessreuse": "ENABLED", "redirectportrewrite": "DISABLED", "skipclientcertpolicycheck": "", "tls13sessionticketsperauthcontext": 1, "cipherredirect": "DISABLED", "dropreqwithnohostheader": "NO", "sessionticketlifetime": -1, "maxage": 0, "pushenctrigger": "Always", "strictsigdigestcheck": "f", "sslredirect": "DISABLED", "sessionkeylifetime": -1, "alpnprotocol": "", "clientauthuseboundcachain": "", "sesstimeout": 120, "clientcert": "", "snihttphostmatch": "CERT", "preload": "NO", "prevsessionkeylifetime": -1, "sessionticketkeydata": "", "encrypttriggerpktcount": 45, "cleartextport": "", "ssliocspcheck": "", "hsts": "f", "sslinterception": "", "commonname": "", "sslireneg": "", "ocspstapling": "DISABLED", "quantumsize": 8192, "insertionencoding": "Unicode", "sslimaxsessperserver": -1, "cipherurl": "", "pushflag": 0, "zerorttearlydata": "DISABLED", "allowextendedmastersecret": "", "dhekeyexchangewithpsk": "NO", "clientauth": "DISABLED", "denysslreneg": "NONSECURE", "sendclosenotify": "YES", "dhcount": 0, "snienable": "DISABLED", "table_name": "ns_sslvserver"} console_ns_sslvserver
    SSL (2) {"id": "a6673ab2-0b59-47b9-b530-bc30fb2b937c", "ssl_certificate": "/nsconfig/ssl/ca-cert.pem", "ssl_key": "/nsconfig/ssl/ca-key.pem", "certkeypair_name": "athul-ca", "cert_format": "PEM", "days_to_expiry": 281, "ns_ip_address": "10.106.186.141", "status": "Valid", "device_name": "10.106.186.141", "file_location_path": "", "certificate_data": "", "key_data": "", "poll_time": 1717434335, "no_domain_check": "f", "version": 3, "serial_number": "7B34B6A6A1A79E0FF168242D7BCFF78F04C9EE66", "signature_algorithm": "sha256WithRSAEncryption", "issuer": "C=IN,ST=KA,L=BAN,O=CIT,OU=ADM,CN=A", "valid_from": "Mar 12 08:51:11 2024 GMT", "valid_to": "Mar 12 08:51:11 2025 GMT", "subject": "C=IN,ST=KA,L=BAN,O=CIT,OU=ADM,CN=A", "public_key_algorithm": "rsaEncryption", "public_key_size": 4096, "no_of_bound_entities": 0, "partition_name": "", "display_name": "10.106.186.141", "hostname": "athulsadc", "key_name": "", "subjaltname": "", "managed_by": "", "certificate_dn": "", "linkcertkeyname": "", "table_name": "ns_ssl_certkey"} console_ns_ssl_certkey
    WAF [{"ip_address": "10.106.185.156", "ctnsappname": "vserver_1", "severity": 2, "violation_type": 19, "violation_type_desc": "Start URL", "block_flags": 1, "transformed_flags": 0, "not_blocked_flags": 0, "country_code": "-NA-", "region_code": "-NA-", "city": "-NA-", "latitude": 200.0, "longitude": 200.0, "signature_category": "", "attack_category": 2, "attack_category_desc": "Broken Authentication and Session Management", "total_attacks": 1, "rpt_sample_time": 1704783773, "source_ip_address": 174766492, "attack_time": 1704783538, "profile_name": "appfw_cs_lb_prof", "session_id": "", "http_req_url": "https://10.106.192.54/csrf_ffc/ffc.html?field10=asfasd", "violation_name": "-NA-", "violation_value": "-NA-", "violation_location": 4, "violation_threat_index": 5, "app_threat_index": 5, "http_method": 0, "violation_action": 3, "violation_action_desc": "Blocked", "severity_type": 2, "severity_type_desc": "Medium", "iprep_score": 0, "iprep_category": 0, "counter_value": 0, "appname": "vserver_1_10.106.185.156_lb", "violation_category": 12, "violation_category_desc": "Start URL", "source_ipv6_address": "", "true_client_ip": "\\N", "backend_vserver": "", "backend_appname": "", "transactionId": "0", "table_name": "af_threat_exporter_data_l2"}] console_af_threat_exporter_data_l2
    机器人 {"ip_address": "10.106.186.122", "ctnsappname": "secure_gateway", "bot_type": "2", "bot_type_desc": "Bad", "action_type": "6", "action_type_desc": "Log", "country_code": "0.0", "region_code": "0.0", "city": "0.0", "bot_severity": "0", "bot_severity_desc": "Critical", "latitude": "0", "longitude": "0", "bot_detection_mechanism": "6", "bot_detection_mechanism_desc": "BlackList", "bot_category": "0", "bot_category_desc": "Uncategorized", "source_ip_address": "174758625", "bot_signature_category": "Custom Policy Expression", "appname": "secure_gateway_10.106.186.122_lb", "backend_vserver": "", "backend_appname": "", "total_attacks": "2", "rpt_sample_time": "1718783216", "table_name": "af_bot_attack_details_l2"} console_af_bot_attack_details_l2
    网关洞察 (1) {"adc_ip_address": "10.106.186.141", "auth_server": "", "client_ip": 174766732, "epa_method_type": 0, "error_count": 14, "error_details": "Invalid credentials passed", "error_type": 1, "gateway_name": "vpn_vserver_142_6", "req_url": "", "resource": "", "rpt_sample_time": 1713505215, "sso_method_type": 0, "sta_ip": "", "table_name": "af_vpn_error_details", "username": "John"} console_af_vpn_error_details
    网关洞察 (2) {"adc_ip_address": "10.102.71.166", "display_name": "10.102.71.166", "gateway_name": "firsthop", "ip_address": "10.102.71.168", "rpt_sample_time": "1718812158", "state": "Up", "table_name": "ns_vpnvserver"} console_ns_vpnvserver
    网关洞察 (3) {"adc_ip_address": "10.106.186.141", "gateway_name": "vpn_vserver_141_7", "rpt_sample_time": 1702011308, "sessions": 1, "table_name": "af_vpn_session_details", "users": 1} console_af_vpn_session_details
    网关洞察 (4) {"active_sessions": 59, "active_users": 1, "adc_ip_address": "10.106.186.136", "gateway_name": "vpnathul2", "rpt_sample_time": 1698919848, "table_name": "af_vpn_active_session_1"} console_af_vpn_active_session_1
    网关洞察 (5) {"adc_ip_address": "10.106.186.136", "entity_type": 3, "gateway_name": "vpnathul2", "hits": 3, "rpt_sample_time": 1698052438, "table_name": "af_vpn_error_reports"} console_af_vpn_error_reports
    事件 {"rpt_sample_time": -1, "category": "HealthMonitoring", "entity": "10.106.186.148:HealthMonitoring:System Disk Usage", "counter_threshold_value": "", "id": "0f2607cf-f97d-4f71-9162-11e580262e93", "timestamp": 1712927472, "message": "Disk Usage High: 63.24%", "severity": "Critical", "user_name": "", "device_entity_type": "", "device_type": "", "counter_actual_value": "", "cmd_auth_status": "", "source": "10.106.186.148", "history": "Update Time= Fri, 12 Apr 2024 06:32:49 UTC ,Previous Severity= Critical ,New Severity= Critical, Source= 10.106.186.148\nUpdate Time= Fri, 12 Apr 2024 06:27:46 UTC ,Previous Severity= Critical ,New Severity= Critical, Source= 10.106.186.148\nUpdate Time= Fri, 12 Apr 2024 06:22:44 UTC ,Previous Severity= Critical ,New Severity= Critical, Source= 10.106.186.148\nUpdate Time= Fri, 12 Apr 2024 06:17:41 UTC ,Previous Severity= Critical ,New Severity= Critical, Source= 10.106.186.148\nUpdate Time= Fri, 12 Apr 2024 06:12:38 UTC ,Previous Severity= Critical ,New Severity= Critical, Source= 10.106.186.148\nUpdate Time= Fri, 12 Apr 2024 06:07:36 U", "config_cmd": "", "failureobj": "System Disk Usage", "operation_type": "undefined", "device_entity_name": "", "cmd_exec_status": "", "device_family": "", "source_event_id": -1, "source_system_ip": "10.106.186.148", "trap_id": 35, "table_name": "event"} console_event
    指标 {"memory_free": 28830060544.0, "disk_used": 81248694272.0, "disk_free": 29632114688.0, "node_type": "", "memory_total": 34355544064.0, "cpu_usage": 0.49, "disk_total": 120522616832.0, "disk_usage": 73.28, "node_id": "", "id": "1be15a09-d078-469c-868a-bfbfcffe5ef1", "disk_total_capacity": 0.0, "page_size": 4096.0, "memory_usage": 16.08, "table_name": "mps_health"} console_mps_health
    审计日志 {"system_gmt_time":1721868291, "source":"X.X.X.X", "severity":"INFO", "module":"DEVICECONFIG", "event_type":"CMD_EXECUTED", "message":"Sample Mesage", "instance_ip":"X.X.X.X", "app_name":""} console_syslog_messages
    上传 JSON 后,您可以查看以下详细信息:
    JSON 详细信息
    单击 Transformation editor,输入适用于相应洞察的以下查询,然后单击 Run 以接受从 NetScaler Console 中的轮询时间开始的数据。
    • SSL - source | extend TimeGenerated = todatetime(poll_time) | project-rename sslvserver_id = id
    • WAF 和 Bot - source | extend TimeGenerated = todatetime(rpt_sample_time)
    • 网关洞察 - source | extend TimeGenerated = todatetime(rpt_sample_time)
      表运行
  5. 单击“下一步”,然后单击“创建”以完成。
  6. 导航到“数据收集规则”,单击您已创建的 DCR。
  7. 在“配置”下,单击“数据源”以查看创建的表。
    表源
    DCR(数据收集规则)需要访问“监控指标发布者”角色。
    1. 导航到您可以从 Azure 门户的“最近”下访问的 DCR。
    2. 在 DCR 页面中,单击“访问控制 (IAM)”,然后单击“添加角色分配”。
      角色分配
    3. 在搜索栏中,键入关键字“monitor”以选择“监控指标发布者”,然后单击“下一步”。
    4. 在“成员”选项卡中,单击“选择成员”并选择您创建的 Entra 应用程序。
    5. 单击“审核 + 分配”。
      您必须记下数据收集规则 ID。导航到“数据收集规则”页面,选择您的 DCR,然后单击“JSON 视图”以记下 ID。
      DCR ID

在 NetScaler Console 中创建订阅

您现在已准备就绪。最后一步是通过创建订阅并添加所需详细信息来配置 NetScaler Console。要在 NetScaler Console 中创建订阅,您需要以下已记下的详细信息:
  • 端点 URL
  • 数据收集规则 ID
  • 租户 ID
  • 客户端 ID
  • 客户端密钥
  1. 登录到 NetScaler Console。
  2. 导航到“设置 > 可观察性集成”。
  3. 在“集成”页面中,单击“添加”。
  4. 在“创建订阅”页面中,指定以下详细信息:
    1. 在“订阅名称”字段中指定您选择的名称。
    2. 选择 NetScaler Console 作为源,然后单击“下一步”。
    3. 选择 Microsoft Sentinel,然后点击 Configure。在 Configure Endpoint 页面中,输入所有详细信息,然后点击 Submit。
    4. 点击 Next。
  5. 点击 Add Insights,然后在 Select Feature 选项卡中,根据您在 Microsoft Azure 中添加的表,选择要导出的功能,然后点击 Add Selected,再点击 Next。
  6. 在 Select Instance 选项卡中,您可以选择 Select All Instances 或 Custom select,然后点击 Next。
    • Select All Instances - 将所有 NetScaler 实例的数据导出到 Microsoft Sentinel。
    • Custom select - 允许您从列表中选择 NetScaler 实例。如果您从列表中选择特定实例,则数据将仅从选定的 NetScaler 实例导出到 Microsoft Sentinel。
  7. 点击 Submit。

在 Microsoft Azure 中查看日志

配置完成后,建议您等待 30 分钟,然后在 Microsoft Azure 中查看详细信息。
  1. 在您的 Azure 门户中,导航到您的 Log Analytics Workspace。
  2. 点击 Logs,提供表名,然后点击 Run 查看结果。
    查看日志
您还可以排查故障并使用日志来验证配置。例如,在 NetScaler Console GUI 中对已配置的洞察使用“立即轮询”选项,然后:
  1. 使用 SSH 客户端登录到您的 NetScaler Console。
  2. 键入 shell 进入 bash 模式。
  3. 使用以下命令查看日志:
    tail -f /var/mps/log/nbs/nbs_api.log
以下示例可帮助您分析可能的错误以进行故障排除:
  1. 无效日志
    此日志表示您为 NetScaler Console 中 Microsoft Sentinel 订阅提供了无效的客户端 ID(设置 > 可观测性集成)。
    解决方法: 确保您已复制正确的客户端 ID,并通过提供正确的客户端 ID 来编辑订阅。有关更多信息,请参阅创建 Microsoft Entra 应用程序。
  2. 无效的 SSL 密钥
    此日志表示您尚未在 Microsoft Azure 中配置所需的 ssl_certkey 表。
    解决方法: 在 Microsoft Azure 中为 ssl_certkey 配置一个表。有关更多信息,请参阅创建表以导出数据。