Google SecOps CLI 사용자 가이드
Google Security Operations SDK는 터미널에서 Google SecOps 제품과 쉽게 상호작용할 수 있는 포괄적인 명령줄 인터페이스 (CLI)를 제공합니다. 새로운 secops
CLI는 향상된 기능과 개선된 사용자 환경으로 기존 chronicle_cli
을 대체합니다.
개요
secops
CLI는 다음 항목에 대한 액세스를 제공합니다.
- UDM 이벤트 검색 및 분석
- 피드, 전달자, 파서 관리
- 감지 규칙 만들기 및 관리하기
- 알림 및 케이스 처리
- 참조 목록 및 데이터 표 관리
- BigQuery 및 Google Cloud Storage로 데이터 내보내기
- Gemini AI에 보안 통계 쿼리
- 그 외 다양한 혜택
Google SecOps CLI 명령어는 다음 구문을 사용합니다.
$ secops COMMAND [SUBCOMMAND] [OPTIONS]
예를 들어 이벤트를 검색하려면 다음 단계를 따르세요.
$ secops search --query "metadata.event_type = \"NETWORK_CONNECTION\"" --time-window 24
시작하기 전에
Google SecOps CLI를 설치하기 전에 다음이 있어야 합니다.
- 환경에 Python 3.8 이상이 설치되어 있어야 합니다. 자세한 내용은 Python 설치를 참고하세요.
- 적절한 액세스 권한이 있는 Google SecOps 인스턴스
- 인증 사용자 인증 정보 (서비스 계정 또는 애플리케이션 기본 사용자 인증 정보)
설치
CLI가 포함된 SecOps SDK를 설치합니다.
pip install secops
설치를 확인합니다.
$ secops --help
인증
CLI는 여러 인증 방법을 지원합니다.
애플리케이션 기본 사용자 인증 정보 사용 (권장)
# Set up ADC with gcloud gcloud auth application-default login
서비스 계정 사용
서비스 계정 JSON 파일을 안전한 위치에 배치하고 명령어에서 참조합니다.
$ secops search --service-account "/path/to/service-account.json" --customer-id "your-instance-id" --project-id "your-project-id" --query "metadata.event_type = \"USER_LOGIN\""
구성
명령어에서 반복을 피하기 위해 일반적인 설정을 저장합니다.
구성 저장
# Save instance and authentication settings $ secops config set --customer-id "your-instance-id" --project-id "your-project-id" --region "us" # Save service account path (optional) $ secops config set --service-account "/path/to/service-account.json" --customer-id "your-instance-id" --project-id "your-project-id" # Set default time window $ secops config set --time-window 48
구성 보기
$ secops config view
구성 지우기
$ secops config clear
리전
CLI는 모든 Google SecOps 리전을 지원합니다. 다음을 사용하여 리전을 설정할 수 있습니다.
- 모든 명령어와 함께 사용되는
--region
플래그 secops config set --region REGION
를 사용하는 구성 파일
지원되는 지역은 다음과 같습니다.
* US
(기본값)
* EUROPE
* ASIA-SOUTHEAST1
* ASIA-SOUTH1
* AUSTRALIA-SOUTHEAST1
* EUROPE-WEST2
, EUROPE-WEST3
, EUROPE-WEST6
, EUROPE-WEST9
, EUROPE-WEST12
* 기타
핵심 명령어
이벤트 검색
쿼리 구문을 사용하여 UDM 이벤트를 검색합니다.
# Search with UDM query $ secops search --query "metadata.event_type = \"NETWORK_CONNECTION\"" --time-window 24 --max-events 100 # Search using natural language $ secops search --nl-query "show me failed login attempts" --time-window 24 # Export results as CSV $ secops search --query "metadata.event_type = \"USER_LOGIN\" AND security_result.action = \"BLOCK\"" \ --fields "metadata.event_timestamp,principal.user.userid,principal.ip" \ --time-window 24 --csv
법인 정보
IP, 도메인 또는 파일 해시에 대한 자세한 정보를 가져옵니다.
$ secops entity --value "8.8.8.8" --time-window 24 $ secops entity --value "example.com" --time-window 24 $ secops entity --value "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" --time-window 24
통계
데이터에 대한 통계 분석을 실행합니다.
$ secops stats --query "metadata.event_type = \"NETWORK_CONNECTION\" match: target.hostname outcome: \$count = count(metadata.id) order: \$count desc" --time-window 24
피드 관리
Google SecOps에서 데이터 수집 피드를 관리합니다.
피드 나열
$ secops feed list
피드 만들기
# Create an HTTP feed $ secops feed create \ --display-name "My HTTP Feed" \ --details '{"logType":"projects/your-project-id/locations/us/instances/your-instance-id/logTypes/WINEVTLOG","feedSourceType":"HTTP","httpSettings":{"uri":"https://example.com/feed","sourceType":"FILES"}}'
피드 업데이트
$ secops feed update --id "feed-123" --display-name "Updated Feed Name"
피드 사용 설정/사용 중지
$ secops feed enable --id "feed-123" $ secops feed disable --id "feed-123"
피드 삭제
$ secops feed delete --id "feed-123"
파서 관리
파서는 원시 로그 데이터를 처리하고 UDM 형식으로 정규화합니다.
파서 나열
$ secops parser list $ secops parser list --log-type "WINDOWS"
파서 세부정보 가져오기
$ secops parser get --log-type "WINDOWS" --id "pa_12345"
파서 만들기
# Create from file $ secops parser create --log-type "CUSTOM_LOG" --parser-code-file "/path/to/parser.conf" # Create from string $ secops parser create --log-type "CUSTOM_LOG" --parser-code "filter { mutate { add_field => { \"test\" => \"value\" } } }"
테스트 파서
배포 전에 샘플 로그에 대해 파서를 테스트합니다.
# Test with inline logs $ secops parser run \ --log-type OKTA \ --parser-code-file "./parser.conf" \ --log '{"message": "Test log 1"}' \ --log '{"message": "Test log 2"}' # Test with logs from file $ secops parser run \ --log-type WINDOWS \ --parser-code-file "./parser.conf" \ --logs-file "./sample_logs.txt"
파서 활성화/비활성화
$ secops parser activate --log-type "WINDOWS" --id "pa_12345" $ secops parser deactivate --log-type "WINDOWS" --id "pa_12345"
파서 삭제
$ secops parser delete --log-type "WINDOWS" --id "pa_12345"
파서 확장 프로그램 관리
파서 확장 프로그램은 기존 파서를 대체하지 않고 확장합니다.
확장 프로그램 나열
$ secops parser-extension list --log-type OKTA
확장 프로그램 만들기
$ secops parser-extension create --log-type OKTA \ --log /path/to/sample.log \ --parser-config-file /path/to/parser-config.conf
확장 프로그램 활성화
$ secops parser-extension activate --log-type OKTA --id "1234567890"
전달자 관리
포워더는 특정 구성으로 로그를 수집하는 데 사용됩니다.
전달자 만들기
# Basic forwarder $ secops forwarder create --display-name "my-custom-forwarder" # With metadata and settings $ secops forwarder create --display-name "prod-forwarder" \ --metadata '{"environment":"prod","team":"security"}' \ --upload-compression true \ --http-settings '{"port":80,"host":"example.com"}'
전달자 나열
$ secops forwarder list --page-size 100
전달자 가져오기
$ secops forwarder get --id "1234567890"
전달자 업데이트
$ secops forwarder update --id "1234567890" --display-name "updated-name"
전달자 삭제
$ secops forwarder delete --id "1234567890"
로그 수집
Google SecOps에 로그를 수집합니다.
원시 로그 수집
# From file $ secops log ingest --type "OKTA" --file "/path/to/okta_logs.json" # With labels $ secops log ingest --type "WINDOWS" --file "/path/to/logs.xml" \ --labels "environment=production,team=security" # Inline message $ secops log ingest --type "WINDOWS" --message "{\"event\": \"data\"}"
UDM 이벤트 수집
$ secops log ingest-udm --file "/path/to/udm_event.json"
로그 유형 나열
$ secops log types $ secops log types --search "windows"
UDM 매핑 생성
$ secops log generate-udm-mapping \ --log-format "JSON" \ --log '{"id":"123","user":"test_user","source_ip":"192.168.1.10"}'
규칙 관리
감지 규칙을 관리합니다.
규칙 나열
$ secops rule list --page-size 50
규칙 만들기
$ secops rule create --file "/path/to/rule.yaral"
규칙 업데이트
$ secops rule update --id "ru_12345" --file "/path/to/updated_rule.yaral"
규칙 사용 설정/사용 중지
$ secops rule enable --id "ru_12345" --enabled true $ secops rule enable --id "ru_12345" --enabled false
규칙 테스트
이전 데이터에 대한 규칙을 테스트하려면 다음 단계를 따르세요.
# Test for last 24 hours $ secops rule test --file "/path/to/rule.yaral" --time-window 24 # Test with specific time range $ secops rule test --file "/path/to/rule.yaral" \ --start-time "2023-07-01T00:00:00Z" \ --end-time "2023-07-02T00:00:00Z" \ --max-results 1000
규칙 검증
$ secops rule validate --file "/path/to/rule.yaral"
규칙 삭제
$ secops rule delete --id "ru_12345"
알림 관리
알림을 받고 관리하려면 다음 단계를 따르세요.
$ secops alert --time-window 24 --max-alerts 50 $ secops alert --snapshot-query "feedback_summary.status != \"CLOSED\"" --time-window 24
케이스 관리
케이스 세부정보를 가져옵니다.
$ secops case --ids "case-123,case-456"
데이터 테이블
데이터 테이블은 감지 규칙에 사용되는 구조화된 데이터 모음입니다.
데이터 테이블 만들기
$ secops data-table create \ --name "suspicious_ips" \ --description "Known suspicious IP addresses" \ --header '{"ip_address":"CIDR","description":"STRING","severity":"STRING"}'
행 추가
$ secops data-table add-rows \ --name "suspicious_ips" \ --rows '[["192.168.1.100","Scanning activity","Medium"]]'
행 나열
$ secops data-table list-rows --name "suspicious_ips"
데이터 테이블 삭제
$ secops data-table delete --name "suspicious_ips"
참조 목록
참조 목록은 감지 규칙의 단순한 값 목록입니다.
참조 목록 만들기
$ secops reference-list create \ --name "admin_accounts" \ --description "Administrative accounts" \ --entries "admin,administrator,root,superuser"
참조 목록 업데이트
$ secops reference-list update \ --name "admin_accounts" \ --entries "admin,administrator,root,superuser,sysadmin"
참조 목록 나열
$ secops reference-list list
데이터 내보내기
분석을 위해 데이터 내보내기:
내보내기 만들기
# Export specific log type $ secops export create \ --gcs-bucket "projects/my-project/buckets/my-bucket" \ --log-type "WINDOWS" \ --time-window 24 # Export all logs $ secops export create \ --gcs-bucket "projects/my-project/buckets/my-bucket" \ --all-logs \ --time-window 168
내보내기 상태 확인
$ secops export status --id "export-123"
내보내기 취소
$ secops export cancel --id "export-123"
내보낼 수 있는 로그 유형 나열
$ secops export log-types --time-window 24
Gemini AI 통합
Gemini AI에 보안 통계 쿼리:
# Ask about security concepts $ secops gemini --query "What is Windows event ID 4625?" # Generate detection rules $ secops gemini --query "Write a rule to detect PowerShell downloading files" # Get vulnerability information $ secops gemini --query "Tell me about CVE-2021-44228"
Gemini 사용 설정하기:
$ secops gemini --opt-in
대시보드 관리
기본 대시보드 관리:
대시보드 만들기
$ secops dashboard create \ --display-name "Security Overview" \ --description "Security monitoring dashboard" \ --access-type PRIVATE
대시보드 나열
$ secops dashboard list --page-size 10
대시보드 업데이트
$ secops dashboard update --id dashboard-id \ --display-name "Updated Security Dashboard" \ --description "Updated security monitoring dashboard"
대시보드 내보내기/가져오기
# Export $ secops dashboard export --dashboard-names 'projects/your-project-id/locations/us/instances/your-instance-id/nativeDashboard/xxxxxxx' # Import $ secops dashboard import --dashboard-data-file dashboard_data.json
대시보드에 차트 추가
$ secops dashboard add-chart --dashboard-id dashboard-id \ --display-name "DNS Query Chart" \ --description "Shows DNS query patterns" \ --query-file dns_query.txt \ --chart_layout '{"startX": 0, "spanX": 12, "startY": 0, "spanY": 8}'
대시보드 삭제
$ secops dashboard delete --id dashboard-id
고급 예
파서 워크플로 완료
파서를 가져오고, 테스트하고, 배포합니다.
# List parsers $ secops parser list --log-type "OKTA" > okta_parsers.json # Get parser details PARSER_ID=$(cat okta_parsers.json | jq -r '.[0].name' | awk -F'/' '{print $NF}') $ secops parser get --log-type "OKTA" --id "$PARSER_ID" > parser_details.json # Extract parser code cat parser_details.json | jq -r '.cbn' | base64 -d > okta_parser.conf # Test parser $ secops parser run \ --log-type "OKTA" \ --parser-code-file "okta_parser.conf" \ --logs-file "sample_logs.txt" > parser_result.json # Activate if successful $ secops parser activate --log-type "OKTA" --id "$PARSER_ID"
검색 및 내보내기 워크플로
이벤트를 검색하고 결과를 내보내려면 다음 단계를 따르세요.
# Search for failed logins $ secops search \ --query "metadata.event_type = \"USER_LOGIN\" AND security_result.action = \"BLOCK\"" \ --fields "metadata.event_timestamp,principal.user.userid,principal.ip" \ --time-window 24 \ --csv > failed_logins.csv # Get entity details for suspicious IPs cat failed_logins.csv | awk -F',' '{print $3}' | sort -u | while read ip; do secops entity --value "$ip" --time-window 72 done
규칙 테스트 및 배포
감지 규칙을 만들고 테스트하고 배포합니다.
# Create rule file cat > suspicious_activity.yaral << 'EOF' rule suspicious_powershell { meta: description = "Detects suspicious PowerShell activity" severity = "Medium" events: $e.metadata.event_type = "PROCESS_LAUNCH" $e.principal.process.file.full_path = /powershell\.exe/i nocase $e.principal.process.command_line = /download|invoke-expression|hidden/i nocase condition: $e } EOF # Validate rule $ secops rule validate --file suspicious_activity.yaral # Test against historical data $ secops rule test --file suspicious_activity.yaral --time-window 168 # Create and enable if tests pass $ secops rule create --file suspicious_activity.yaral $ secops rule enable --id "ru_generated_id" --enabled true
문제 해결
일반적인 문제
인증 오류
인증 오류가 발생하면 다음 단계를 따르세요.
- 사용자 인증 정보가 유효한지 확인
- 서비스 계정에 필요한 권한이 있는지 확인
- ADC가 올바르게 구성되어 있는지 확인합니다.
gcloud auth application-default login
지역 오류
지역 관련 오류가 발생하는 경우:
- 리전이 지원되는지 확인
- 인스턴스가 지정된 리전에 있는지 확인
--region
플래그 사용 또는 구성에서 설정
비율 제한
비율 제한 문제의 경우:
- API 호출 빈도 줄이기
- 대규모 결과 집합에 페이지로 나누기 사용
- 재시도를 위해 지수 백오프 구현
도움말 보기
모든 명령어의 도움말을 확인합니다.
$ secops --help $ secops search --help $ secops rule create --help
chronicle_cli에서 이전
기존 chronicle_cli
에서 이전하는 경우 일반적인 명령어의 매핑은 다음과 같습니다.
chronicle_cli | SecOps |
---|---|
chronicle_cli feeds create |
secops feed create |
chronicle_cli feeds list |
secops feed list |
chronicle_cli feeds update |
secops feed update |
chronicle_cli feeds delete |
secops feed delete |
chronicle_cli parsers list |
secops parser list |
chronicle_cli parsers create |
secops parser create |
chronicle_cli parsers activate |
secops parser activate |
chronicle_cli forwarders create |
secops forwarder create |
chronicle_cli forwarders list |
secops forwarder list |
새로운 secops
CLI는 다음과 같이 chronicle_cli
에서 사용할 수 없는 다양한 추가 기능을 제공합니다.
- 자연어 검색
- Gemini AI 통합
- 대시보드 관리
- 규칙 테스트 및 검증
- 데이터 테이블 및 참조 목록
- 케이스 관리
- 그 외 다양한 혜택