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 範囲を取得する
- Google IP アドレス範囲の JSON ファイルから IP 範囲を取得します。
ServiceNow に IP 範囲を追加する
- 管理者として ServiceNow インスタンスにログインします。
- [All] > [System Security] > [IP Address Access Control] に移動します。
- [New] をクリックします。
- 次の構成の詳細を入力します。
- タイプ: [許可] を選択します。
- IP アドレス: Google SecOps の IP 範囲を 1 つ CIDR 表記で入力します(例:
192.0.2.0/24)。 - 名前: わかりやすい名前を入力します(例:
GGoogle SecOps IP Range 1)。 - 有効: チェックボックスをオンにしてルールを有効にします。
- [送信] をクリックします。
- 追加する Google SecOps IP 範囲ごとに手順 3 ~ 5 を繰り返します。
ServiceNow API アクセスを構成する
Google SecOps が CMDB データを取得できるようにするには、適切な権限を持つ ServiceNow ユーザーを作成する必要があります。
専用の統合ユーザーを作成する(推奨)
- ServiceNow 管理コンソールにログインします。
- [All> User Administration> Users] に移動します。
- [New] をクリックします。
- 次の構成の詳細を入力します。
- ユーザー ID: わかりやすいユーザー名を入力します(例:
google_secops_integration)。 - 名: 「
Google」と入力します。 - 姓: 「
SecOps Integration」と入力します。 - メール: 通知用の有効なメールアドレスを入力します。
- パスワード: [パスワードを設定] をクリックして、安全なパスワードを作成します。
- Active: チェックボックスをオンにします。
- Web service access only: チェックボックスをオンにします(API 専用アクセスにおすすめ)。
- ユーザー ID: わかりやすいユーザー名を入力します(例:
- [送信] をクリックします。
必要な権限を割り当てる
- ユーザーを作成したら、ユーザー レコードを開きます。
- [ロール] セクションに移動します。
- [編集] をクリックします。
- [コレクション] リストで、次のロールを検索して追加します。
- cmdb_read: CMDB テーブルへの読み取りアクセス権を提供します。
- [保存] をクリックします。
API 認証情報を記録する
ユーザーを作成したら、次の認証情報を記録します。
- ユーザー名: 作成したユーザー ID(例:
google_secops_integration) - パスワード: ユーザーに設定したパスワード
- API Hostname: ServiceNow インスタンスの FQDN(例:
myinstance.servicenow.com)https://やパスは含めないでください。- 末尾のスラッシュは含めないでください。
- テーブル名: クエリする 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 を使用してテストする(省略可)
- 統合ユーザーとして ServiceNow インスタンスにログインします。
- [All > System Web Services > REST > REST API Explorer] に移動します。
- 名前空間のプルダウンから [Table API] を選択します。
- [Retrieve records from a table (GET)] を選択します。
- [パス パラメータ] にテーブル名(例:
cmdb_ci)を入力します。 - [送信] をクリックします。
- レスポンス ステータスが 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 データを返します。
フィードを設定する
フィードを構成する手順は次のとおりです。
- [SIEM 設定] > [フィード] に移動します。
- [Add New Feed] をクリックします。
- 次のページで [単一フィードを設定] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例:
ServiceNow CMDB - All CIsまたはServiceNow CMDB - Servers)。 - [ソースタイプ] として [サードパーティ API] を選択します。
- [ログタイプ] として [ServiceNow CMDB] を選択します。
- [次へ] をクリックします。
次の入力パラメータの値を指定します。
- ユーザー名: 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: このフィードのイベントに適用されるラベル。
- ユーザー名: ServiceNow ユーザー ID(
[次へ] をクリックします。
[Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
設定後、フィードは ServiceNow インスタンスから CMDB レコードの取得を開始します。テーブル内のレコード数によっては、初回同期に数分かかることがあります。
複数の CMDB テーブルの取り込み
複数の CMDB テーブルからデータを取り込むには、テーブルごとに個別のフィードを作成します。
- 上記の手順に沿って最初のフィードを作成します(たとえば、
cmdb_ci_serverの場合)。 - [新しいフィードを追加] をクリックして、追加のフィードを作成します。
- 同じ 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 のプロフェッショナルから回答を得ることができます。