Dope Security SWG 로그 수집
이 문서에서는 Amazon S3를 사용하여 Dope Security SWG 로그를 Google Security Operations로 수집하는 방법을 설명합니다.
Dope Security dope.swg는 실시간 웹 필터링, 멀웨어 보호, 클라우드 애플리케이션 제어를 제공하는 엔드포인트 기반 보안 웹 게이트웨이입니다. 각 dope.endpoint는 15분마다 dope.cloud에 웹 트랜잭션 로그를 전송하며, 이 로그는 SIEM 통합을 위해 압축된 GZIP JSONL 형식으로 AWS S3 버킷에 자동으로 내보내집니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
- Google SecOps 인스턴스
- Dope Security dope.console에 대한 액세스 권한
- AWS(S3, IAM)에 대한 액세스 권한
- Dope Security 테넌트는 S3 버킷과 동일한 AWS 리전에 있어야 합니다 (설정 > SIEM 페이지에서 리전 확인).
Dope Security SIEM 통합 구성
Dope Security SIEM 통합을 구성하려면 다음 단계를 따르세요.
- https://console.dope.security에서 dope.console에 로그인합니다.
- 설정 > SIEM > SIEM 통합 설정으로 이동합니다.
- SIEM 유형 목록에서 AWS S3를 선택합니다.
페이지 오른쪽에 표시된 AWS 리전 (예: US-EAST-2)을 확인합니다.
AWS S3를 설정한 후 구성을 완료하기 위해 다시 돌아와야 하므로 이 페이지를 열어 둡니다.
Google SecOps용 AWS S3 버킷 및 IAM 구성
- Amazon S3 버킷을 만듭니다. 자세한 내용은 버킷 만들기를 참고하세요.
- 버킷을 만들 때 리전이 Dope Security SIEM 통합 페이지에 표시된 리전 (예: 미국 동부 (오하이오) us-east-2)과 일치하는지 확인합니다.
나중에 참조할 수 있도록 버킷 이름을 저장합니다 (예:
chronicle-dope-swg-logs).사용자를 만듭니다. 자세한 내용은 IAM 사용자 만들기를 참고하세요.
생성한 사용자를 선택합니다.
보안용 사용자 인증 정보 탭을 선택합니다.
액세스 키 섹션에서 액세스 키 만들기를 클릭합니다.
사용 사례로 서드 파티 서비스를 선택합니다.
다음을 클릭합니다.
선택사항: 설명 태그를 추가합니다.
액세스 키 만들기를 클릭합니다.
.csv 파일 다운로드를 클릭하여 나중에 참고할 수 있도록 액세스 키와 보안 비밀 액세스 키를 저장합니다.
완료를 클릭합니다.
권한 탭을 선택합니다.
권한 정책 섹션에서 권한 추가를 클릭합니다.
권한 추가를 선택합니다.
정책 직접 연결을 선택합니다.
AmazonS3FullAccess 정책을 검색합니다.
정책을 선택합니다.
다음을 클릭합니다.
권한 추가를 클릭합니다.
Dope Security Amazon S3 연결 구성
- 설정 > SIEM > SIEM 통합 설정 페이지에서 dope.console로 돌아갑니다.
- S3 버킷 이름 필드에 S3 버킷의 이름을 입력합니다 (예:
chronicle-dope-swg-logs). - 오른쪽 창에 사전 생성된 JSON 정책이 포함된 버킷 정책 섹션이 표시됩니다.
- 정책 JSON 옆에 있는 복사를 클릭하여 클립보드에 복사합니다.
- 새 브라우저 탭에서 AWS S3 콘솔로 이동합니다.
- S3 버킷 (예:
chronicle-dope-swg-logs)을 선택합니다. - 권한 탭으로 이동합니다.
- 버킷 정책 섹션까지 아래로 스크롤합니다.
- 수정을 클릭합니다.
- dope.console에서 복사한 정책 JSON을 정책 텍스트 영역에 붙여넣습니다.
- 변경사항 저장을 클릭합니다.
- dope.console 브라우저 탭으로 돌아갑니다.
- SIEM 통합 설정 페이지 하단에서 동기화를 클릭합니다.
- 동기화가 완료될 때까지 기다립니다.
- S3 버킷 이름 필드 옆에 녹색 체크표시가 나타나는지 확인합니다.
마지막 동기화 타임스탬프가 페이지 오른쪽 상단에 표시되는지 확인합니다.
Dope Security SWG 로그를 수집하도록 Google SecOps에서 피드 구성
- SIEM 설정> 피드로 이동합니다.
- 새 피드 추가를 클릭합니다.
- 다음 페이지에서 단일 피드 구성을 클릭합니다.
- 피드 이름에 고유한 이름을 입력합니다 (예:
Dope Security SWG Logs). - 소스 유형으로 Amazon S3 V2를 선택합니다.
- 로그 유형으로 DOPE_SWG를 선택합니다.
- 다음을 클릭한 후 제출을 클릭합니다.
다음 필드의 값을 지정합니다.
- S3 URI:
s3://chronicle-dope-swg-logs/(버킷 이름으로 대체) - 소스 삭제 옵션: 환경설정에 따라 삭제 옵션을 선택합니다.
- 최대 파일 기간: 지난 일수 동안 수정된 파일을 포함합니다 (기본값은 180일).
- 액세스 키 ID: S3 버킷에 대한 액세스 권한이 있는 사용자 액세스 키 (AWS 구성의 12단계에서 가져옴)
- 보안 비밀 액세스 키: S3 버킷에 액세스할 수 있는 사용자 보안 비밀 키 (AWS 구성의 12단계에서 가져옴)
- 애셋 네임스페이스: 애셋 네임스페이스
- 수집 라벨: 이 피드의 이벤트에 적용할 라벨입니다.
- S3 URI:
다음을 클릭한 후 제출을 클릭합니다.
로그 데이터 형식 참조
Dope Security는 GZIP 압축을 사용하여 JSONL (JSON Lines) 형식으로 로그를 내보냅니다. 각 로그 항목에는 다음 주요 필드가 포함됩니다.
| 필드 | 설명 |
|---|---|
| 타임스탬프 | 웹 거래가 요청된 시점의 ISO 8601 타임스탬프 |
| 기간 | 연결 기간(밀리초) |
| 일치하는 대상 | 도핑 카테고리와 일치하는 도메인 |
| 대상 IP | 요청된 URL의 대상 IP 주소 |
| 테넌트 ID | 고객의 dope.cloud 고유 테넌트 ID |
| 상담사 ID | dope.endpoint의 고유 에이전트 ID |
| 사용자 | dope.endpoint에 로그인한 사용자 |
| OIDC 사용자 | 인증된 사용자의 이메일 주소 (OIDC 인증이 사용 설정된 경우) |
| 카테고리 | 요청된 URL에 대해 일치하는 마약 카테고리 번호 (0~88) |
| 결과 | 정책 결과: 허용 (0), 차단 (1), 경고 (2), 우회 (3) |
| 전송된 데이터 | 연결에서 전송된 데이터 양 (바이트) |
| 수신된 데이터 | 연결에서 수신된 데이터 양 (바이트) |
| 정책 유형 | 적용된 정책 유형: 웹, 클라우드 애플리케이션 제어 (CAC), 맞춤 카테고리, 우회 또는 멀웨어 |
| 차단 세부정보 | 차단 평결: 마약 카테고리, 맞춤 카테고리, 클라우드 애플리케이션 또는 멀웨어 유형 |
| 파일 이름 | 다운로드한 파일의 이름 |
| 파일 해시 | 다운로드한 파일의 파일 해시 |
| 프로세스 이름 | URL 요청을 실행하는 프로세스의 이름 |
| URL | 요청된 URL 완료 |
| 정책 이름 | 적용된 정책의 이름 |
| 프로토콜 | 사용된 프로토콜 (예: HTTP/2, HTTP/1.1) |
| 호스트 이름 | 기기 호스트 이름 |
| HTTP 요청 메서드 | HTTP 요청 메서드 (예: GET, POST, PUT) |
| 호출 트리 처리 | 명령어 인수를 사용한 프로세스 생성 작업의 상위-하위 관계 |
전체 카테고리 및 평결 매핑은 Dope Security 카테고리 및 평결 매핑 문서를 참고하세요.
UDM 매핑 테이블
| 로그 필드 | UDM 매핑 | 논리 |
|---|---|---|
| policy.categories, request.processTree | additional.fields | 정책.categories 및 요청.processTree에서 JSON으로 목록으로 병합됨 |
| 타임스탬프 | metadata.event_timestamp | JSON과 CSV 모두에서 ISO8601 타임스탬프로 파싱됨 |
| metadata.event_type | JSON에 has_principal, has_target, has_http가 있는 경우 NETWORK_HTTP로 설정하고, 그렇지 않고 has_principal 및 has_target가 있는 경우 NETWORK_CONNECTION으로 설정하고, 그렇지 않고 has_user가 있는 경우 USER_UNCATEGORIZED로 설정하고, 그렇지 않고 has_principal이 있는 경우 STATUS_UPDATE로 설정하고, 그렇지 않은 경우 GENERIC_EVENT로 설정합니다. CSV에서는 NETWORK_HTTP로 설정합니다. | |
| schemaVersion | metadata.product_version | JSON의 schemaVersion에서 직접 복사된 값 |
| request.httpVersion | network.http.user_agent | JSON의 request.httpVersion에서 직접 복사한 값 |
| bandwidth.dataReceivedInBytes, bytes_received | network.received_bytes | 비어 있지 않고 0이 아닌 경우 JSON의 bandwidth.dataReceivedInBytes 또는 CSV의 bytes_received에서 uinteger로 변환됩니다. |
| bandwidth.dataSentInBytes, bytes_sent | network.sent_bytes | 비어 있지 않고 0이 아닌 경우 JSON의 bandwidth.dataSentInBytes 또는 CSV의 bytes_sent에서 uinteger로 변환됩니다. |
| request.duration | network.session_duration.seconds | JSON의 request.duration에서 정수로 변환됨 |
| endpoint.agentID, endpoint_id | principal.asset.asset_id | DS: JSON의 endpoint.agentID 또는 CSV의 endpoint_id로 시작 |
| endpoint.tenantID | principal.asset.attribute.cloud.project.id | JSON의 endpoint.tenantID에서 직접 복사한 값 |
| endpoint.deviceName | principal.asset.hostname | JSON의 endpoint.deviceName에서 직접 복사한 값 |
| endpoint.deviceName, endpoint_hostname | principal.hostname | JSON의 endpoint.deviceName 또는 CSV의 endpoint_hostname 값 |
| request.processName | principal.process.command_line | JSON의 request.processName에서 직접 복사한 값 |
| process_name | principal.process.file.names | CSV의 process_name에서 직접 복사된 값 |
| sso_user, user | principal.user.account_type | sso_user가 비어 있지 않으면 DOMAIN_ACCOUNT_TYPE으로 설정하고, 비어 있으면 CSV에서 LOCAL_ACCOUNT_TYPE으로 설정합니다. |
| endpoint.oidcUser | principal.user.email_addresses | 엔드포인트.oidcUser가 JSON의 이메일 정규식과 일치하는 경우 병합됨 |
| endpoint.oidcUser | principal.user.user_display_name | endpoint.oidcUser가 JSON의 이메일 정규식과 일치하지 않는 경우 값이 직접 복사됨 |
| endpoint.user, sso_user, user | principal.user.userid | JSON의 endpoint.user 값입니다. 비어 있지 않으면 sso_user, 그렇지 않으면 CSV의 user입니다. |
| security_result | security_result | JSON의 security_result에서 병합됨 |
| policy.verdict, verdict | security_result.action | JSON의 policy.verdict 또는 CSV의 verdict가 1이면 BLOCK, 0이면 ALLOW, 2이면 CHALLENGE로 설정됩니다. |
| categories | security_result.action_details | CSV의 카테고리에서 직접 복사한 값 |
| policy.policyName | security_result.rule_name | JSON의 policy.policyName에서 직접 복사한 값 |
| policy.policyType | security_result.rule_type | JSON의 policy.policyType에서 직접 복사한 값 |
| file_name | target.file.names | CSV의 file_name에서 직접 복사된 값 |
| file_hash | target.file.sha256 | CSV의 file_hash에서 직접 복사된 값 |
| destination.matchedDestination, domain | target.hostname | JSON에 IP가 없는 경우 destination.matchedDestination의 값, CSV의 경우 도메인 |
| destination.matchedDestination, destination.destinationIP, ip | target.ip | JSON에 IP가 있는 경우 destination.matchedDestination 또는 destination.destinationIP의 값, CSV에 있는 경우 ip의 값 |
| destination.url, url | target.url | JSON의 destination.url 값, CSV의 url 값 |
| metadata.product_name | JSON에서는 'DOPE_SWG', CSV에서는 'SWG'로 설정 | |
| metadata.vendor_name | JSON에서는 'DOPE_SWG', CSV에서는 'Dope Security'로 설정 |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.