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 인스턴스에 로그인합니다.
- 모두 > 시스템 보안 > IP 주소 액세스 제어로 이동합니다.
- New(새로 만들기)를 클릭합니다.
- 다음 구성 세부정보를 제공합니다.
- Type(유형): Allow(허용)를 선택합니다.
- IP 주소: CIDR 표기법으로 oneGoogle SecOps IP 범위를 입력합니다 (예:
192.0.2.0/24). - 이름: 설명이 포함된 이름을 입력합니다 (예:
GGoogle SecOps IP Range 1). - 활성: 규칙을 사용 설정하려면 체크박스를 선택합니다.
- 제출을 클릭합니다.
- 추가 Google SecOps IP 범위마다 3~5단계를 반복합니다.
ServiceNow API 액세스 구성
Google SecOps가 CMDB 데이터를 가져올 수 있도록 하려면 적절한 권한이 있는 ServiceNow 사용자를 만들어야 합니다.
전용 통합 사용자 만들기 (권장)
- ServiceNow 관리 콘솔에 로그인합니다.
- 모두 > 사용자 관리 > 사용자로 이동합니다.
- New(새로 만들기)를 클릭합니다.
- 다음 구성 세부정보를 제공합니다.
- 사용자 ID: 설명이 포함된 사용자 이름 (예:
google_secops_integration)을 입력합니다. - 이름:
Google를 입력합니다. - 성:
SecOps Integration를 입력합니다. - 이메일: 알림을 받을 올바른 이메일 주소를 입력합니다.
- 비밀번호: 비밀번호 설정을 클릭하고 안전한 비밀번호를 만듭니다.
- 활성: 체크박스를 선택합니다.
- 웹 서비스 액세스만: 체크박스를 선택합니다 (API 전용 액세스에 권장).
- 사용자 ID: 설명이 포함된 사용자 이름 (예:
- 제출을 클릭합니다.
필수 권한 할당
- 사용자를 만든 후 사용자 레코드를 엽니다.
- 역할 섹션으로 이동합니다.
- 수정을 클릭합니다.
- 컬렉션 목록에서 다음 역할을 검색하여 추가합니다.
- cmdb_read: CMDB 테이블에 대한 읽기 액세스 권한을 제공합니다.
- 저장을 클릭합니다.
API 사용자 인증 정보 기록
사용자를 만든 후 다음 사용자 인증 정보를 기록합니다.
- 사용자 이름: 생성한 사용자 ID (예:
google_secops_integration) - 비밀번호: 사용자에 대해 설정한 비밀번호
- API 호스트 이름: 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 탐색기를 사용하여 테스트 (선택사항)
- 통합 사용자로 ServiceNow 인스턴스에 로그인합니다.
- 모두 > 시스템 웹 서비스 > REST > REST API 탐색기로 이동합니다.
- 네임스페이스 드롭다운에서 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 설정> 피드로 이동합니다.
- 새 피드 추가를 클릭합니다.
- 다음 페이지에서 단일 피드 구성을 클릭합니다.
- 피드 이름 필드에 피드 이름을 입력합니다 (예:
ServiceNow CMDB - All CIs또는ServiceNow CMDB - Servers). - 소스 유형으로 서드 파티 API를 선택합니다.
- 로그 유형으로 ServiceNow CMDB를 선택합니다.
- 다음을 클릭합니다.
다음 입력 매개변수의 값을 지정합니다.
- 사용자 이름: ServiceNow 사용자 ID를 입력합니다 (예:
google_secops_integration). - Secret: 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 서버만 해당) 참고: 테이블 이름은 대소문자를 구분하며 정확히 일치해야 합니다. 피드당 하나의 테이블만 쿼리할 수 있습니다. 테이블을 여러 개 수집하려면 테이블마다 별도의 피드를 만드세요.
- 예:
- 애셋 네임스페이스: 애셋 네임스페이스입니다.
- 수집 라벨: 이 피드의 이벤트에 적용할 라벨입니다.
- 사용자 이름: ServiceNow 사용자 ID를 입력합니다 (예:
다음을 클릭합니다.
확정 화면에서 새 피드 구성을 검토한 다음 제출을 클릭합니다.
설정이 완료되면 피드가 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 전문가에게 문의하여 답변을 받으세요.