Microsoft Sentinelとの統合
NetScaler ConsoleからMicrosoft Sentinelに以下の分析データをエクスポートするために、NetScaler ConsoleをMicrosoft Sentinelと統合できます。
-
WAF違反
-
ボット違反
-
SSL証明書のインサイト
-
ゲートウェイインサイト
-
NetScaler® Console監査ログ
Microsoft Sentinelは、アプリケーションやサーバーなど、さまざまなソースからデータを収集する一元化されたデータ収集機能を提供します。管理者として、インサイトや違反がMicrosoft Sentinelで報告された後、データを表示し、意思決定を行うことができます。
統合を成功させるには、アクティブなAzureサブスクリプションがあることを確認し、各セクションの手順に従ってください。
Log Analyticsワークスペースを構成する
収集されたデータを保存および分析するには、Log Analyticsワークスペースが必要です。
-
Azureにログインします。
-
リソースの作成をクリックします。

-
検索バーに「log analytics workspace」と入力し、Log Analytics Workspaceの下にある作成をクリックします。

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

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

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

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

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

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

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

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

-
アプリケーションの詳細が表示されます。シークレット作成後すぐに、Valueの下に表示されるIDをメモしておいてください。他のGUIオプションに移動すると、この値は非表示になります。値のID(/en-us/netscaler-console-service/media/sentinel-client-value-id.png)
-
Microsoft Entra IDデータコネクタを使用してMicrosoft Sentinelにデータを送信する
Microsoft Entra IDログは、Entraテナントにアクセスするユーザー、アプリケーション、およびネットワークに関する包括的な情報を提供します。詳細については、Microsoft Entra IDデータコネクタを使用してMicrosoft Sentinelにデータを送信するを参照してください。
データ収集エンドポイントを構成する
エンドポイントURLを取得するには、データ収集エンドポイントを作成する必要があります。これは、NetScaler Consoleでサブスクリプションを作成する際に必要です。
-
Azureポータルで、Azureサービスの下にあるデータ収集エンドポイントを選択するか、検索バーにキーワードを入力します。DCRの選択(/en-us/netscaler-console-service/media/sentinel-dcr-select.png)
-
データ収集エンドポイントページで作成をクリックします。DCRの作成(/en-us/netscaler-console-service/media/sentinel-dcr-create.png)
-
データ収集エンドポイントの作成で:
-
任意のデータ収集エンドポイント名を指定します
-
サブスクリプション、リソースグループ、およびリージョンを選択します。
-
確認 + 作成をクリックします。
-
検証成功のメッセージが表示されたら、作成をクリックします。
-
エンドポイント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 |
| Gatewayインサイト | 5 |
各ワークスペースにつき、最大10個のテーブルを作成できます。10個を超えるテーブルを作成する場合は、別のワークスペースを作成する必要があります。
-
Azureポータルでワークスペースに移動し、設定の下にあるテーブルをクリックします。
-
作成をクリックし、**新しいカスタムログ (DCRベース)**を選択します。

-
カスタムログの作成で:
-
テーブル名を指定します。テーブル名はconsole_insightnameの形式である必要があります。例: console_ns_sslvserver、console_ns_ssl_certkey。各インサイトに適用されるテーブル名を取得するには、ステップ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をアップロードした後、以下の詳細を表示できます。
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)
-
-
Nextをクリックし、Createをクリックして完了します。
-
Data collection rulesに移動し、作成したDCRをクリックします。
-
Configurationの下にあるData sourcesをクリックして、作成されたテーブルを表示します。
DCR (Data collection rule) には、Monitoring Metrics Publisherロールへのアクセスが必要です。-
AzureポータルのRecentsからアクセスできるDCRに移動します。
-
DCRページから**Access control (IAM)**をクリックし、Add role assignmentをクリックします。役割の割り当て(/en-us/netscaler-console-service/media/sentinel-dcr-role-assign.png)
-
検索バーに「monitor」と入力してMonitoring Metrics Publisherを選択し、Nextをクリックします。
-
Membersタブで、Select Membersをクリックし、作成したEntraアプリを選択します。
-
Review + assignをクリックします。データ収集ルールIDをメモする必要があります。データ収集ルールページに移動し、DCRを選択してJSONビューをクリックし、IDをメモします。DCR ID(/en-us/netscaler-console-service/media/sentinel-dcr-value.png)
-
NetScaler Consoleでサブスクリプションを作成する
これで準備が整いました。最後のステップは、サブスクリプションを作成し、必要な詳細を追加してNetScaler Consoleを構成することです。NetScaler Consoleでサブスクリプションを作成するには、メモした以下の詳細が必要です。
-
エンドポイントURL
-
データ収集ルールID
-
テナントID
-
クライアントID
-
クライアントシークレット
-
NetScaler Consoleにログインします。
-
設定 > 可観測性統合に移動します。
-
統合ページで、追加をクリックします。
-
サブスクリプションの作成ページで、次の詳細を指定します。
-
サブスクリプション名フィールドに任意の名前を指定します。
-
ソースとしてNetScaler Consoleを選択し、次へをクリックします。
-
Microsoft Sentinelを選択し、構成をクリックします。エンドポイントの構成ページで、すべての詳細を入力し、送信をクリックします。
-
次へをクリックします。
-
-
インサイトの追加をクリックし、機能の選択タブで、Microsoft Azureに追加したテーブルに応じて、エクスポートする機能を選択し、選択を追加をクリックして、次へをクリックします。
-
インスタンスの選択タブで、すべてのインスタンスを選択またはカスタム選択のいずれかを選択し、次へをクリックします。
-
すべてのインスタンスを選択 - すべてのNetScalerインスタンスからMicrosoft Sentinelにデータをエクスポートします。
-
カスタム選択 - リストからNetScalerインスタンスを選択できます。リストから特定のインスタンスを選択した場合、データは選択されたNetScalerインスタンスからのみMicrosoft Sentinelにエクスポートされます。
-
-
送信をクリックします。
Microsoft Azureでログを表示する
すべてを構成した後、Microsoft Azureで詳細を表示するには30分待つことをお勧めします。
-
Azureポータルで、Log Analyticsワークスペースに移動します。
-
「ログ」をクリックし、テーブル名を入力し、「実行」をクリックして結果を表示します。
