Pub/Sub를 Google SecOps와 통합
이 문서에서는 Pub/Sub를 Google Security Operations (Google SecOps)와 통합하는 방법을 안내합니다.
통합 버전: 1.0
시작하기 전에
Pub/Sub 통합을 사용하려면 다음이 필요합니다.
Google Cloud 서비스 계정: 기존 서비스 계정을 사용하거나 새 계정을 만들 수 있습니다.
서비스 계정 만들기에 관한 안내는 서비스 계정 만들기를 참고하세요.
서비스 계정을 사용하여 Google Cloud에 인증하는 경우 JSON으로 서비스 계정 키를 만들고 통합 매개변수를 구성할 때 다운로드한 JSON 파일의 콘텐츠를 제공할 수 있습니다.
참고: 보안상의 이유로 서비스 계정 키 대신 워크로드 아이덴티티 이메일 주소를 사용하는 것이 좋습니다. 워크로드 아이덴티티에 대한 자세한 내용은 워크로드의 아이덴티티를 참고하세요.
주 구성원의 IAM 역할을 구성합니다.
Pub/Sub는 액세스 제어에 Identity and Access Management (IAM)를 사용하며 주 구성원에게
Pub/Sub Viewer
역할을 부여해야 합니다.
통합 매개변수
Pub/Sub 통합에는 다음 매개변수가 필요합니다.
매개변수 | 설명 |
---|---|
Workload Identity Email |
선택사항 워크로드 아이덴티티 제휴의 클라이언트 이메일 주소입니다. 이 매개변수 또는 워크로드 아이덴티티 제휴를 사용하여 서비스 계정을 가장하려면 서비스 계정에 |
Service Account JSON File Content |
선택사항 서비스 계정 키 JSON 파일의 콘텐츠입니다. 이 매개변수 또는 이 매개변수를 구성하려면 서비스 계정을 만들 때 다운로드한 서비스 계정 키 JSON 파일의 전체 콘텐츠를 제공하세요. 서비스 계정을 인증 방법으로 사용하는 방법에 대한 자세한 내용은 서비스 계정 개요를 참고하세요. |
Quota Project ID |
선택사항 Google Cloud API 및 결제에 사용하는 Google Cloud 프로젝트 ID입니다. 이 매개변수를 사용하려면 서비스 계정에 통합은 이 매개변수 값을 모든 API 요청에 연결합니다. 이 매개변수의 값을 설정하지 않으면 통합에서 Google Cloud 서비스 계정에서 할당량 프로젝트 ID를 가져옵니다. |
Project ID |
선택사항 통합에서 사용할 프로젝트 ID입니다. 이 매개변수의 값을 설정하지 않으면 통합에서 Google Cloud 서비스 계정에서 프로젝트 ID를 가져옵니다. |
Verify SSL |
필수 선택하면 통합에서 Pub/Sub 연결에 사용되는 SSL 인증서가 유효한지 확인합니다. 기본적으로 선택되어 있습니다. |
Google SecOps에서 통합을 구성하는 방법에 대한 안내는 통합 구성을 참고하세요.
필요한 경우 이후 단계에서 변경할 수 있습니다. 통합 인스턴스를 구성한 후 플레이북에서 사용할 수 있습니다. 여러 인스턴스 구성 및 지원에 대한 자세한 내용은 다중 인스턴스 지원을 참고하세요.
작업
작업에 관한 자세한 내용은 Workdesk에서 대기 중인 작업에 응답 및 수동 작업 실행을 참고하세요.
핑
핑 작업을 사용하여 Pub/Sub 연결을 테스트합니다.
이 작업은 Google SecOps 항목에서 실행되지 않습니다.
작업 입력
없음
작업 출력
Ping 작업은 다음 출력을 제공합니다.
작업 출력 유형 | 가용성 |
---|---|
케이스 월 연결 | 사용할 수 없음 |
케이스 월 링크 | 사용할 수 없음 |
케이스 월 테이블 | 사용할 수 없음 |
보강 테이블 | 사용할 수 없음 |
JSON 결과 | 사용할 수 없음 |
출력 메시지 | 사용 가능 |
스크립트 결과 | 사용 가능 |
출력 메시지
Ping 작업은 다음 출력 메시지를 반환할 수 있습니다.
출력 메시지 | 메시지 설명 |
---|---|
Successfully connected to the Pub/Sub server with the
provided connection parameters! |
작업이 완료되었습니다. |
Failed to connect to the Pub/Sub server! Error is
ERROR_REASON |
작업이 실패했습니다. 서버, 입력 매개변수 또는 사용자 인증 정보에 대한 연결을 확인합니다. |
스크립트 결과
다음 표에는 Ping 작업을 사용할 때 스크립트 결과 출력 값이 나와 있습니다.
스크립트 결과 이름 | 값 |
---|---|
is_success |
True 또는 False |
커넥터
Google SecOps에서 커넥터를 구성하는 방법에 대한 자세한 내용은 데이터 수집(커넥터)을 참고하세요.
Pub/Sub – 메시지 커넥터
Google SecOps 플랫폼에서 Pub/Sub – Messages Connector는 PubSub – Messages Connector라고 합니다.
Pub/Sub – 메시지 커넥터를 사용하여 Pub/Sub에서 메시지를 가져옵니다.
JSON 심각도 매핑
알림 심각도를 매핑하려면 Pub/Sub - 메시지 커넥터가 Severity Mapping JSON
매개변수의 심각도 값을 가져오는 데 사용하는 필드를 지정해야 합니다. 커넥터 응답에는 integer
, float
, string
과 같은 값 유형이 포함될 수 있습니다.
Pub/Sub – 메시지 커넥터는 integer
및 float
값을 읽고 Google SecOps 설정에 따라 매핑합니다. 다음 표는 Google SecOps의 심각도에 대한 integer
값의 매핑을 보여줍니다.
정수 값 | 매핑된 심각도 |
---|---|
100 |
Critical |
80 부터 100 까지 |
High |
60 부터 80 까지 |
Medium |
40 부터 60 까지 |
Low |
40 미만 |
Informational |
대답에 string
값이 포함된 경우 Pub/Sub – Messages Connector에 추가 구성이 필요합니다.
처음에는 기본값이 다음과 같이 표시됩니다.
{
"Default": 60
}
매핑에 필요한 값이 event_severity
JSON 키에 있는 경우 값은 다음과 같을 수 있습니다.
"Malicious"
"Benign"
"Unknown"
event_severity
JSON 키 값을 파싱하고 JSON 객체의 형식이 올바른지 확인하려면 Severity Mapping JSON
매개변수를 다음과 같이 구성하세요.
{
"event_severity": {
"Malicious": 100,
"Unknown": 60,
"Benign": -1
},
"Default": 50
}
"Default"
값은 필수 항목입니다.
동일한 JSON 객체에 여러 일치 항목이 있는 경우 Pub/Sub – 메시지 커넥터는 첫 번째 JSON 객체 키에 우선순위를 부여합니다.
integer
또는 float
값이 포함된 필드를 사용하려면 Severity Mapping JSON
매개변수에서 키와 빈 문자열을 구성합니다.
{
"Default":"60",
"integer_field": "",
"float_field": ""
}
커넥터 입력
Pub/Sub – 메시지 커넥터에는 다음 매개변수가 필요합니다.
매개변수 | 설명 |
---|---|
Product Field Name |
필수 제품 이름이 저장된 필드의 이름입니다. 기본값은 |
Event Field Name |
필수 이벤트 이름(하위 유형)을 결정하는 데 사용되는 필드 이름입니다. 기본값은 |
Environment Field Name |
선택사항
환경 이름이 저장된 필드의 이름입니다. 환경 필드를 찾을 수 없으면 환경이 기본 환경으로 설정됩니다. 기본값은 |
Environment Regex Pattern |
선택사항
기본값 정규 표현식 패턴이 null이거나 비어 있거나 환경 값이 null인 경우 최종 환경 결과는 기본 환경입니다. |
Script Timeout (Seconds) |
필수 현재 스크립트를 실행하는 Python 프로세스의 제한 시간 한도(초)입니다. 기본값은 |
Service Account JSON File Content |
선택사항 서비스 계정 키 JSON 파일의 콘텐츠입니다. 이 매개변수 또는 이 매개변수를 구성하려면 서비스 계정을 만들 때 다운로드한 서비스 계정 키 JSON 파일의 전체 콘텐츠를 제공하세요. Pub/Sub – 메시지 커넥터의 경우 서비스 계정 키 JSON 파일을 사용한 인증이 워크로드 아이덴티티 제휴보다 우선합니다. |
Workload Identity Email |
선택사항 서비스 계정의 클라이언트 이메일 주소입니다. 이 매개변수 또는 워크로드 아이덴티티 제휴를 사용하여 서비스 계정을 가장하려면 서비스 계정에 |
Project ID |
선택사항 커넥터에서 사용할 프로젝트 ID입니다. |
Quota Project ID |
선택사항 Google Cloud API 및 결제에 사용하는 Google Cloud 프로젝트 ID입니다. 이 매개변수를 사용하려면 서비스 계정에 통합은 이 매개변수 값을 모든 API 요청에 연결합니다. |
Subscription ID |
필수 Pub/Sub 구독 ID입니다. |
Case Name Template |
선택사항 맞춤 케이스 이름입니다. 이 매개변수를 구성하면 커넥터가 Google SecOps 이벤트에
예: 자리표시자의 경우 커넥터는 첫 번째 Google SecOps 이벤트를 사용합니다. 커넥터는 문자열 값을 포함하는 키만 처리합니다. 이 매개변수를 구성하려면 접두사 없이 이벤트 필드를 지정하세요. |
Alert Name Template |
필수 맞춤 알림 이름입니다.
예: 자리표시자의 경우 커넥터는 첫 번째 Google SecOps 이벤트를 사용합니다. 커넥터는 문자열 값을 포함하는 키만 처리합니다. 값을 제공하지 않거나 유효하지 않은 템플릿을 사용하는 경우 커넥터는 |
Rule Generator Template |
필수 맞춤 규칙 생성기
예: 자리표시자의 경우 커넥터는 첫 번째 Google SecOps 이벤트를 사용합니다. 커넥터는 문자열 값을 포함하는 키만 처리합니다. 값을 제공하지 않거나 유효하지 않은 템플릿을 사용하는 경우 커넥터는 |
Timestamp Field |
필수 Google SecOps 알림 타임스탬프를 정의하는 필드의 이름입니다. 타임스탬프가 Unix 에포크 시간 형식을 사용하지 않는 경우 기본값은 |
Timestamp Format |
선택사항 메시지 타임스탬프 형식입니다. 커넥터는 메시지를 올바르게 처리하기 위해 타임스탬프가 필요합니다. 타임스탬프가 Unix 에포크 시간 형식을 사용하지 않고 타임스탬프 형식을 구성하지 않으면 커넥터가 실패합니다. 기본값은 |
Severity Mapping JSON |
필수 커넥터가 메시지에서 심각도 수준을 추출하는 방법을 정의하는 JSON 객체입니다. 기본값은 다음과 같습니다. { "Default": "60" } 심각도 매핑에 관한 자세한 내용은 JSON 심각도 매핑을 참고하세요. |
Unique ID Field |
선택사항 메시지가 고유한지 확인하는 필드의 이름입니다. 값을 설정하지 않으면 커넥터가 SHA-256 해시를 생성하고 이를 메시지의 식별자로 사용합니다. |
Max Messages To Fetch |
선택사항 커넥터 반복마다 처리할 최대 메시지 수입니다. 최대 개수는 100개입니다. |
Disable Overflow |
선택사항 선택하면 커넥터가 알림 생성 중에 Google SecOps 오버플로 메커니즘을 무시합니다. 기본적으로 선택되어 있습니다. |
Verify SSL |
필수 선택하면 통합에서 Pub/Sub 연결에 사용되는 SSL 인증서가 유효한지 확인합니다. 기본적으로 선택됩니다. |
Proxy Server Address |
선택사항 사용할 프록시 서버의 주소입니다. |
Proxy Username |
선택사항 인증할 프록시 사용자 이름입니다. |
Proxy Password |
선택사항 인증할 프록시 비밀번호입니다. |
커넥터 규칙
Pub/Sub – 메시지 커넥터는 프록시를 지원합니다.
커넥터 이벤트
다음은 Pub/Sub – 메시지 커넥터가 생성하는 Google SecOps 이벤트의 JSON 출력을 보여줍니다.
{
"notificationConfigName": "organizations/ORGANIZATION_ID/notificationConfigs/soar_connector_toxic_notifications_config",
"finding": {
"name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
"parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
"resourceName": "//compute.googleapis.com/projects/PROJECT_ID/global/firewalls/FIREWALL_ID",
"state": "ACTIVE",
"category": "OPEN_NETBIOS_PORT",
"externalUri": "https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project\u003dPROJECT_ID",
"sourceProperties": {
"Recommendation": "Restrict the firewall rules at: https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project\u003dPROJECT_ID",
"ExceptionInstructions": "Add the security mark \"allow_open_netbios_port\" to the asset with a value of \"true\" to prevent this finding from being activated again.",
"Explanation": "Firewall rules that allow connections from all IP addresses on TCP ports 137-139 or UDP ports 137-139 may expose NetBIOS services to attackers.",
"ScannerName": "FIREWALL_SCANNER",
"ResourcePath": [
"projects/PROJECT_ID/",
"folders/FOLDER_ID/",
"folders/FOLDER_ID/",
"organizations/ORGANIZATION_ID/"
],
"ExposedService": "NetBIOS",
"OpenPorts": {
"TCP": [
137.0,
138.0,
139.0
],
"UDP": [
137.0,
138.0,
139.0
]
},
"compliance_standards": {
"iso": [
{
"ids": [
"A.13.1.1"
]
}
],
"pci": [
{
"ids": [
"1.2.1"
]
}
],
"nist": [
{
"ids": [
"SC-7"
]
}
]
},
"ReactivationCount": 4.0
},
"securityMarks": {
"name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks",
"marks": {
"peter": "e2e1"
}
},
"eventTime": "2024-08-30T14:44:37.973090Z",
"createTime": "2024-06-24T07:08:54.777Z",
"propertyDataTypes": {
"ResourcePath": {
"listValues": {
"propertyDataTypes": [
{
"primitiveDataType": "STRING"
}
]
}
},
"ReactivationCount": {
"primitiveDataType": "NUMBER"
},
"Explanation": {
"primitiveDataType": "STRING"
},
"ExposedService": {
"primitiveDataType": "STRING"
},
"ScannerName": {
"primitiveDataType": "STRING"
}
}
}
}
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.