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 範囲を 1 つ 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:// やパスは含めないでください。
    • 末尾のスラッシュは含めないでください。
  • テーブル名: クエリする CMDB テーブル(cmdb_cicmdb_ci_servercmdb_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. [Retrieve records from a table (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 アセットタグまたは識別子
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 所有している会社/組織

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