Chronicle SOAR 감사 로그 수집
이 문서에서는 Google Cloud Storage V2를 사용하여 Chronicle SOAR 감사 로그를 Google Security Operations에 수집하는 방법을 설명합니다.
Google Security Operations SOAR (보안 조정, 자동화, 대응)을 사용하면 보안팀에서 감지 도구의 알림을 수집, 그룹화, 우선순위 지정을 통해 플레이북을 자동으로 실행하고 실무 대응을 조율하여 위협에 대한 대응을 자동화할 수 있습니다. SOAR 로그는 Python 스크립트 실행, 알림 수집, 플레이북 성능 등 ETL, 플레이북, Python 함수의 필수 데이터를 캡처합니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
- Google SecOps 인스턴스
- Cloud Storage API가 사용 설정된 Google Cloud 프로젝트
- GCS 버킷을 만들고 관리할 수 있는 권한
- GCS 버킷의 IAM 정책을 관리할 수 있는 권한
- Cloud Logging 싱크를 만들고 관리할 수 있는 권한
- Chronicle SOAR가 배포된 Google Cloud 프로젝트에 대한 액세스 권한
- Google Cloud 프로젝트의 로그 뷰어 (
roles/logging.viewer) IAM 역할 로그 싱크를 만드는 로깅 관리자 (
roles/logging.admin) IAM 역할
Google Cloud Storage 버킷 만들기
- Google Cloud Console로 이동합니다.
- 프로젝트를 선택하거나 새 프로젝트를 만듭니다.
- 탐색 메뉴에서 Cloud Storage> 버킷으로 이동합니다.
- 버킷 만들기를 클릭합니다.
다음 구성 세부정보를 제공합니다.
설정 값 버킷 이름 지정 전역적으로 고유한 이름 (예: chronicle-soar-audit-logs)을 입력합니다.위치 유형 필요에 따라 선택 (리전, 이중 리전, 멀티 리전) 위치 위치를 선택합니다 (예: us-central1).스토리지 클래스 Standard (자주 액세스하는 로그에 권장) 액세스 제어 균일 (권장) 보호 도구 선택사항: 객체 버전 관리 또는 보관 정책 사용 설정 만들기를 클릭합니다.
SOAR 로그 수집 사용 설정 (독립형 배포만 해당)
독립형 배포에서 SOAR 로그 내보내기를 사용 설정하려면 다음 단계를 따르세요.
- Google Cloud 콘솔에서 IAM 및 관리자 > 서비스 계정으로 이동합니다.
- 서비스 계정 만들기를 클릭합니다.
- 다음 구성 세부정보를 제공합니다.
- 서비스 계정 이름:
soar-logs-export-sa을 입력합니다. - 서비스 계정 설명:
Service account for exporting SOAR logs to Cloud Logging를 입력합니다.
- 서비스 계정 이름:
- 만들고 계속하기를 클릭합니다.
- 이 서비스 계정에 프로젝트에 대한 액세스 권한 부여 섹션에서 다음 단계를 따르세요.
- 역할 선택을 클릭합니다.
- 로그 작성자를 검색하여 선택합니다.
- 계속을 클릭합니다.
- 완료를 클릭합니다.
- 서비스 계정 목록에서 서비스 계정 (
soar-logs-export-sa)을 찾습니다. - more_vert 더보기 > 권한 관리를 클릭합니다.
- 권한 섹션에서 액세스 권한 부여를 클릭합니다.
주 구성원 추가 필드에 다음 주 구성원을 입력합니다.
gke-init-backgroundservices@{SOAR-GCP-Project-Id}.iam.gserviceaccount.com역할 할당 섹션에서 다음을 수행합니다.
- 역할 선택을 클릭합니다.
- 서비스 계정 토큰 생성자를 검색하여 선택합니다.
저장을 클릭합니다.
서비스 계정의 전체 이메일 주소 (
soar-logs-export-sa@PROJECT_ID.iam.gserviceaccount.com)를 복사합니다.서비스 계정 이메일을 포함하여 Google SecOps 지원팀에 티켓을 제출하여 로그 내보내기를 사용 설정합니다.
SOAR 로그를 GCS로 내보내도록 Cloud Logging 싱크 구성
Chronicle SOAR 로그는 chronicle-soar 네임스페이스의 Google Cloud Logging에 기록됩니다. 이러한 로그를 GCS 버킷으로 라우팅하려면 로그 싱크를 만들어야 합니다.
- Google Cloud 콘솔에서 Logging > 로그 라우터로 이동합니다.
- Chronicle SOAR가 배포된 Google Cloud 프로젝트를 선택합니다.
- 싱크 만들기를 클릭합니다.
- 싱크 세부정보 패널에서 다음 구성 세부정보를 제공합니다.
- 싱크 이름:
chronicle-soar-to-gcs을 입력합니다. - 싱크 설명:
Export Chronicle SOAR audit logs to GCS for Chronicle SIEM ingestion을 입력합니다.
- 싱크 이름:
- 다음을 클릭합니다.
- 싱크 대상 패널에서 다음을 수행합니다.
- 싱크 서비스 선택 메뉴에서 Cloud Storage 버킷을 선택합니다.
- Cloud Storage 버킷 선택 메뉴에서 버킷을 선택합니다 (
chronicle-soar-audit-logs).
- 다음을 클릭합니다.
싱크에 포함할 로그 선택 패널에서 다음을 수행합니다.
포함 필터 만들기 필드에 다음 필터를 입력합니다.
resource.labels.namespace_name="chronicle-soar"이 필터는 ETL, 플레이북, Python 서비스의 모든 SOAR 로그와 일치합니다.
로그 미리보기를 클릭하여 필터가 예상되는 로그 항목과 일치하는지 확인합니다.
다음을 클릭합니다.
선택사항: 필요한 경우 싱크를 필터링할 로그 선택 패널에서 제외 필터를 추가할 수 있습니다. 대부분의 배포에서는 제외가 필요하지 않습니다.
싱크 만들기를 클릭합니다.
GCS로의 로그 내보내기 확인
- 로그가 GCS 버킷으로 내보내질 때까지 5~10분 정도 기다립니다.
- Google Cloud 콘솔에서 Cloud Storage > 버킷으로 이동합니다.
- 버킷 이름 (
chronicle-soar-audit-logs)을 클릭합니다. 로그 파일이 버킷에 생성되고 있는지 확인합니다. 파일은 날짜와 시간별로 정리됩니다.
chronicle-soar/YYYY/MM/DD/HH:MM:SS_<unique-id>.json로그 파일을 클릭하여 콘텐츠를 미리 봅니다. 각 파일에는 JSON 형식의 로그 항목이 포함되어 있습니다.
Google SecOps 서비스 계정 가져오기
Google SecOps는 고유한 서비스 계정을 사용하여 GCS 버킷에서 데이터를 읽습니다. 이 서비스 계정에 버킷에 대한 액세스 권한을 부여해야 합니다.
서비스 계정 이메일 가져오기
- SIEM 설정> 피드로 이동합니다.
- 새 피드 추가를 클릭합니다.
- 단일 피드 구성을 클릭합니다.
- 피드 이름 필드에 피드 이름을 입력합니다(예:
Chronicle SOAR Audit Logs). - 소스 유형으로 Google Cloud Storage V2를 선택합니다.
- 로그 유형으로 CHRONICLE_SOAR_AUDIT를 선택합니다.
- 서비스 계정 가져오기를 클릭합니다.
고유한 서비스 계정 이메일이 표시됩니다. 예를 들면 다음과 같습니다.
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com다음 단계에서 사용할 수 있도록 이 이메일 주소를 복사합니다.
다음을 클릭합니다.
다음 입력 매개변수의 값을 지정합니다.
스토리지 버킷 URL: 다음 접두사 경로를 사용하여 GCS 버킷 URI를 입력합니다.
gs://chronicle-soar-audit-logs/chronicle-soar/소스 삭제 옵션: 환경설정에 따라 삭제 옵션을 선택합니다.
- 삭제 안함: 전송 후 파일을 삭제하지 않습니다 (테스트에 권장).
- 전송된 파일 삭제: 전송이 완료되면 파일을 삭제합니다.
- 전송된 파일 및 빈 디렉터리 삭제: 전송이 완료되면 파일과 빈 디렉터리를 삭제합니다.
최대 파일 기간: 지난 일수 동안 수정된 파일을 포함합니다 (기본값은 180일).
애셋 네임스페이스: 애셋 네임스페이스
수집 라벨: 이 피드의 이벤트에 적용할 라벨입니다.
다음을 클릭합니다.
확정 화면에서 새 피드 구성을 검토한 다음 제출을 클릭합니다.
Google SecOps 서비스 계정에 IAM 권한 부여
Google SecOps 서비스 계정에는 GCS 버킷에 대한 스토리지 객체 뷰어 역할이 필요합니다.
- Cloud Storage> 버킷으로 이동합니다.
- 버킷 이름 (
chronicle-soar-audit-logs)을 클릭합니다. - 권한 탭으로 이동합니다.
- 액세스 권한 부여를 클릭합니다.
- 다음 구성 세부정보를 제공합니다.
- 주 구성원 추가: Google SecOps 서비스 계정 이메일을 붙여넣습니다.
- 역할 할당: 스토리지 객체 뷰어 선택
저장을 클릭합니다.
서비스 유형별로 SOAR 로그 필터링
Chronicle SOAR 로그는 로그를 생성한 서비스별로 분류됩니다. Cloud Logging에서 로그를 필터링하거나 다양한 로그 유형에 대해 별도의 싱크를 만들 수 있습니다.
사용 가능한 로그 서비스
사용 가능한 서비스 유형은 다음과 같습니다.
- 플레이북: 블록 실행, 작업 결과, 워크플로 상태 등 플레이북 실행의 로그
- python: 통합 작업, 커넥터, 작업을 비롯한 Python 스크립트 실행의 로그
- etl: 알림 수집 및 데이터 변환 프로세스의 로그
Cloud Logging에서 서비스별로 필터링
특정 서비스의 로그를 보려면 다음 단계를 따르세요.
- Google Cloud 콘솔에서 Logging > 로그 탐색기로 이동합니다.
- Chronicle SOAR가 배포된 Google Cloud 프로젝트를 선택합니다.
특정 서비스의 로그를 보려면 다음 필터를 입력합니다.
resource.labels.namespace_name="chronicle-soar" resource.labels.container_name="playbook"playbook을python또는etl로 바꿔 다른 서비스의 로그를 확인합니다.
다양한 로그 유형에 대해 별도의 싱크 만들기
서로 다른 로그 유형을 별도의 GCS 버킷 또는 접두사로 라우팅하려면 서비스별 필터를 사용하여 싱크를 추가로 만드세요.
- SOAR 로그를 GCS로 내보내도록 Cloud Logging 싱크 구성 섹션의 단계를 따릅니다.
포함 필터 만들기 필드에서 다음 필터 중 하나를 사용합니다.
플레이북 로그만:
resource.labels.namespace_name="chronicle-soar" resource.labels.container_name="playbook"Python 로그만:
resource.labels.namespace_name="chronicle-soar" resource.labels.container_name="python"ETL 로그만:
resource.labels.namespace_name="chronicle-soar" resource.labels.container_name="etl"
필터링에 사용할 수 있는 로그 라벨
Chronicle SOAR 로그에는 필터링 및 분석을 위한 추가 컨텍스트를 제공하는 라벨이 포함됩니다.
플레이북 라벨
플레이북 로그에 사용할 수 있는 라벨은 다음과 같습니다.
playbook_definition: 플레이북 정의의 고유 식별자playbook_name: 플레이북의 사람이 읽을 수 있는 이름block_name: 실행 중인 플레이북 블록의 이름block_definition: 블록 정의의 고유 식별자case_id: Chronicle SOAR 케이스 식별자correlation_id: 서비스 전반에서 전체 플레이북 실행을 추적하는 고유 식별자integration_name: 사용 중인 통합의 이름action_name: 실행 중인 작업의 이름
Python 라벨
Python 서비스 로그에는 다음 라벨을 사용할 수 있습니다.
통합 및 커넥터 라벨:
integration_name: 통합 이름integration_version: 통합 버전connector_name: 커넥터 이름connector_instance: 커넥터의 인스턴스 식별자
작업 라벨:
integration_name: 통합 이름integration_version: 통합 버전job_name: 예약된 작업의 이름
작업 라벨:
integration_name: 통합 이름integration_version: 통합 버전integration_instance: 통합의 인스턴스 식별자correlation_id: 실행 추적을 위한 고유 식별자action_name: 실행 중인 작업의 이름
ETL 라벨
ETL 서비스 로그에 사용할 수 있는 라벨은 다음과 같습니다.
correlation_id: 알림 수집 흐름 추적을 위한 고유 식별자
완전한 추적을 위해 correlation_id 사용
correlation_id 라벨은 플레이북과 Python 서비스 로그 모두에서 사용할 수 있습니다. 이 라벨을 사용하여 전체 플레이북 실행에서 연결된 모든 로그를 가져옵니다.
- Google Cloud 콘솔에서 Logging > 로그 탐색기로 이동합니다.
다음 필터를 입력합니다.
resource.labels.namespace_name="chronicle-soar" labels.correlation_id="<correlation-id-value>"<correlation-id-value>를 로그 항목의 실제 상관관계 ID로 바꿉니다.
이 필터는 전체 실행 추적을 위해 플레이북과 Python 서비스의 모든 로그를 반환합니다.
UDM 매핑 테이블
| 로그 필드 | UDM 매핑 | 논리 |
|---|---|---|
| module, screenSize, activityItem, modificationTimeUnixTimeInMs | additional.fields | 각 필드에서 생성된 병합된 라벨(있는 경우) |
| 사용자, 작업 | extensions.auth.type | 사용자가 비어 있지 않고 작업이 '로그인'인 경우 'AUTHTYPE_UNSPECIFIED'로 설정됩니다. |
| creationTimeUnixTimeInMs | metadata.event_timestamp | UNIX_MS 타임스탬프로 파싱됨 |
| 사용자, 작업, 주소 | metadata.event_type | 사용자가 비어 있지 않고 작업이 '로그인'인 경우 'USER_LOGIN', 사용자가 비어 있지 않은 경우 'USER_RESOURCE_ACCESS', 주소가 비어 있는 경우 'STATUS_UNCATEGORIZED', 그 외의 경우 'GENERIC_EVENT'로 설정됩니다. |
| 작업 | metadata.product_event_type | 값이 직접 복사됨 |
| id | metadata.product_log_id | 문자열로 변환됨 |
| browser | network.http.parsed_user_agent | 파싱된 사용자 에이전트로 변환됨 |
| browser | network.http.user_agent | 값이 직접 복사됨 |
| 주소 | principal.hostname | 주소가 IP 패턴과 일치하지 않는 경우 설정 |
| 주소 | principal.ip | grok 패턴을 사용하여 IP 추출 |
| source | principal.resource.resource_subtype | 값이 직접 복사됨 |
| 사용자 | principal.user.userid | 값이 직접 복사됨 |
| ContactEmails | security_result.about.user.email_addresses | grok 패턴을 사용하여 추출된 이메일 주소 |
| ContactPhone | security_result.about.user.phone_numbers | 값이 직접 복사됨 |
| ContactName | security_result.about.user.user_display_name | 값이 직접 복사됨 |
| 이름 | security_result.about.user.userid | 값이 직접 복사됨 |
| currentActivity, previousActivity | security_result.detection_fields | currentActivity 및 previousActivity의 병합된 라벨(있는 경우) |
| userGuid | target.user.product_object_id | 값이 직접 복사됨 |
| metadata.product_name | 'CHRONICLE_SOAR_AUDIT'으로 설정됩니다. | |
| metadata.vendor_name | 'CHRONICLE_SOAR_AUDIT'으로 설정됩니다. |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.