ServiceNow CMDB データを収集する

以下でサポートされています。

このドキュメントでは、サードパーティ API を使用して Google Security Operations フィードを設定し、ServiceNow CMDB データを収集する方法について説明します。

始める前に

次の前提条件を満たしていることを確認します。

  • Google SecOps インスタンス
  • 管理コンソールへのアクセス権を持つ ServiceNow インスタンスへの特権アクセス
  • cmdb_read ロールを持つ ServiceNow ユーザー アカウント(読み取りアクセスに必要な最小要件)
  • ServiceNow インスタンスで REST API が有効になっている(デフォルトで有効)

IP 許可リストを構成する

フィードを作成する前に、ServiceNow のファイアウォールまたは掲載ネットワークの設定で Google SecOps の IP 範囲を許可リストに登録する必要があります。

Google SecOps の IP 範囲を取得する

ServiceNow に IP 範囲を追加する

  1. 管理者として ServiceNow インスタンスにログインします。
  2. [All] > [System Security] > [IP Address Access Control] に移動します。
  3. [New] をクリックします。
  4. 次の構成情報を指定します。
    • タイプ: [許可] を選択します。
    • IP アドレス: Google SecOps の IP 範囲を CIDR 表記で入力します(例: 192.0.2.0/24)。
    • 名前: わかりやすい名前を入力します(例: GGoogle SecOps IP Range 1)。
    • 有効: チェックボックスをオンにしてルールを有効にします。
  5. [送信] をクリックします。
  6. 追加する Google SecOps IP 範囲ごとに手順 3 ~ 5 を繰り返します。

ServiceNow API アクセスを構成する

Google SecOps が CMDB データを取得できるようにするには、適切な権限を持つ ServiceNow ユーザーを作成する必要があります。

  1. ServiceNow 管理コンソールにログインします。
  2. [All> User Administration> Users] に移動します。
  3. [New] をクリックします。
  4. 次の構成情報を指定します。
    • ユーザー ID: わかりやすいユーザー名(google_secops_integration など)を入力します。
    • 名: 「Google」と入力します。
    • 姓: 「SecOps Integration」と入力します。
    • メール: 通知用の有効なメールアドレスを入力します。
    • パスワード: [パスワードを設定] をクリックして、安全なパスワードを作成します。
    • Active: チェックボックスをオンにします。
    • Web service access only: チェックボックスをオンにします(API 専用アクセスにおすすめ)。
  5. [送信] をクリックします。

必要な権限を割り当てる

  1. ユーザーを作成したら、ユーザー レコードを開きます。
  2. [ロール] セクションに移動します。
  3. [編集] をクリックします。
  4. [コレクション] リストで、次のロールを検索して追加します。
    • cmdb_read: CMDB テーブルへの読み取りアクセス権を提供します。
  5. [保存] をクリックします。

API 認証情報を記録する

ユーザーを作成したら、次の認証情報を記録します。

  • ユーザー名: 作成したユーザー ID(例: google_secops_integration)
  • パスワード: ユーザーに設定したパスワード
  • API Hostname: ServiceNow インスタンスの FQDN(例: myinstance.servicenow.com)
    • https:// やパスは含めないでください。
    • 末尾のスラッシュは含めないでください。
  • Table Name: クエリする CMDB テーブル(例: cmdb_ci、cmdb_ci_server、cmdb_ci_computer)

ServiceNow CMDB テーブルについて

ServiceNow CMDB は、テーブルの階層構造で構成されています。アセットデータの取り込みで最も一般的なテーブルは次のとおりです。

テーブル名 説明 ユースケース
cmdb_ci ベース構成アイテム テーブル(すべての CI テーブルの親) すべての構成項目
cmdb_ci_server サーバー構成アイテム 物理サーバーと仮想サーバー
cmdb_ci_computer パソコンの構成アイテム ワークステーション、ノートパソコン、デスクトップ
cmdb_ci_linux_server Linux サーバーの構成アイテム 特に Linux サーバー
cmdb_ci_win_server Windows サーバーの構成アイテム 特に Windows サーバー
cmdb_ci_vm_instance 仮想マシン インスタンス 仮想マシン
cmdb_ci_network_adapter ネットワーク アダプタ ネットワーク インターフェース カード
cmdb_ci_ip_address IP アドレス IP アドレス レコード
cmdb_ci_service 企業向けサービス サービス カタログ アイテム
cmdb_ci_appl アプリケーション アプリケーション構成アイテム

