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 範囲を 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://やパスは含めないでください。- 末尾のスラッシュは含めないでください。
- 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 を使用してテストする(省略可)
- 統合ユーザーとして ServiceNow インスタンスにログインします。
- [All] > [System Web Services] > [REST] > [REST API Explorer] に移動します。
- 名前空間のプルダウンから [Table API] を選択します。
- [テーブルからレコードを取得する(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 |
アセットタグまたはアセット 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 のプロフェッショナルから回答を得ることができます。