Microsoft Sentinel との統合
NetScaler Console から Microsoft Sentinel に次の分析データをエクスポートするために、NetScaler Console を Microsoft Sentinel と統合できます。
-
WAF 違反
-
Bot 違反
-
SSL 証明書のインサイト
-
ゲートウェイのインサイト
-
メトリックとイベント
-
NetScaler® Console の監査ログ
Microsoft Sentinel は、アプリケーション、サーバーなど、さまざまなソースからデータを収集する一元化されたデータ収集機能を提供します。管理者として、Microsoft Sentinel でインサイトや違反が報告された後、データを表示して意思決定を行うことができます。
統合を成功させるには、アクティブな Azure サブスクリプションがあることを確認し、各セクションの手順に従ってください。
Log Analytics ワークスペースを構成する
収集されたデータを保存および分析するには、Log Analytics ワークスペースが必要です。
-
Azure にログインします。
-
リソースの作成をクリックします。リソース (/en-us/netscaler-application-delivery-management-software/media/sentinel-resource-create.png)
-
検索バーに「log analytics workspace」と入力し、「Log Analytics Workspace」の下にある「作成」をクリックします。

-
「Log Analytics Workspace」のメインページで、「作成」をクリックします。

-
「Log Analytics ワークスペースの作成」で:
-
アクティブなサブスクリプションとリソースグループを選択します。注:権限がある場合は、「新規作成」をクリックしてリソースグループを追加することもできます。
-
任意の名前を指定します。
-
リストから地域を選択します。
-
「確認 + 作成」をクリックします。

-
検証成功メッセージが表示されます。「作成」をクリックしてワークスペースをデプロイします。

-
デプロイの進行状況メッセージが表示されます。デプロイ完了メッセージが表示されたら、「リソースに移動」をクリックします。
ワークスペースが正常に作成されました。
-
Microsoft Entra アプリケーションを作成する
Log Analytics Workspace の代わりに通信するために、Azure サブスクリプションに関連付けられた Entra アプリケーションを作成する必要があります。アプリケーションを作成したら、Microsoft Sentinel Contributor ロールでアクセス許可を付与する必要もあります。アプリケーションは、クライアント ID、テナント ID、クライアント シークレットなどの詳細も提供します。これらの詳細をメモしておくことをお勧めします。これらの詳細は、NetScaler Console でサブスクリプションを作成して統合プロセスを完了する際に必要になります。
-
Azure ポータルで、検索バーにキーワードを入力します。
-
Microsoft Entra ID をクリックします。

-
追加 をクリックし、アプリの登録 を選択します。

-
アプリの名前を指定し、サポートされているアカウントの種類 で既定のオプションを選択し、登録 をクリックします。

-
アプリケーションを登録した後:
-
クライアント ID と テナント ID をメモします。

-
アプリケーションのシークレット ID を作成します。証明書とシークレット をクリックし、クライアント シークレット で 新しいクライアント シークレット をクリックします。説明と有効期間を指定し、追加 をクリックしてアプリケーションのシークレット ID を作成します。

-
アプリケーションの詳細が表示されます。シークレットが作成された直後に、値の下に表示されるIDを必ずメモしてください。他のGUIオプションに移動すると、この値は非表示になります。

-
Microsoft Entra IDデータコネクタを使用してMicrosoft Sentinelにデータを送信する
Microsoft Entra IDログは、Entraテナントにアクセスするユーザー、アプリケーション、ネットワークに関する包括的な情報を提供します。詳細については、「Microsoft Entra IDデータコネクタを使用してMicrosoft Sentinelにデータを送信する」を参照してください。
データ収集エンドポイントを構成する
エンドポイントURLを取得するには、データ収集エンドポイントを作成する必要があります。これは、NetScaler Consoleでサブスクリプションを作成する際に必要です。
-
Azureポータルで、Azureサービスの下にあるデータ収集エンドポイントを選択するか、検索バーにキーワードを入力します。

-
データ収集エンドポイントページで作成をクリックします。

-
データ収集エンドポイントの作成で:
-
任意のデータ収集エンドポイント名を指定します
-
サブスクリプション、リソースグループ、およびリージョンを選択します。
-
確認 + 作成をクリックします。
-
「検証に成功しました」というメッセージが表示されたら、「作成」をクリックします。
-
エンドポイントURLをメモしておく必要があります。「データ収集エンドポイント」のメインページで、作成したエンドポイントを選択し、「JSONビュー」をクリックして、エンドポイントIDをメモします。
DCR ID(/en-us/netscaler-application-delivery-management-software/media/sentinel-dcr-id.png)
データエクスポート用のテーブルを作成する
NetScaler ConsoleからMicrosoft Sentinelにエクスポートする各インサイトについて、テーブルを作成し、JSON情報を提供する必要があります。各インサイトのテーブル要件については、以下の詳細を参照してください。
| インサイト | 必要なテーブルの総数 |
|---|---|
| SSLインサイト | 3 |
| WAF | 1 |
| ボット | 1 |
| Gatewayインサイト | 5 |
| イベント | 1 |
| メトリック | 1 |
| 監査ログ | 1 |
各データ収集ルール (DCR) につき、最大 10 個のテーブルを作成できます。10 個を超えるテーブルを作成する場合は、別の DCR を作成する必要があります。
-

