与 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 下单击 创建。
    日志分析工作区
  4. 在 Log Analytics Workspace 主页中,单击 Create。
    工作区创建
  5. 在 创建日志分析工作区 中:
    1. 选择活动订阅和资源组。
      注意:
      如果您有权限,还可以单击 Create new 添加资源组。
    2. 指定一个您选择的名称。
    3. 从列表中选择您的区域。
    4. 单击 审核并创建。
      工作区创建的最终阶段前
    5. 出现验证通过消息。单击 Create 以部署工作区。
      工作区创建
    6. 您可以看到部署正在进行中的消息。在看到部署完成消息后,单击 Go to resource。
      工作区资源
      工作区已成功创建。

创建 Microsoft Entra 应用程序

您必须创建一个与您的 Azure 订阅关联的 Entra 应用程序,以便代表 Log Analytics Workspace 进行通信。创建应用程序后,您还必须授予 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(/en-us/netscaler-console-service/media/sentinel-dcr-id.png)

创建表以导出数据

您必须为要从 NetScaler Console 导出到 Microsoft Sentinel 的每个洞察创建表并提供 JSON 信息。您可以参考以下有关每个洞察的表要求的详细信息:
洞察 所需的表总数
SSL 洞察 3
WAF 1
Bot 1
网关洞察 5
对于每个工作区,您最多可以创建 10 个表。超过 10 个表,您必须创建另一个工作区。
  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
    SSL (3) {"id": "2baffd1a-7ed6-4035-91e8-ad3a3125bff4", "certkeypair_name": "cert1", "ns_ip_address": "10.106.186.127", "poll_time": 1715671567, "partition_name": "", "display_name": "10.106.186.127", "hostname": "", "entity_name": "secure_gateway", "entity_type": "sslvserver", "table_name": "ns_sslcertkey_binding"} console_ns_sslcertkey_binding
    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
    Bot {"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
    审计日志 {"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 详细信息
    单击“转换编辑器”,输入适用于相应洞察的以下查询,然后单击“运行”以接受从 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(数据收集规则)需要访问“Monitoring Metrics Publisher”角色。
    1. 导航到您的 DCR,您可以从 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 并单击 配置。在 配置端点 页面中,输入所有详细信息,然后单击 提交。
    4. 单击 下一步。
  5. 单击 添加见解,并在 选择功能 选项卡中,根据您在 Microsoft Azure 中添加的表,选择要导出的功能,然后单击 添加选定项,再单击 下一步。
  6. 在 选择实例 选项卡中,您可以选择 选择所有实例 或 自定义选择,然后单击 下一步。
    • 选择所有实例 - 将数据从所有 NetScaler 实例导出到 Microsoft Sentinel。
    • 自定义选择 - 使您能够从列表中选择 NetScaler 实例。如果您从列表中选择特定实例,则数据仅从选定的 NetScaler 实例导出到 Microsoft Sentinel。
  7. 单击 提交。

在 Microsoft Azure 中查看日志

配置所有内容后,建议您等待 30 分钟以在 Microsoft Azure 中查看详细信息。
  1. 在您的 Azure 门户中,导航到您的 Log Analytics 工作区。
  2. 点击 日志,提供表名,然后点击 运行 以查看结果。
    查看日志