규칙 API로 통합 규칙 관리
규칙 API는 맞춤 규칙과 선별된 규칙을 모두 관리하는 프로그래매틱 엔드포인트를 제공합니다. 이 문서에서는 Rules API를 사용하여 맞춤 규칙과 선별된 규칙을 프로그래매틱 방식으로 관리하는 방법을 설명합니다.
규칙 API를 사용하여 다음 작업을 수행합니다.
규칙 검색 및 나열: 구조화된 검색을 실행하고, 결과를 정렬하고, 확장된 규칙 리소스를 가져옵니다.
선별된 규칙 세부정보 보기: Google에서 작성한 규칙의 읽기 전용 메타데이터, 적용된 태그, 원시 텍스트 로직을 가져옵니다.
일괄 수정 규칙 구성: 여러 규칙에서 실시간 상태, 알림 상태, 보관 상태, 태그 할당을 동기식으로 업데이트합니다.
목록 규칙을 사용하여 규칙 검색
rules.list 메서드는 확장된 규칙 리소스와 구조화된 검색을 지원합니다.
이러한 세부 리소스를 쿼리하려면 다음 뷰 중 하나를 사용하세요.
CONFIG_ONLYTRENDS
두 뷰 모두 다음을 포함한 확장된 정보를 제공합니다.
규칙 배포 정보 (실시간 규칙 사용 설정, 알림 사용 설정, 보관 상태, 실행 상태)
연결된 규칙 태그
CONFIG_ONLY뷰에서 엄선된 규칙 리소스에 대한 액세스CONFIG_ONLY보기에서 페이지 크기가 5,000개로 커짐강력한 구조화된 검색 기능
rules.list 요청에서 order_by를 사용하여 규칙 리소스 필드의 검색 결과를 정렬합니다. 다음 규칙 필드가 지원됩니다.
alerting_enabledarchivedauthorcreate_timedisplay_nameexecution_statelive_mode_enabledrevision_create_timerule_idrule_ownerseveritytypeupdate_time
요청 예시:
HTTP
GET https://chronicle.googleapis.com/v1alpha/projects/<ID>/locations/us/instances/<ID>/rules?filter=archived%3Dfalse&pageSize=100&pageToken=&view=TRENDS
응답 예:
JSON
{
"rules": [
{
"name": "projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/rules/ru_fd3fe28c-2d7b-4f7e-9fca-4fdd6029d228",
"revisionId": "v_1719339990_701951000",
"displayName": "SomaMaglevProberRule",
"author": "test@google.com",
"metadata": {
"description": "enabled live rule used for maglev rules latency prober"
},
"createTime": "2024-06-25T18:26:30.701951Z",
"revisionCreateTime": "2024-06-25T18:26:30.701951Z",
"type": "SINGLE_EVENT",
"etag": "CNaX7LMGEJjY284C",
"nearRealTimeLiveRuleEligible": true,
"ruleOwner": "CUSTOMER",
"alertingEnabled": true,
"liveModeEnabled": true,
"runFrequency": "LIVE",
"currentDayDetectionCount": 10000,
"executionState": "DEFAULT"
},
{
"name": "projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/rules/ru_fbf56bf1-ea5f-4b5b-bbe9-e91e13f3b3b3",
"revisionId": "v_1696452642_197471000",
"displayName": "LoadTestingRule",
"author": "loadtesting@google.com",
"createTime": "2023-10-04T20:50:42.197471Z",
"revisionCreateTime": "2023-10-04T20:50:42.197471Z",
"type": "SINGLE_EVENT",
"etag": "CKKg96gGEJjWlF4=",
"nearRealTimeLiveRuleEligible": true,
"ruleOwner": "CUSTOMER",
"alertingEnabled": true,
"liveModeEnabled": true,
"runFrequency": "LIVE",
"executionState": "DEFAULT"
}
]
}
getRule 및 listRules를 사용하여 선별된 규칙 세부정보 보기
rules.getRule 및 rule.listRules는 선별된 규칙의 세부정보 가져오기를 지원합니다.
rule.listRules 응답은 rule_owner: "GOOGLE" 필터를 사용하여 선별된 규칙만 필터링할 수 있습니다. rule_owner 필터 사용에 관한 자세한 내용은 규칙 검색 구문 섹션을 참고하세요.
선별된 규칙을 읽기 위한 listRules 요청의 예:
HTTP
GET https://chronicle.googleapis.com/v1alpha/projects/<ID>/locations/us/instances/<ID>/rules?filter=rule_owner%3A%22GOOGLE%22pageSize=1&view=TRENDS
응답 예:
JSON
{
"rules": [
{
"name": "projects/<ID>/locations/us/instances/<ID>/rules/ur_e34bf150-6cfb-494c-ad9d-ec8f7216a03c",
"revisionId": "v_1755272664_971453000",
"displayName": "Example Curated Rule",
"severity": {
"displayName": "Info"
},
"metadata": {
"technique": "T1136.003",
"rule_name": "Example Curated Rule",
"description": "Example Curated Rule Description",
"tactic": "TA0003"
},
"createTime": "2024-10-02T18:10:43.647897Z",
"revisionCreateTime": "2025-08-15T15:44:24.971453Z",
"type": "SINGLE_EVENT",
"etag": "CNir/cQGEMjknM8D",
"nearRealTimeLiveRuleEligible": true,
"ruleOwner": "GOOGLE",
"tags": [
"google.mitre.tactic.ta0003",
"google.mitre.technique.t1136.003"
],
"executionState": "DEFAULT"
}
]
}
rule.getRule 메서드는 리소스 이름을 사용하여 선별된 규칙을 가져오는 것을 지원합니다.
선별된 규칙을 가져오는 getRule 요청의 예:
HTTP
GET https://chronicle.googleapis.com/v1alpha/projects/<ID>/locations/us/instances/<ID>/rules/ur_e34bf150-6cfb-494c-ad9d-ec8f7216a03c?view=BASIC
응답 예:
JSON
{
"rules": [
{
"name": "projects/<ID>/locations/us/instances/<ID>/rules/ur_e34bf150-6cfb-494c-ad9d-ec8f7216a03c",
"revisionId": "v_1755272664_971453000",
"displayName": "Example Curated Rule",
"severity": {
"displayName": "Info"
},
"metadata": {
"technique": "T1136.003",
"rule_name": "Example Curated Rule",
"description": "Example curated rule description",
"tactic": "TA0003"
},
"createTime": "2024-10-02T18:10:43.647897Z",
"revisionCreateTime": "2025-08-15T15:44:24.971453Z",
"text": "Example curated rule text",
"type": "SINGLE_EVENT",
"etag": "CNir/cQGEMjknM8D",
"nearRealTimeLiveRuleEligible": true,
"ruleOwner": "GOOGLE",
"tags": [
"google.mitre.tactic.ta0003",
"google.mitre.technique.t1136.003"
],
"executionState": "DEFAULT"
}
]
}
modifyRules를 사용하여 규칙 구성을 일괄 수정
rules.modifyRules 메서드는 맞춤 규칙 및 선별된 규칙에 대한 다음 일괄 업데이트를 지원합니다.
실시간 규칙 상태 업데이트
알림 상태 업데이트
적용된 태그 업데이트
보관 상태 업데이트 (맞춤 규칙만 해당)
일괄 업데이트는 동기식으로 독립적으로 실행됩니다. 이 프로세스는 원자적이지 않으며 개별 실패에도 계속됩니다. 부분 실패는 failed_requests 필드에 자세히 설명되어 있습니다. 여기서 키는 실패한 요청의 색인을 나타내고 값은 실패 이유를 제공하는 맵입니다. 업데이트가 성공하면 rule_updates 필드에 문서화됩니다. 여기서 각 요청의 결과는 원래 일괄 처리의 해당 색인에 배치됩니다.
modifyRules 요청 예시:
HTTP
POST https://chronicle.googleapis.com/v1alpha/projects/<ID>/locations/us/instances/<ID>/rules:modifyRules
JSON
{
"parent": "projects/<ID>/locations/us/instances/<ID>",
"requests": [
{
"update_mask": "liveModeEnabled",
"rule": {
"name": "projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/rules/ru_aaaaaaaaaaaaaaaaaaaaaaa",
"liveModeEnabled": true
}
},
{
"update_mask": "alertingEnabled",
"rule": {
"name": "projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/rules/ur_zzzzzzzzzzzzzzzzzzzzz",
"alertingEnabled": false
}
},
{
"update_mask": "tags",
"rule": {
"name": "projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/rules/ru_bbbbbbbbbbbbbbbbbbbbbbb",
"tags": [
"projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/google.mitre.tactic.TA0043",
"projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/google.mitre.technique.T1595"
]
}
},
{
"update_mask": "archived",
"rule": {
"name": "projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/rules/ru_cccccccccccccccccccccc",
"archived": true
}
}
]
}
응답 예:
JSON
{
"failed_requests": {
"0": {
"code": 5,
"message": "rule is already enabled"
},
"3": {
"code": 5,
"message": "rule is already archived"
}
},
"rule_updates": [
{},
{ "alerting_state_updated": true },
{ "tagsUpdated": true },
{}
]
}
선별된 규칙 업데이트 가이드라인
선별된 규칙의 라이브 또는 알림 상태를 수정할 때는 다음 사항을 고려하세요.
독립적인 제어: 상위 규칙 세트 정책과 독립적으로 규칙의 상태를 관리할 수 있습니다. 규칙의 상태가 상위 정책과 다른 경우 상위 정책이 다음 업데이트를 받을 때까지 맞춤 설정이 유지됩니다.
권한 요구사항: 인스턴스에 상위 규칙 팩에 대한 권한이 활성 상태인 경우에만 이러한 상태를 업데이트할 수 있습니다.
태그 업데이트 가이드라인
다음 방법을 사용하여 태그를 규칙과 연결할 수 있습니다.
규칙 텍스트의
tactic,technique또는mitre_ttp메타 필드에 MITRE T 코드 (전략 또는 기법)를 포함합니다.규칙 텍스트의
tags메타 필드에 전체 태그 리소스 이름을 지정합니다.ModifyRuleAPI 요청을 사용하여 전체 태그 리소스 이름을 지정합니다.
ModifyRules API는 MITRE tactic 및 technique 태그를 지원합니다. API 업데이트에서 제공된 태그는 규칙 텍스트에서 직접 추론된 태그를 제외하고 기존 태그를 덮어씁니다.
Google 관리 MITRE tactic 태그는 google.mitre.tactic 네임스페이스 접두사를 사용합니다.
TA0001 전술 태그의 전체 리소스 이름의 예:
projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/google.mitre.tactic.TA0001
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.