REST API アクセスを確認する

フィードを作成する前に、ServiceNow API の認証情報が正しく機能することを確認します。

REST API Explorer を使用してテストする(省略可)

  1. 統合ユーザーとして ServiceNow インスタンスにログインします。
  2. [All] > [System Web Services] > [REST] > [REST API Explorer] に移動します。
  3. 名前空間のプルダウンから [Table API] を選択します。
  4. [テーブルからレコードを取得する(GET)] を選択します。
  5. [パス パラメータ] に、テーブル名(例: cmdb_ci)を入力します。
  6. [送信] をクリックします。
  7. レスポンスのステータスが 200 OK で、レコードが返されることを確認します。

curl を使用してテストする(省略可)

  • または、curl を使用して API をテストします。

    curl "https://your-instance.service-now.com/api/now/table/cmdb_ci?sysparm_limit=10" \
    --request GET \
    --header "Accept: application/json" \
    --user 'your-username':'your-password'
    
    • 次のように置き換えます。
      • your-instance.service-now.com: ServiceNow インスタンスのホスト名
      • your-username: 統合ユーザーのユーザー名
      • your-password: インテグレーション ユーザーのパスワード

成功したレスポンスは、構成項目を含む JSON データを返します。

フィードを設定する

フィードを構成する手順は次のとおりです。

  1. [SIEM 設定] > [フィード] に移動します。
  2. [Add New Feed] をクリックします。
  3. 次のページで、[単一のフィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: ServiceNow CMDB - All CIs または ServiceNow CMDB - Servers)。
  5. [ソースタイプ] として [サードパーティ API] を選択します。
  6. [ログタイプ] として [ServiceNow CMDB] を選択します。
  7. [次へ] をクリックします。
  8. 次の入力パラメータの値を指定します。

    • ユーザー名: ServiceNow ユーザー ID(google_secops_integration など)を入力します。
    • シークレット: ServiceNow ユーザーのパスワードを入力します。重要: これは機密フィールドです。パスワードは暗号化され、保存後に表示することはできません。
    • API ホスト名: ServiceNow インスタンスの完全修飾ドメイン名を入力します。
      • 例: myinstance.servicenow.com
      • 含めないもの:
        • プロトコル(https://)
        • パス(/api/now/table/)
        • 末尾のスラッシュ
    • リージョン インスタンス: ServiceNow インスタンスが特定のリージョンにある場合は、正しいホスト名形式を使用します。
      • 標準: instance.service-now.com
      • 欧州連合: instance.service-now.eu
      • その他の地域: ServiceNow 管理者に確認します
    • テーブル名: クエリする ServiceNow CMDB テーブルを入力します。
      • 例:
        • cmdb_ci(すべての構成アイテム)
        • cmdb_ci_server(すべてのサーバー)
        • cmdb_ci_computer(ワークステーションとパソコン)
        • cmdb_ci_linux_server(Linux サーバーのみ)
        • cmdb_ci_win_server(Windows サーバーのみ) 注: テーブル名では大文字と小文字が区別されるため、正確に一致させる必要があります。フィードごとにクエリできるテーブルは 1 つのみです。複数のテーブルを取り込むには、テーブルごとに個別のフィードを作成します。
    • アセットの名前空間: アセットの名前空間。
    • Ingestion labels: このフィードのイベントに適用されるラベル。
  9. [次へ] をクリックします。

  10. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

設定後、フィードは ServiceNow インスタンスから CMDB レコードの取得を開始します。テーブル内のレコード数によっては、初回同期に数分かかることがあります。

複数の CMDB テーブルの取り込み

複数の CMDB テーブルからデータを取り込むには、テーブルごとに個別のフィードを作成します。

  1. 上記の手順に沿って最初のフィードを作成します(たとえば、cmdb_ci_server の場合)。
  2. [新しいフィードを追加] をクリックして、フィードを追加します。
  3. 同じ ServiceNow 認証情報を使用しますが、異なるテーブル名を指定します。

構成の例:

フィード名 テーブル名 目的
ServiceNow CMDB - サーバー cmdb_ci_server すべてのサーバー CI
ServiceNow CMDB - コンピュータ cmdb_ci_computer ワークステーション CI
ServiceNow CMDB - ネットワーク アダプタ cmdb_ci_network_adapter ネットワーク インターフェース CI
ServiceNow CMDB - アプリケーション cmdb_ci_appl アプリケーション CI

必要な API 権限

統合ユーザーには、次の ServiceNow 権限が必要です。

権限/ロール アクセスレベル 目的
cmdb_read 読み取り CMDB 構成アイテムのデータを取得する

その他のロール(省略可):

  • itil: CI の作成または更新に書き込みアクセスが必要な場合に必要(Google SecOps 取り込みには不要)
  • rest_api_explorer: 設定時に API アクセスをテストするのに便利です。

UDM マッピング テーブル

ServiceNow フィールド UDM マッピング ロジック
name entity.asset.hostname アセットのプライマリ ホスト名
ip_address entity.asset.ip アセットのプライマリ IP アドレス
mac_address entity.asset.mac アセットの MAC アドレス
serial_number entity.asset.hardware.serial_number ハードウェア シリアル番号
asset_tag entity.asset.asset_id アセットタグまたはアセット ID
sys_class_name entity.asset.asset_type CI クラス(サーバー、コンピュータなど)
os entity.asset.platform_software.platform オペレーティング システム
sys_created_on entity.asset.first_seen_time アセットの作成タイムスタンプ
sys_updated_on entity.asset.last_seen_time 最終更新日時
location entity.asset.location.name 所在地
company entity.asset.attribute.labels.value 所有している会社/組織
event.idm.entity.entity.metadata.entity_type USER 変更履歴からマッピング
calendar_integration", "u_ldap_source", "u_show_popup", "source", "building", "web_service_access_only", "notification", "enable_multifactor_authn", "sso_source", "sys_domain.display_value", "sys_domain.link", "u_itil_license_type", and "u_assets_validated entity.entity.asset.attribute.labels 変更履歴からマッピング
last_login_time entity.relation.entity.user.last_login_time 変更履歴からマッピング
x_bmgr_support_ent_bomgar_username", "vip", "zip", "time_format", "active", "gender", "failed_attempts", "federated_id", "internal_integration_user", "u_business_line", "department.link", "introduction", "preferred_language", "manager.link", "photo", "avatar", "time_zone", "schedule", and "correlation_id entity.relation.entity.user.attribute.labels 変更履歴からマッピング
street entity.relation.entity.user.personal_address.name 変更履歴からマッピング
department.display_value entity.relation.entity.user.department 変更履歴からマッピング
u_office entity.relation.entity.user.company_name 変更履歴からマッピング
title entity.relation.entity.user.title 変更履歴からマッピング
first_name entity.relation.entity.user.first_name 変更履歴からマッピング
last_name entity.relation.entity.user.last_name 変更履歴からマッピング
middle_name entity.relation.entity.user.middle_name 変更履歴からマッピング
manager.display_value entity.relation.entity.user.managers.user_display_name 変更履歴からマッピング
sys_domain_path", "transaction_log", "cost_center", "sys_mod_count", and "sys_tags entity.entity.labels 変更履歴からマッピング
employee_number", "phone", "home_phone", and "mobile_phone entity.relation.entity.user.phone_numbers 変更履歴からマッピング
city entity.relation.entity.user.personal_address.city 変更履歴からマッピング
state entity.relation.entity.user.personal_address.state 変更履歴からマッピング
country entity.location.country_or_region 変更履歴からマッピング
u_site_code entity.location.city 変更履歴からマッピング
u_region entity_labels 変更履歴からマッピング
location.display_value entity.labels 変更履歴からマッピング
location.link entity.labels 変更履歴からマッピング
email _relation.entity.user.email_addresses 変更履歴からマッピング
sys_id entity.asset.product_object_id 変更履歴からマッピング
u_sima_bs_activation_date", "attestation_status", "u_oracle_asm_lun_size", "u_app_resource_jndi_name", "is_encrypted", "monitor", "operational_status", "u_updated_ci", "u_cluster_node", "firewall_status", "skip_sync", "u_excluded", "u_data_classification", "u_sla_report", "u_restriction", "u_rack_slot", "u_account_aztech_oe.link", "u_account_aztech_oedisplay_value", "u_organisational_entity.link", "u_organisational_entity.display_value", "assignment_group.link", "assignment_group.display_value", "cost_center.link", "cost_center.display_value", "u_service_instance", "u_local_oe_cost_center", "managed_by", "u_mode_of_operation", "install_status", and "u_provider_tag entity.labels 変更履歴からマッピング
u_build_user entity.user.email_addresses 変更履歴からマッピング
metadata.entity_type ASSET 変更履歴からマッピング

変更ログ

このパーサーの変更ログを表示する

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。