OpenSearch를 Google SecOps와 통합
통합 버전: 1.0
이 문서에서는 OpenSearch를 Google Security Operations와 통합하는 방법을 설명합니다.
사용 사례
OpenSearch 통합은 다음과 같은 보안 조정 및 조사 사용 사례를 해결합니다.
자동화된 위협 헌팅: Lucene 및 DSL 쿼리를 사용하여 모든 OpenSearch 인덱스에서 특정 침해 지표 (IoC) 또는 의심스러운 패턴을 주기적으로 검색합니다.
중앙 집중식 알림 수집: OpenSearch의 문서를 조치 가능한 알림으로 Google SecOps에 수집하여 데이터 레이크의 보안 이벤트가 우선순위로 지정되고 조사되도록 합니다.
컨텍스트 데이터 검색: OpenSearch에서 관련 로그 또는 이전 데이터를 자동으로 가져와 기존 보안 케이스를 보강하여 조사 중에 분석가에게 더 심층적인 컨텍스트를 제공합니다.
유연한 데이터 매핑: OpenSearch 문서의 심각도 수준과 환경 태그를 Google SecOps 표준에 동적으로 매핑하여 다양한 로그 소스 간의 일관성을 유지합니다.
시작하기 전에
Google SecOps 플랫폼에서 통합을 구성하기 전에 다음이 있는지 확인하세요.
CA 인증서 파일: 연결을 보호하는 유효한 인증 기관 파일입니다.
최신 통합 버전: 최신 버전의 OpenSearch 통합을 사용하고 있는지 확인합니다.
Base64로 인코딩된 인증서: 구성하기 전에 CA 인증서 파일의 콘텐츠를 Base64 문자열로 변환해야 합니다.
CA 인증서와의 통합을 구성하려면 다음 단계를 완료하세요.
- 통합 구성 매개변수 페이지를 엽니다.
- Base64로 인코딩된 문자열을 CA 인증서 파일 필드에 붙여넣습니다.
- SSL 인증 체크박스를 선택합니다.
- 테스트를 클릭하여 통합이 성공적으로 구성되었는지 확인합니다.
통합 매개변수
OpenSearch 통합에는 다음 매개변수가 필요합니다.
| 매개변수 | 설명 |
|---|---|
Server Address |
필수 항목입니다. 프로토콜과 포트 (예: |
Username |
선택사항입니다. OpenSearch 인스턴스를 인증하는 데 사용되는 사용자 이름입니다. |
Password |
선택사항입니다. 지정된 사용자 이름과 연결된 비밀번호입니다. |
API Token |
선택사항입니다. 사용자 이름과 비밀번호 대신 인증에 사용되는 API 토큰입니다. |
Authenticate |
선택사항입니다. 선택하면 통합에서 제공된 사용자 인증 정보를 사용하여 OpenSearch 서버에 대한 연결을 인증합니다. |
Verify SSL |
선택사항입니다. 선택하면 OpenSearch 서버에 연결할 때 통합에서 SSL 인증서를 검증합니다. |
CA Certificate File |
선택사항입니다. 서버의 SSL 인증서를 확인하는 데 사용되는 인증 기관(CA) 인증서 파일의 콘텐츠(PEM 형식)입니다. |
Google SecOps에서 통합을 구성하는 방법에 대한 안내는 통합 구성을 참고하세요.
필요한 경우 이후 단계에서 변경할 수 있습니다. 통합 인스턴스를 구성한 후 플레이북에서 사용할 수 있습니다. 여러 인스턴스를 구성하고 지원하는 방법에 관한 자세한 내용은 여러 인스턴스 지원을 참고하세요.
작업
작업에 대한 자세한 내용은 내 Workdesk에서 대기 중인 작업에 응답하기 및 수동 작업 실행하기를 참고하세요.
고급 ES 검색
고급 ES 검색 작업을 사용하여 OpenSearch 서버에서 사전 구성된 검색어를 실행하고 결과를 사전 형식으로 가져옵니다.
이 작업은 Google SecOps 항목에서 실행되지 않습니다.
작업 입력
고급 ES 검색 작업에는 다음 매개변수가 필요합니다.
| 매개변수 | 설명 |
|---|---|
Index |
선택사항입니다. OpenSearch 색인의 검색 패턴입니다 (예: 기본값은 |
Query |
선택사항입니다. Lucene 구문을 사용하여 실행할 검색어입니다 (예: 기본값은 |
Limit |
선택사항입니다. 반환할 문서의 최대 개수입니다. 제한이 없으면 이 값을 기본값은 |
Display Field |
선택사항입니다. 반환할 특정 필드의 쉼표로 구분된 목록입니다. 기본값은 |
Search Field |
선택사항입니다.
기본값은 |
Timestamp Field |
선택사항입니다. 시간 기반 필터링에 사용되는 필드의 이름입니다.
기본값은 |
Oldest Date |
선택사항입니다. 검색 시작일입니다. 이 작업은 이 타임스탬프 당일 또는 이후에 발생한 레코드를 반환합니다. 정확한 UTC 타임스탬프( 기본값은 |
Earliest Date |
선택사항입니다. 검색의 종료일입니다. 이 작업은 이 타임스탬프 당일 또는 그 이전에 발생한 레코드를 반환합니다. 정확한 UTC 타임스탬프( 기본값은 |
작업 출력
고급 ES 검색 작업은 다음 출력을 제공합니다.
| 작업 출력 유형 | 가용성 |
|---|---|
| 케이스 월 연결 | 사용 불가 |
| 케이스 월 링크 | 사용 불가 |
| 케이스 월 테이블 | 사용 불가 |
| 보강 테이블 | 사용 불가 |
| JSON 결과 | 사용 불가 |
| 출력 메시지 | 사용 가능 |
| 스크립트 결과 | 사용 가능 |
스크립트 결과
다음 표에는 고급 ES 검색 작업을 사용할 때 스크립트 결과 출력 값이 나와 있습니다.
| 스크립트 결과 이름 | 값 |
|---|---|
results |
RESULTS |
DSL 검색
DSL 검색 작업을 사용하여 모든 OpenSearch 색인에서 포괄적인 검색을 실행하고 결과를 사전 형식으로 가져옵니다.
이 작업은 Google SecOps 항목에서 실행되지 않습니다.
작업 입력
DSL 검색 작업에는 다음 매개변수가 필요합니다.
| 매개변수 | 설명 |
|---|---|
Index |
선택사항입니다. OpenSearch 색인의 검색 패턴입니다 (예: 기본값은 |
Query |
선택사항입니다. Lucene 구문을 사용하여 실행할 검색어입니다 (예: 기본값은 |
Limit |
선택사항입니다. 반환할 문서의 최대 개수입니다. 제한이 없으면 이 값을 기본값은 |
작업 출력
DSL 검색 작업은 다음 출력을 제공합니다.
| 작업 출력 유형 | 가용성 |
|---|---|
| 케이스 월 연결 | 사용 불가 |
| 케이스 월 링크 | 사용 불가 |
| 케이스 월 테이블 | 사용 불가 |
| 보강 테이블 | 사용 불가 |
| JSON 결과 | 사용 가능 |
| 출력 메시지 | 사용 가능 |
| 스크립트 결과 | 사용 가능 |
JSON 결과
다음 예는 DSL 검색 작업을 사용할 때 수신되는 JSON 결과 출력을 보여줍니다.
[
{
"_score": 0.2876821,
"_type": "person",
"_id": "2",
"_source": {
"lastname": "Smith",
"name": "John",
"job_description": "Systems administrator"
},
"_index": "accounts"
}, {
"_score": 0.28582606,
"_type": "person",
"_id": "1",
"_source":
{
"lastname": "Doe",
"name": "John",
"job_description": "Systems administrator and Linux specialist"
},
"_index": "accounts"
}
]
스크립트 결과
다음 표에는 DSL 검색 작업을 사용할 때 스크립트 결과 출력 값이 나와 있습니다.
| 스크립트 결과 이름 | 값 |
|---|---|
results |
RESULTS |
핑
Ping 작업을 사용하여 OpenSearch와의 연결을 테스트합니다.
이 작업은 Google SecOps 항목에서 실행되지 않습니다.
작업 입력
없음
작업 출력
Ping 작업은 다음 출력을 제공합니다.
| 작업 출력 유형 | 가용성 |
|---|---|
| 케이스 월 연결 | 사용 불가 |
| 케이스 월 링크 | 사용 불가 |
| 케이스 월 테이블 | 사용 불가 |
| 보강 테이블 | 사용 불가 |
| JSON 결과 | 사용 불가 |
| 출력 메시지 | 사용 가능 |
| 스크립트 결과 | 사용 가능 |
스크립트 결과
다음 표에는 Ping 작업을 사용할 때 스크립트 결과 출력 값이 나와 있습니다.
| 스크립트 결과 이름 | 값 |
|---|---|
| is_success | true 또는 false |
Simple ES Search
Simple ES Search 작업을 사용하여 OpenSearch의 모든 색인 필드에서 기본 검색을 실행하고 결과를 사전 형식으로 가져옵니다.
이 작업은 Google SecOps 항목에서 실행되지 않습니다.
작업 입력
간단한 ES 검색 작업에는 다음 매개변수가 필요합니다.
| 매개변수 | 설명 |
|---|---|
Index |
선택사항입니다. OpenSearch 색인의 검색 패턴입니다 (예: 기본값은 |
Query |
선택사항입니다. Lucene 구문을 사용하여 실행할 검색어입니다 (예: 기본값은 |
Limit |
선택사항입니다. 반환할 문서의 최대 개수입니다. 제한이 없으면 이 값을 기본값은 |
작업 출력
Simple ES Search 작업은 다음 출력을 제공합니다.
| 작업 출력 유형 | 가용성 |
|---|---|
| 케이스 월 연결 | 사용 불가 |
| 케이스 월 링크 | 사용 불가 |
| 케이스 월 테이블 | 사용 불가 |
| 보강 테이블 | 사용 불가 |
| JSON 결과 | 사용 가능 |
| 출력 메시지 | 사용 가능 |
| 스크립트 결과 | 사용 가능 |
JSON 결과
다음 예는 Simple ES Search 작업을 사용할 때 수신되는 JSON 결과 출력을 보여줍니다.
[{
"_score": 0.2876821,
"_type": "person",
"_id": "2",
"_source":
{
"lastname": "Smith",
"name": "John",
"job_description": "Systems administrator"
},
"_index": "accounts"
},
{
"_score": 0.28582606,
"_type": "person",
"_id": "1",
"_source":
{
"lastname": "Doe",
"name": "John",
"job_description": "Systems administrator and Linux specialist"
},
"_index": "accounts"
}
]
스크립트 결과
다음 표에는 Simple ES Search 작업을 사용할 때 스크립트 결과 출력의 값이 나와 있습니다.
| 스크립트 결과 이름 | 값 |
|---|---|
results |
RESULTS |
커넥터
Google SecOps에서 커넥터를 구성하는 방법에 대한 자세한 내용은 데이터 수집 (커넥터)을 참고하세요.
OpenSearch 커넥터
OpenSearch 커넥터를 사용하여 제공된 Lucene 쿼리로 지정된 OpenSearch 색인을 검색하고 문서를 Google SecOps에 알림으로 수집합니다.
커넥터 입력
OpenSearch 커넥터에는 다음 매개변수가 필요합니다.
| 매개변수 | 설명 |
|---|---|
Product Field Name |
필수 항목입니다. 제품 이름이 저장된 필드의 이름입니다. 제품 이름은 주로 매핑에 영향을 미칩니다. 커넥터의 매핑 프로세스를 간소화하고 개선하기 위해 기본값은 코드에서 참조되는 대체 값으로 확인됩니다. 이 매개변수의 잘못된 입력은 기본적으로 대체 값으로 처리됩니다. 기본값은 |
Event Field Name |
필수 항목입니다. 이벤트 이름 (하위 유형)을 결정하는 필드의 이름입니다. 기본값은 |
Script Timeout (Seconds) |
필수 항목입니다. 현재 스크립트를 실행하는 Python 프로세스의 제한 시간 한도(초)입니다. 기본값은 |
Server Address |
필수 항목입니다. 프로토콜과 포트 (예: |
Username |
선택사항입니다. OpenSearch 인스턴스를 인증하는 데 사용되는 사용자 이름입니다. |
Password |
선택사항입니다. 지정된 사용자 이름과 연결된 비밀번호입니다. |
Authenticate |
선택사항입니다. 선택하면 통합에서 제공된 사용자 인증 정보를 사용하여 OpenSearch 서버에 대한 연결을 인증합니다. |
API Token |
선택사항입니다. 사용자 이름과 비밀번호 대신 인증에 사용되는 API 토큰입니다. |
Verify SSL |
선택사항입니다. 선택하면 OpenSearch 서버에 연결할 때 통합에서 SSL 인증서를 검증합니다. |
Alert Name Field |
필수 항목입니다. 알림 이름을 포함하는 필드의 이름입니다 (예: |
Timestamp Field |
필수 항목입니다. 타임스탬프가 포함된 필드의 이름입니다 (예: |
Environment Field Name |
선택사항입니다. 환경 이름이 저장된 필드의 이름입니다. 환경 필드가 누락된 경우 커넥터는 기본값을 사용합니다. 기본값은 |
Indexes |
선택사항입니다. 검색할 색인 패턴입니다. |
Query |
선택사항입니다. Lucene 구문을 사용하여 실행할 검색어입니다. |
Alerts Count Limit |
필수 항목입니다. 단일 주기에서 가져올 최대 알림 수입니다. 기본값은 |
Max Days Backwards |
필수 항목입니다. 현재로부터 며칠 전까지의 알림을 가져올지 나타냅니다. 이 매개변수는 커넥터를 처음 사용 설정한 후의 초기 커넥터 반복 또는 만료된 커넥터 타임스탬프의 대체 값에 적용될 수 있습니다. 기본값은 |
Severity Field Name |
선택사항입니다. 알림의 심각도 값을 추출하는 데 사용되는 필드 이름입니다. 필드에 숫자 값 (정수 또는 부동 소수점)이 포함된 경우 커넥터는 자동으로 Google SecOps 심각도 수준에 매핑합니다 (예: |
Proxy Server Address |
선택사항입니다. 사용할 프록시 서버의 주소입니다. |
Proxy Username |
선택사항입니다. 프록시 서버로 인증하는 데 사용되는 사용자 이름입니다. |
Proxy Password |
선택사항입니다. 프록시 서버로 인증하는 데 사용되는 비밀번호입니다. |
Environment Regex Pattern |
선택사항입니다.
기본값 정규 표현식 패턴이 null이거나 비어 있거나 환경 값이 null인 경우 최종 환경 결과는 기본 환경입니다. |
OpenSearch DSL 커넥터
OpenSearch DSL 커넥터를 사용하여 도메인별 언어 (DSL) 쿼리를 사용하여 REST API 호출을 실행하여 문서를 Google SecOps에 알림으로 수집합니다.
커넥터 입력
OpenSearch DSL 커넥터에는 다음 매개변수가 필요합니다.
| 매개변수 | 설명 |
|---|---|
Product Field Name |
필수 항목입니다. 제품 이름이 저장된 필드의 이름입니다. 제품 이름은 주로 매핑에 영향을 미칩니다. 커넥터의 매핑 프로세스를 간소화하고 개선하기 위해 기본값은 코드에서 참조되는 대체 값으로 확인됩니다. 이 매개변수의 잘못된 입력은 기본적으로 대체 값으로 처리됩니다. 기본값은 기본값은 |
Event Field Name |
필수 항목입니다. 이벤트 이름 (하위 유형)을 결정하는 필드의 이름입니다. 기본값은 |
Script Timeout (Seconds) |
필수 항목입니다. 현재 스크립트를 실행하는 Python 프로세스의 제한 시간 한도(초)입니다. 기본값은 |
Server Address |
필수 항목입니다. 프로토콜 (예: |
Port |
필수 항목입니다. OpenSearch API 서버에 연결하는 데 사용되는 포트입니다. |
Query |
필수 항목입니다. 검색에 사용되는 DSL 쿼리입니다(JSON 형식). 커넥터 안정성을 개선하려면 쿼리 내에 정렬 타임스탬프 키를 오름차순으로 포함하는 것이 좋습니다. |
Index |
필수 항목입니다. 검색에 사용된 색인입니다. |
Timestamp Field |
필수 항목입니다. 타임스탬프가 포함된 필드의 이름입니다 (예: |
Alert Field Name |
필수 항목입니다. 알림 이름을 포함하는 필드의 이름입니다 (예: |
Description Field |
선택사항입니다. 알림 설명을 포함하는 필드의 이름입니다 (예: |
Severity |
필수 항목입니다. 수집된 모든 알림에 할당할 정적 심각도 수준입니다. 이 매개변수는 기본값은 |
Alert Severity |
선택사항입니다. 알림에 할당할 심각도입니다. 이 매개변수는
|
Severity Field Name |
선택사항입니다. 알림의 심각도 값을 추출하는 데 사용되는 필드 이름입니다. 필드에 숫자 값 (정수 또는 부동 소수점)이 포함된 경우 커넥터는 Google SecOps 심각도 수준에 자동으로 매핑합니다(예: |
Alerts Count Limit |
선택사항입니다. 단일 주기에서 가져올 최대 알림 수입니다. 기본값은 |
Authenticate |
선택사항입니다. 선택하면 커넥터가 제공된 사용자 인증 정보를 사용하여 연결을 인증합니다. |
Username |
선택사항입니다. OpenSearch 인스턴스를 인증하는 데 사용되는 사용자 이름입니다. |
Password |
선택사항입니다. OpenSearch 인스턴스를 인증하는 데 사용되는 비밀번호입니다. |
Use SSL |
선택사항입니다. 선택하면 커넥터가 서버에 대한 SSL/TLS 연결을 사용 설정합니다. |
Proxy Server Address |
선택사항입니다. 연결에 사용할 프록시 서버의 주소입니다. |
Proxy Username |
선택사항입니다. 프록시 서버로 인증하는 데 사용되는 사용자 이름입니다. |
Proxy Password |
선택사항입니다. 프록시 서버로 인증하는 데 사용되는 비밀번호입니다. |
Environment Field Name |
선택사항입니다. 환경 이름이 저장된 필드의 이름입니다. 환경 필드가 누락된 경우 커넥터는 기본값을 사용합니다. 기본값은 |
Environment Regex Pattern |
선택사항입니다.
기본값 정규 표현식 패턴이 null이거나 비어 있거나 환경 값이 null인 경우 최종 환경 결과는 기본 환경입니다. 기본값은 |
표기법 지원
커넥터는 필드 매핑에 세 가지 표기법을 지원합니다. 예를 들어 event.type를 매핑하려면 _source_event_type, event_type 또는 event.type를 제공하면 됩니다.
이는 다음 매개변수에 적용됩니다.
Product Field NameEvent Field NameSeverity Field NameEnvironment Field NameTimestamp FieldAlert Field NameDescription Field(DSL 커넥터만 해당)
커넥터에서 심각도를 매핑하는 방법
Severity Field Name에 숫자 값 (정수 또는 부동 소수점)이 포함된 경우 커넥터는 다음과 같이 매핑합니다.
- 심각: 100
- 높음: 80 ≤ x < 100
- 중간: 60 ≤ x < 80
- 낮음: 40 ≤ x < 60
- 정보: x < 40
문자열 값의 경우 커넥터 스크립트 폴더에서 severity_map_config.json 파일을 업데이트해야 합니다.
구성 예시
'악성', '알 수 없음' 또는 '양성'이 포함된 event.severity 필드를 매핑하려면 다음 단계를 따르세요.
- 심각도 필드 이름 매개변수에
event.severity를 입력합니다. severity_map_config.json를 업데이트합니다.
{
"event.severity": {
"Malicious": 100,
"Unknown": 60,
"Benign": -1
},
"Default": 50
}
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.