-
-
テーブル名を指定します。テーブル名は console_insightname の形式である必要があります。例: console_ns_sslvserver、console_ns_ssl_certkey。各インサイトに適用されるテーブル名については、手順 4 を参照してください。
-
テーブル名に関する詳細情報を追加するための説明を入力します。これはオプションです。
-
新しいデータ収集ルールを作成して追加します。
-
リストからデータ収集エンドポイントを選択します。テーブルパラメータ(/en-us/netscaler-application-delivery-management-software/media/sentinel-table-parameters.png)
-
次へをクリックします。
-
-
「スキーマと変換」タブで、エクスポートするインサイトの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 をアップロードすると、次の詳細を表示できます。
「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)
-
-
次へ をクリックし、作成 をクリックして完了します。
-
データ収集ルール に移動し、作成したDCRをクリックします。
-
構成 の下で、データソース をクリックして、作成されたテーブルを表示します。
DCR (データ収集ルール) には、Monitoring Metrics Publisher ロールへのアクセスが必要です。-
Azureポータルの 最近 の下からアクセスできるDCRに移動します。
-
DCRページから アクセス制御 (IAM) をクリックし、ロールの割り当てを追加 をクリックします。

-
検索バーに「monitor」と入力して Monitoring Metrics Publisher を選択し、次へ をクリックします。
-
メンバー タブで、メンバーの選択 をクリックし、作成したEntraアプリを選択します。
-
レビュー + 割り当て をクリックします。データ収集ルールIDをメモする必要があります。データ収集ルールページに移動し、DCRを選択して、JSONビューをクリックし、IDをメモします。

-
NetScaler Consoleでサブスクリプションを作成する
これで準備が整いました。最後のステップは、サブスクリプションを作成し、必要な詳細を追加してNetScaler Consoleを設定することです。NetScaler Consoleでサブスクリプションを作成するには、メモした以下の詳細が必要です。
-
エンドポイントURL
-
データ収集ルールID
-
テナントID
-
クライアントID
-
クライアントシークレット
-
NetScaler Consoleにログインします。
-
設定 > 可観測性統合に移動します。
-
統合ページで、追加をクリックします。
-
サブスクリプションの作成ページで、次の詳細を指定します。
-
サブスクリプション名フィールドに任意の名前を指定します。
-
ソースとしてNetScaler Consoleを選択し、次へをクリックします。
-
「Microsoft Sentinel」を選択し、「Configure」をクリックします。「Configure Endpoint」ページで、すべての詳細を入力し、「Submit」をクリックします。
-
「Next」をクリックします。
-
-
「Add Insights」をクリックし、「Select Feature」タブで、Microsoft Azureに追加したテーブルに応じて、エクスポートする機能を選択し、「Add Selected」をクリックしてから「Next」をクリックします。
-
「Select Instance」タブで、「Select All Instances」または「Custom select」のいずれかを選択し、「Next」をクリックします。
-
Select All Instances - すべてのNetScalerインスタンスからMicrosoft Sentinelにデータをエクスポートします。
-
Custom select - リストからNetScalerインスタンスを選択できます。リストから特定のインスタンスを選択した場合、データは選択したNetScalerインスタンスからのみMicrosoft Sentinelにエクスポートされます。
-
-
「Submit」をクリックします。
Microsoft Azureでログを表示する
すべての設定が完了したら、Microsoft Azureで詳細を表示するために30分ほど待つことをお勧めします。
-
Azureポータルで、「Log Analytics Workspace」に移動します。
-
「Logs」をクリックし、テーブル名を入力して、「Run」をクリックして結果を表示します。ログを表示(/en-us/netscaler-application-delivery-management-software/media/sentinel-view-results.png)
ログを使用して構成のトラブルシューティングと検証を行うこともできます。たとえば、構成されたインサイトに対してNetScaler Console GUIの「Poll Now」オプションを使用し、次の手順を実行します。
-
SSHクライアントを使用してNetScaler Consoleにログインします。
-
「shell」と入力してbashモードに入ります。
-
ログを表示するには、次のコマンドを使用します。
tail -f /var/mps/log/nbs/nbs_api.log
以下の例は、トラブルシューティングのために考えられるエラーを分析するのに役立ちます。
このログは、NetScaler Console (Settings > Observability Integrations) で Microsoft Sentinel サブスクリプションに無効なクライアント ID を指定したことを示しています。回避策: 正しいクライアント ID をコピーしたことを確認し、正しいクライアント ID を指定してサブスクリプションを編集してください。詳細については、Microsoft Entra アプリケーションを作成する を参照してください。
このログは、Microsoft Azure で必要な ssl_certkey テーブルが構成されていないことを示しています。回避策: Microsoft Azure で ssl_certkey のテーブルを構成してください。詳細については、データをエクスポートするテーブルを作成する を参照してください。