ServiceNowにおけるTenable統合のパフォーマンスチューニングのヒントSummary<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Tenable ソース(以下を含む)から大量の脆弱性データをインポートする際に、パフォーマンスの問題が発生することが確認されています。 Tenable.io Assets IntegrationTenable.io Fixed Vulnerabilities IntegrationTenable.io Open Vulnerabilities Integration 問題 1) データ処理の遅延 大量のデータセットをインポートする際に、大幅な遅延が発生する場合があります。たとえば、脆弱性統合実行レコードのインポートキュー待機時間が数時間 (4~12 時間など) になる場合があります。 これは主に、データ処理が脆弱性インポートテンプレートによって管理されているためです。デフォルトではアクティブなテンプレートは 5 つのみですが、インスタンスの能力とノードの可用性に基づいて 15 または 20 に拡張できます。テンプレートの数を増やすことで並列処理が可能になり、全体的な待機時間を短縮できます。 テンプレートの数を増やす方法については、KB0995644 を参照してください。 プロセスがピックアップされるまで長時間待機している場合は、データソースを増やしてください。インポート待機時間が長い場合、統合がリソース不足になっていることを示しており、データソースを増やすことが推奨されます。 ワーカースレッドを待機しているキューエントリが多い場合は、インフラストラクチャに基づいてデータプロセッサの数を増やすことをお勧めします。 データソースの数を増やす方法については、KB0995003 を参照してください。 ノード構成を確認するには、<instance url>/sys_cluster_state_list.do?sysparm_query= に移動して、インスタンスで利用可能なプライマリノードの数を確認してください (Node Type = Generic Primary)。 2) 最大添付ファイルサイズによる統合の失敗 受信する添付ファイルが許可されたサイズ制限を超えた場合にも失敗が発生します。デフォルトの sys_attachment.max_size は 1024 MB ですが、この制限の引き上げは推奨されません。 統合ジョブの chunk_size パラメーターを 500 から 200 以下の値に減らしてください。これにより、インスタンスが大容量のペイロードを頻繁に受信する場合に、大きな添付ファイルをより効率的に処理できます。 3) Tenable.io 統合で "Job exceeded processing time and was forced to complete status" エラーが発生する 該当する統合パラメーターの offset 値を 100 に設定する必要があります。これにより問題が解決されます。 統合 URL の例: https://instance.service-now.com/nav_to.do?uri=sn_sec_int_impl.do?sys_id=xxxx 4) 検出は存在するが、検出されたアイテムの脆弱性アイテムフィールドが空であるため、VIT が関連付けまたは作成されない 検出の作成時刻前後のシステムログを確認してください。 作成ロジックを処理する "Detectionbase" スクリプトインクルードの processVI 関数を確認してください。 関連するエラーがないか、ノードログを確認してください。 除外ルールを確認してください (新しい検出が除外ルールの条件を満たす場合、ルールは検出に関連付けられますが、VIT は作成されません)。 https://www.servicenow.com/docs/bundle/yokohama-security-management/page/product/vulnerability-response/concept/exclusion-rules 4) 検出は存在しますが、検出されたアイテムの [脆弱性一致アイテム] フィールドが空であるため、VIT は関連付けられていないか、作成されません。-->検出作成時刻の前後のシステムログを確認します。-->作成ロジックを処理する「Detectionbase」スクリプトインクルードの processVI 関数を確認してください。-->ノードログに関連するエラーがないか確認します。-->除外ルールを確認します (新しい検出が除外ルールの条件を満たす場合、ルールは検出に関連付けられますが、VIT は作成されません)。https://www.servicenow.com/docs/bundle/yokohama-security-management/page/product/vulnerability-response/concept/exclusion-rules. 5) 低速な脆弱性ルールの確認 Tenable インポートの実行中に、脆弱性データがインポートされた後、関連する脆弱性ルールが実行されます。 一般的な脆弱性ルールには次の 3 種類があります。 脆弱性リスクルール (テーブル: sn_vul_calc_risk.LIST)脆弱性アサインルール (テーブル: sn_vul_assignment_rule.LIST)脆弱性グループルール (テーブル: sn_vul_grouping_rule.LIST) Tenable 統合実行レコードでボトルネックの所在を確認するには、次の手順を実行してください。 (a) テーブル sn_vul_integration_run.LIST を開き、該当する Tenable 統合実行レコードを開きます。 または、メニューから [Tenable Vulnerability Integration] > [Primary Integrations] に移動し、Tenable 統合レコード (Tenable.io open vulnerabilities Integration など) を開くと、[Vulnerability Integration Runs] タブに Tenable 統合実行レコードが表示されます。 (b) 以下のフィールドが表示されていない場合は、Vulnerability Integration Process のリストビューに追加してください。 Assignment rules timeGroup rules timeRisk rules time その他のフィールド (Import queue processing time、VI creation time、CI lookup time など) も追加でき、低速な処理がどこで発生しているかを診断するのに役立ちます。 特定のアサインルールで低速な処理が確認された場合は、そのルールを無効にして Tenable 統合を再実行してください。 複数のアサインルールがすべて低速に実行されている場合は、次のオプションを試してください。 (a) ビジネスルール "Run assignment rules" を無効にして、Tenable 統合を再実行します。 (b) すべてのアサインルールとグループルールを非アクティブにして、初回インポートを再実行します。これにより、すべての脆弱性アイテムが初回にインポートされます。その後、これらのルール (グループルール + アサインルール) を有効にし、各ルールの [Apply Changes] ボタンをクリックしてください。これにより、インスタンス上の既存の脆弱性アイテムにルールが適用され、初回インポート中のワークロードが軽減されます。 初回インポートの完了後、以降のインポートでは差分の新規レコード数が少なくなり、処理が高速化されます。 脆弱性ルールがカスタマイズされている場合は、開発チームにロジックの確認を依頼するタスクを作成してください。 6) 低速なクエリまたはスクリプトの確認 低速なスクリプトは sys_script_pattern.LIST テーブルから、低速なクエリは sys_query_pattern.LIST テーブルから検索できます。 [Average execution time (ms)] フィールドと [Execution count] フィールドから、Tenable インポート中に最も頻繁かつ低速に実行されているビジネスルール、データベースクエリ、スクリプトなどを確認できます。 また、脆弱性テーブル (テーブル名が "sn_vul_" で始まるもの) で低速なビジネスルールが実行されていないか、localhost ログで確認することもできます。 低速なビジネスルールまたはクエリが見つかった場合は、まず以下の基本的な確認を行い、根本原因が特定できない場合は、パフォーマンスチームに確認を依頼するタスクを作成してください。 (a) 脆弱性テーブルで標準 (OOTB) インスタンスと比較して不足しているインデックスがないか確認します。 (b) そのビジネスルールで最適化できる負荷の高いデータベースクエリまたはスクリプトロジックがないか確認します。 7) Tenable 添付ファイル評価時間の延長 Tenable インポート中、脆弱性データは Tenable スキャナーから取得され、XML 添付ファイルとしてテーブル sn_vul_ds_import_q_entry.LIST に保存されます。 添付ファイル評価時間はデフォルトで、スクリプトインクルード "VulnerabilityDSAttachmentManager" で 3600 秒 (60 分) に設定されています。 処理時間を超える処理上の問題が発生した場合、sn_vul_ds_import_q_entry レコードの processing notes フィールドに次のエラーメッセージが出力されます。 エラー: "Job exceeded processing time and was forced to complete status" この場合、大量の Tenable データを処理するために、次の手順で評価時間を延長できます。 (a) インスタンスで次のスクリプトインクルードを開きます (URL 内のインスタンス名を置き換えてください)。 https://<instance_name>.service-now.com/nav_to.do?uri=sys_script_include.do?sys_id=aa1b81669f31020034c6b6a0942e7014 (b) デフォルトのハードコード制限である 3600 秒 (変数 _MAX_PROC_TIME_S: 3600) を増やします。 スクリプトインクルード "VulnerabilityDSAttachmentManager" のタイムアウト値を変更した後、別のスクリプトインクルード "VulnerabilityIntegrationUtils" の同じ値も変更する必要があります。