TISC RPZ API
TISC RPZ API는 RPZ(응답 정책 영역) 형식으로 도메인 및 IP 주소를 익스포트할 수 있는 엔드포인트를 제공합니다.
이 API를 사용하여 방화벽, DNS 서버 또는 RPZ 정책을 지원하는 기타 보안 시스템에서 사용할 필터링된 위협 인텔리전스 데이터를 RPZ 형식으로 검색합니다. RPZ는 도메인 및 IP 주소를 차단, 허용 또는 리디렉션하는 데 사용됩니다. API 응답은 보안 워크플로우에 쉽게 통합할 수 있도록 사용됩니다 text/plain .
이 API에는 위협 인텔리전스 보안 센터 에서 ServiceNow Store사용할 수 있는 애플리케이션이 필요합니다.
에 대한 TISC자세한 내용은 다음 문서를 참조하십시오 Threat Intelligence Security Center.
이 API는 sn_sec_tisc 네임스페이스에서 실행됩니다. 호출 사용자에게 sn_sec_tisc.api_obs_read_access 역할이 있어야 합니다.
이 API의 현재 버전은 v1입니다.
TISC RPZ - 게시/sn_sec_tisc/rpz_export
도메인 및 IP 주소를 RPZ(응답 정책 영역) 형식으로 익스포트합니다.
*.<domain_name>)을 생성할 수 있습니다. 와일드카드 항목은 도메인의 모든 하위 도메인을 차단하거나 허용할 수 있는 유연성을 제공합니다. 이 기능을 활성화하려면 의 위협 인텔리전스 보안 센터도메인 기록으로 이동하십시오. 상세 정보 탭의 TISC 태그 및 분류 섹션에서 분류 필드에 내용을 입력합니다.- 분류 선택 필드에서 RPZ 도메인을 선택합니다.
- 분류 값 추가 필드에서 와일드카드 항목 추가를 선택합니다.
URL 형식
버전이 지정된 URL: /api/sn_sec_tisc/{api_version}/rpz_export
기본 URL: /api/sn_sec_tisc/rpz_export
지원되는 요청 매개변수
| 이름 | 설명 |
|---|---|
| api_version | 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들어 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하도록 이 값만 지정하십시오. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| 없음 |
| 이름 | 설명 |
|---|---|
| feed_type | 필수 익스포트할 옵저버블의 유형입니다. 유효한 값(대/소문자 구분 안 함):
데이터 유형: 문자열 |
| observable_filters | 옵저버블에 적용할 필터입니다. 필터 기준과 일치하는 옵저버블만 응답에 반환됩니다. 데이터 유형: 객체 기본값: 빈 객체(적용된 필터 없음) |
| observable_filters.boolean_operator | 필터 조건에 사용할 부울 연산자입니다. 유효한 값은 다음과 같습니다.
데이터 유형: 문자열 |
| observable_filters.filters | 옵저버블에 적용할 필터입니다. 각 필터 개체는 단순하거나 복잡할 수 있습니다.
데이터 유형: 객체 배열 |
| observable_filters.filters.field_name | 옵저버블을 필터링하는 데 사용할 필드의 이름입니다. 유효한 값은 다음과 같습니다.
데이터 유형: 문자열 |
| observable_filters.filters.field_value | 필드의 값입니다. 선택 필드의 경우 값은 표시 값이 아닌 내부 값이어야 합니다. 날짜-시간 필드의 경우 값은 UTC 시간대의 ISO 형식이어야 합니다. 주: ISEMPTY 또는 ISNOTEMPTY 연산자를 사용할 때는 이 매개 변수가 필요하지 않습니다. 데이터 유형: 문자열 |
| observable_filters.filters.operator | 필터에 사용할 연산자입니다. 연산자에 대한 자세한 내용은 다음 문서를 참조하십시오 Operators available for filters and queries. 필터 필드의 데이터 유형에 따라 유효한 연산자가 결정됩니다. 다음 연산자는 각 데이터 형식에 유효합니다.
데이터 유형: 문자열 |
| page_size | API 응답에서 반환되는 옵저버블 수를 제한합니다. 페이지 매김에 사용됩니다. 데이터 유형: 숫자 기본값: 1000 최대값: 10,000 |
| page_token | 현재 페이지에 대한 옵저버블 데이터를 가져오는 데 사용됩니다. 첫 번째 페이지를 가져오려면 이 매개변수를 생략하거나 이 매개변수의 값이 빈 문자열이어야 합니다. 다음 요청의 다음 페이지를 가져오려면 응답 헤더의 값을 이 매개변수의 값으로 사용합니다 X-Next-Page-Token . 데이터 유형: 문자열 기본값: 빈 문자열 |
| 정책 | 필수 도메인 또는 IP 주소에 대해 수행할 작업입니다. 유효한 값(대/소문자 구분 안 함):
데이터 유형: 문자열 |
| soa_email | 필수 영역의 관리자 연락처 이메일입니다. 사용자 이름과 도메인을 @ 기호 대신 점(.)으로 구분합니다(예: admin@example.com 대신 admin.example.com.). 이 매개변수는 DNS SOA 기록에 포함됩니다.데이터 유형: 문자열 |
| soa_expiry | 필수 만료 시간입니다. 기본 서버에 연결할 수 없게 되면 보조 서버가 영역 데이터를 계속 사용하는 최대 시간을 결정합니다. 데이터 유형: 숫자 단위: 초 최소: 0 최대값: 4294967295 |
| soa_minimum_ttl | 필수 부정적 응답의 최소 유효 기간입니다. 해결자가 부정적 응답을 캐시하는 기간을 결정합니다. 주:
이 매개변수는 항상 유효한 요청 본문에 필요하지만 정책이 NXDOMAIN, NODATA 또는 LOCAL-DATA인 경우에만 이 값이 사용됩니다. 다른 정책의 경우 이 매개변수는 영향을 주지 않습니다. 데이터 유형: 숫자 단위: 초 최소: 0 최대값: 4294967295 |
| soa_named_server | 필수 영역의 기본 이름 서버입니다. 점(.)으로 끝나는 FQDN(정규화된 도메인 이름)이어야 합니다( 예: ns1.example.com.). 이 매개변수는 DNS SOA 레코드의 첫 번째 필드입니다.데이터 유형: 문자열 |
| soa_named_server_alt | 중복성을 위한 대체 이름 서버입니다. 데이터 유형: 문자열 |
| soa_refresh | 필수 새로 고침 간격입니다. 보조 DNS 서버가 기본 서버에서 영역에 대한 업데이트를 확인하는 빈도를 결정합니다. 데이터 유형: 숫자 단위: 초 최소: 0 최대값: 4294967295 |
| soa_retry | 필수 재시도 간격입니다. 실패한 영역 전송을 다시 시도하기 전에 보조 서버가 대기하는 시간을 결정합니다. 데이터 유형: 숫자 단위: 초 최소: 0 최대값: 4294967295 |
| soa_ttl | 필수 RPZ 기록의 TTL(Time to Live)입니다. 업데이트를 확인하기 전에 해결자가 기록을 캐시하는 기간을 결정합니다. 데이터 유형: 숫자 단위: 초 최소: 0 최대값: 4294967295 |
| walled_garden | 리디렉션 대상으로 사용할 IP 주소 또는 도메인 이름입니다. 사용자를 벽으로 둘러싸인 정원(일반적으로 보안, 규정 준수 또는 정보 제공 목적으로 통제된 페이지 또는 네트워크 위치)으로 리디렉션하는 데 사용됩니다. 주:
LOCAL-DATA인 경우 policy 필수입니다. 다른 정책 유형에는 이 매개변수를 사용하지 마십시오.데이터 유형: 문자열 |
헤더
다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 고유한 방식으로 이 작업에 적용됩니다. REST API에 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하십시오.
| 머리글 | 설명 |
|---|---|
| 수용 | 응답 본문의 데이터 형식입니다. 지원되는 유형은 text/plain 또는 application/json입니다. 성공 응답은 일반 텍스트로 반환되고 오류 응답은 JSON으로 반환됩니다. 기본값: text/plain |
| 권한 부여 | 기초의. API 인증 및 권한 부여에 대한 자세한 내용은 의 REST API 보안 섹션 REST API을 참조하십시오. |
| 콘텐츠-형식 | 요청 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 머리글 | 설명 |
|---|---|
| X-다음 페이지 토큰 | 다음 API 요청에서 이 값을 사용하여 결과의 다음 페이지를 가져옵니다. 요청 본문의 매개변수에 page_token 이 값을 제공합니다. 이 헤더가 없으면 더 이상 사용할 수 있는 페이지가 없습니다. |
상태 코드
이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.
| 상태 코드 | 설명 |
|---|---|
| 200 | 성공입니다. 요청이 성공적으로 처리되었습니다. |
| 400 | 잘못된 요청입니다. 잘못된 요청 유형 또는 잘못된 형식의 요청이 탐지되었습니다. |
| 401 | 권한이 해제되었습니다. 사용자 자격 증명이 잘못되었거나 전달되지 않았습니다. |
| 403 | 금지되었습니다. 사용자에게 지정된 기록에 대한 액세스 권한이 없습니다. |
| 429 | 요청이 너무 많습니다. API 요청 수가 API의 요율 제한을 초과합니다. 기본적으로 제한은 시간당 500개의 요청입니다. |
| 500 | 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다. |
응답 본문 매개변수(JSON)
| 이름 | 설명 |
|---|---|
| errorCode | 요청에 대한 HTTP 상태 코드입니다. |
| 결과 | 요청에 대한 상세 정보입니다. 이 매개변수는 요청이 실패한 경우에만 반환됩니다. 데이터 유형: 객체 |
| 결과.오류 | 오류 정보입니다. 데이터 유형: 객체 |
| 결과.오류.상세 정보 | 요청 실패 원인에 대한 추가 정보입니다. 데이터 유형: 문자열 |
| 결과.오류.메시지 | 요청에 실패한 이유를 포함하는 오류 메시지입니다. 데이터 유형: 문자열 |
| 결과.상태 | API 요청의 상태입니다. 이 매개변수는 요청이 실패한 경우에만 반환되므로 가능한 유일한 값은 failure입니다. 데이터 유형: 문자열 |
cURL 요청
이 예에서는 선택한 도메인을 RPZ 형식으로 내보내고 정책을 NXDOMAIN으로 설정합니다.
curl --location 'https://instance.service-now.com/api/sn_sec_tisc/v1/rpz_export' \
--header 'Authorization: Basic YWJlbC50dXRlcjpTbm93QDEyMw==' \
--data '{
"policy": "nxdomain",
"feed_type": "DOMAIN",
"soa_retry": 85,
"soa_expiry": 1,
"soa_minimum_ttl": 7,
"soa_refresh": 3600,
"soa_ttl": 7678,
"soa_named_server": "localhost.",
"soa_email": "root.localhost.",
"page_size": 100,
"page_token": "",
"observable_filters": {
"boolean_operator": "AND",
"filters": [
{
"field_name": "status",
"operator": "=",
"field_value": "active"
},
{
"boolean_operator": "OR",
"filters": [
{
"field_name": "threat_score",
"operator": ">=",
"field_value": "70"
},
{
"field_name": "confidence",
"operator": ">=",
"field_value": "50"
}
]
}
]
}
}'
필터 기준과 일치하는 도메인을 포함하는 응답 본문입니다.
$TTL 7678;
@ SOA localhost. root.localhost. (1759835257654 3600 85 1 7)
IN NS localhost.
; The following Domain records will be blocked (NXDOMAIN):
domain autuo.xicp.net CNAME .
microsofta.byinter.net CNAME .
www.webserver.freetcp.com CNAME .
mongoles.3322.org CNAME .
imddos.my03.com CNAME .
weile3322b.3322.org CNAME .
*.weile3322b.3322.org CNAME .
cURL 요청
이 예시에서는 잘못된 정책 값을 사용하는 요청을 보여줍니다.
curl --location 'https://instance.service-now.com/api/sn_sec_tisc/v1/rpz_export' \
--header 'Authorization: Basic YWJlbC50dXRlcjpTbm93QDEyMw==' \
--data '{
"policy": "LocalData",
"feed_type": "DOMAIN",
"soa_retry": 85,
"soa_expiry": 1,
"soa_minimum_ttl": 7,
"soa_refresh": 3600,
"soa_ttl": 7678,
"soa_named_server": "localhost.",
"soa_email": "root.localhost.",
"page_size": 100,
"page_token": "",
"observable_filters": {
"boolean_operator": "AND",
"filters": [
{
"field_name": "status",
"operator": "=",
"field_value": "active"
},
{
"boolean_operator": "OR",
"filters": [
{
"field_name": "threat_score",
"operator": ">=",
"field_value": "70"
},
{
"field_name": "confidence",
"operator": ">=",
"field_value": "50"
}
]
}
]
}
}'
실패한 요청에 대한 오류 정보를 포함하는 응답 본문입니다.
{
"result": {
"status": "failure",
"error": {
"message": "Error occurred while processing request body.",
"detail": "Invalid policy: 'LocalData'. Supported values are: NXDOMAIN, DROP, NODATA, PASSTHRU, LOCAL-DATA, TCP-ONLY"
}
},
"errorCode": 400
}