BigQuery를 Google SecOps와 통합
이 문서에서는 BigQuery를 Google Security Operations와 통합하는 방법을 설명합니다.
사용 사례
BigQuery 통합은 Google SecOps 기능을 사용하여 다음 사용 사례를 지원합니다.
위협 인텔리전스 보강: BigQuery에 저장된 위협 인텔리전스 데이터로 보안 알림을 자동으로 보강하여 잠재적 위협의 심각도와 신뢰도를 평가합니다.
사용자 행동 분석: BigQuery에 저장된 이전 로그를 분석하여 비정상적인 사용자 활동을 식별하여 내부자 위협과 도용된 계정을 감지합니다.
보안 데이터 레이크 분석: BigQuery 쿼리 기능을 사용하여 다양한 소스에서 집계된 대량의 보안 데이터를 분석하여 위협 헌팅을 개선합니다.
고급 ML/AI 분석: 이전 보안 데이터와 BigQuery ML을 사용하여 예측 방어 및 자동 위험 점수 지정을 위한 맞춤 모델을 빌드합니다.
장기 데이터 보관: 비용 효율적인 장기 스토리지를 위해 해결된 인시던트 데이터를 BigQuery에 보관처리하여 규정 준수 및 포렌식 감사를 지원합니다.
시작하기 전에
Google SecOps에서 BigQuery 통합을 구성하기 전에 다음 필수 단계를 완료하세요.
서비스 계정에 필요한 Identity and Access Management 역할을 부여합니다.
다음 인증 방법 중 하나를 선택하고 구성합니다.
옵션 1: 워크로드 아이덴티티 (권장): 이 방법은 서비스 계정 가장을 사용하여 단기 임시 액세스 토큰을 사용합니다.
옵션 2: 서비스 계정 JSON 키: 이 방법은 정적이고 수명이 긴 보안 비밀 키 파일을 사용합니다.
IAM 역할 부여
서비스 계정에 필요한 권한을 부여하면 통합에서 작업을 실행하고 데이터에 액세스할 수 있습니다. 다음 표준 역할은 Google Cloud 에서 관리하며 API 요구사항이 변경되면 자동으로 업데이트됩니다. 서비스 계정에 이러한 역할을 할당하려면 다음 단계를 완료하세요.
Google Cloud 콘솔에서 IAM으로 이동합니다.
주 구성원 목록에서 서비스 계정을 찾아 주 구성원 수정 (수정)을 클릭합니다.
다른 역할 추가를 클릭하고 다음을 선택합니다.
BigQuery 사용자 (
roles/bigquery.user): 통합에서 프로젝트 내에서 쿼리를 비롯한 작업을 실행할 수 있습니다.BigQuery 데이터 뷰어 (
roles/bigquery.dataViewer): 통합에서 데이터 세트 및 테이블의 데이터와 메타데이터를 읽을 수 있습니다.서비스 사용량 소비자 (
roles/serviceusage.serviceUsageConsumer): 통합 설정에서Quota Project ID을 구성하는 경우 필수입니다.
저장을 클릭합니다.
서비스 계정 만들기
Google Cloud 콘솔에서 IAM 및 관리자 > 서비스 계정으로 이동합니다.
추가 서비스 계정 만들기를 클릭합니다.
이름과 설명을 입력하고 만들고 계속하기를 클릭합니다.
이 서비스 계정에 프로젝트에 대한 액세스 권한 부여 단계에서 이전 단계에서 확인한 역할을 추가합니다.
완료를 클릭합니다. 서비스 계정의 이메일 주소를 기록해 둡니다.
워크로드 아이덴티티 사용자 인증 정보 구성
워크로드 아이덴티티는 서비스 계정 가장을 사용하여 단기 액세스 토큰을 사용하므로 권장되는 접근 방식입니다.
고유 인스턴스 ID 식별
연결을 설정하려면 Google SecOps 인스턴스에 서비스 계정을 가장할 권한을 부여해야 합니다.
Google SecOps에서 콘텐츠 허브 > 응답 통합으로 이동합니다.
BigQuery 통합을 선택하고
Workload Identity Email필드에 서비스 계정 이메일을 입력합니다.저장 > 테스트를 클릭합니다. 테스트가 실패할 것으로 예상됩니다.
테스트 옆에 있는 close_small 버튼을 클릭하고
gke-init-python@...또는soar-python@...로 시작하는 ID 이메일을 찾습니다.이 고유 이메일 주소를 복사합니다.
Google Cloud에서 인스턴스 ID 승인
Google Cloud 콘솔에서 IAM 및 관리자 > 서비스 계정으로 이동합니다.
타겟 서비스 계정을 선택하고 권한 > 액세스 권한 부여로 이동합니다.
고유 이메일 주소를 새 주 구성원 필드에 붙여넣고 서비스 계정 토큰 생성자 역할(
roles/iam.serviceAccountTokenCreator)을 할당합니다.
JSON 키 구성
정적이고 수명이 긴 보안 비밀 키 파일은 수동으로 순환해야 합니다. 워크로드 아이덴티티 인증을 사용할 수 없는 경우에만 이 방법을 사용하세요.
Google Cloud 콘솔에서 IAM 및 관리자 > 서비스 계정으로 이동하여 서비스 계정을 선택합니다.
키 탭으로 이동하여 키 추가 > 새 키 만들기를 클릭합니다.
JSON을 선택하고 만들기를 클릭합니다. 파일이 컴퓨터에 자동으로 다운로드됩니다.
수동 개별 매개변수 구성
사용자 인증 정보를 수동으로 입력하려면 다운로드한 JSON 키 파일을 텍스트 편집기에서 열어 통합 설정에 필요한 개별 값을 복사하세요.
통합 매개변수
Google SecOps와 BigQuery 간의 연결을 설정하려면 다음 매개변수를 구성해야 합니다. 통합은 세 가지 고유한 인증 경로를 지원합니다. 다음 방법 중 하나를 선택하여 사용자 인증 정보를 제공합니다.
워크로드 아이덴티티:
Workload Identity Email및Quota Project ID을 사용합니다.서비스 계정 JSON 파일:
Service Account Json File Content를 사용하여 전체 키를 한 번에 제공합니다.수동 개별 매개변수: JSON 키에서 수동으로 복사한 별도의 필드를 사용합니다.
| 매개변수 | 설명 |
|---|---|
API Root |
선택사항입니다. BigQuery 인스턴스의 API 루트입니다 (예: |
Workload Identity Email |
선택사항입니다. 서비스 계정의 클라이언트 이메일 주소입니다. 워크로드 아이덴티티 인증에 사용합니다. |
Service Account Json File Content |
선택사항입니다. 서비스 계정 키 JSON 파일의 전체 콘텐츠입니다. 이 파라미터를 구성하면 통합에서 개별 사용자 인증 정보 파라미터를 무시합니다. |
Quota Project ID |
선택사항입니다. API 사용 및 결제에 사용되는 프로젝트 ID입니다. 워크로드 아이덴티티 인증을 사용하는 경우 이 매개변수가 필요합니다. |
Project ID |
선택사항입니다. BigQuery에서 타겟팅할 프로젝트 ID입니다. |
Verify SSL |
필수 항목입니다. 연결의 SSL 인증서를 검증합니다. 기본적으로 사용 설정됩니다. |
개별 사용자 인증 정보 매개변수
전체 JSON 파일 콘텐츠 또는 워크로드 아이덴티티를 사용하는 대신 사용자 인증 정보를 수동으로 입력하는 경우에만 다음 매개변수를 사용하세요.
| 매개변수 | 설명 |
|---|---|
Account Type |
선택사항입니다. JSON 키의 |
Private Key ID |
선택사항입니다. JSON 키의 |
Private Key |
선택사항입니다. JSON 키의 |
Client Email |
선택사항입니다. JSON 키의 |
Client ID |
선택사항입니다. JSON 키의 |
Auth URI |
선택사항입니다. JSON 키의 기본값은 |
Token URI |
선택사항입니다. JSON 키의 기본값은 |
Auth Provider X509 URL |
선택사항입니다. JSON 키의 |
Client X509 URL |
선택사항입니다. JSON 키의 |
Google SecOps에서 통합을 구성하는 방법에 대한 안내는 통합 구성을 참고하세요.
필요한 경우 이후 단계에서 변경할 수 있습니다. 통합 인스턴스를 구성한 후 플레이북에서 사용할 수 있습니다. 여러 인스턴스를 구성하고 지원하는 방법에 관한 자세한 내용은 여러 인스턴스 지원을 참고하세요.
작업
작업에 대한 자세한 내용은 Workdesk에서 대기 중인 작업에 응답 및 직접 조치 실행을 참고하세요.
핑
Ping 작업을 사용하여 BigQuery와의 연결을 테스트합니다.
이 작업은 Google SecOps 항목에서 실행되지 않습니다.
작업 입력
없음
작업 출력
Ping 작업은 다음 출력을 제공합니다.
| 작업 출력 유형 | 가용성 |
|---|---|
| 케이스 월 연결 | 사용 불가 |
| 케이스 월 링크 | 사용 불가 |
| 케이스 월 테이블 | 사용 불가 |
| 보강 테이블 | 사용 불가 |
| JSON 결과 | 사용 불가 |
| 출력 메시지 | 사용 가능 |
| 스크립트 결과 | 사용 가능 |
출력 메시지
Ping 작업은 다음 출력 메시지를 반환할 수 있습니다.
| 출력 메시지 | 메시지 설명 |
|---|---|
Successfully connected to the Google BigQuery server with
the provided connection parameters! |
작업이 완료되었습니다. |
Failed to connect to the Google BigQuery server! Error is
ERROR_REASON |
작업이 실패했습니다. 서버, 입력 매개변수 또는 사용자 인증 정보에 대한 연결을 확인합니다. |
스크립트 결과
다음 표에는 Ping 작업을 사용할 때 스크립트 결과 출력 값이 나와 있습니다.
| 스크립트 결과 이름 | 값 |
|---|---|
is_success |
True 또는 False |
맞춤 쿼리 실행
맞춤 쿼리 실행 작업을 사용하여 BigQuery에서 맞춤 쿼리를 실행합니다.
이 작업은 Google SecOps 항목에서 실행되지 않습니다.
작업 입력
맞춤 쿼리 실행 작업에는 다음 매개변수가 필요합니다.
| 매개변수 | 설명 |
|---|---|
Query |
필수 항목입니다. 실행할 SQL 쿼리입니다. |
Max Results To Return |
선택사항입니다. 각 응답에 대해 반환할 결과 수입니다. 기본값은 |
작업 출력
맞춤 쿼리 실행 작업은 다음 출력을 제공합니다.
| 작업 출력 유형 | 가용성 |
|---|---|
| 케이스 월 연결 | 사용 불가 |
| 케이스 월 링크 | 사용 불가 |
| 케이스 월 테이블 | 사용 불가 |
| 보강 테이블 | 사용 불가 |
| JSON 결과 | 사용 가능 |
| 출력 메시지 | 사용 가능 |
| 스크립트 결과 | 사용 가능 |
JSON 결과
다음 예는 맞춤 쿼리 실행 작업을 사용할 때 수신되는 JSON 결과 출력을 보여줍니다.
{
"Airport_Code": "CODE",
"Airport_Name": "NAME",
"Time_Label": "2015/05",
"Time_Month": 5,
"Time_Month_Name": "May",
"Time_Year": 2015,
"Statistics___of_Delays_Carrier": 351,
"Statistics___of_Delays_Late_Aircraft": 546,
"Statistics___of_Delays_National_Aviation_System": 292,
"Statistics___of_Delays_Security": 2,
"Statistics___of_Delays_Weather": 100,
"Statistics_Carriers_Names": "Example Air Lines Inc., Example Airlines Co.",
"Statistics_Carriers_Total": 3,
"Statistics_Flights_Cancelled": 88,
"Statistics_Flights_Delayed": 1289,
"Statistics_Flights_Diverted": 32,
"Statistics_Flights_On_Time": 6182,
"Statistics_Flights_Total": 7591,
"Statistics_Minutes_Delayed_Carrier": 19332,
"Statistics_Minutes_Delayed_Late_Aircraft": 34376,
"Statistics_Minutes_Delayed_National_Aviation_System": 12346,
"Statistics_Minutes_Delayed_Security": 48,
"Statistics_Minutes_Delayed_Total": 76163,
"Statistics_Minutes_Delayed_Weather": 100061
}
출력 메시지
맞춤 쿼리 실행 작업은 다음 출력 메시지를 반환할 수 있습니다.
| 출력 메시지 | 메시지 설명 |
|---|---|
Successfully executed query in Google BigQuery! |
작업이 완료되었습니다. |
Error executing action "Run Custom Query". Reason:
ERROR_REASON |
작업이 실패했습니다. 서버, 입력 매개변수 또는 사용자 인증 정보에 대한 연결을 확인합니다. |
스크립트 결과
다음 표에는 맞춤 쿼리 실행 작업을 사용할 때 스크립트 결과 출력 값이 나와 있습니다.
| 스크립트 결과 이름 | 값 |
|---|---|
is_success |
True 또는 False |
SQL 쿼리 실행
SQL 쿼리 실행 작업을 사용하여 BigQuery에서 쿼리를 실행합니다.
이 작업은 Google SecOps 항목에서 실행되지 않습니다.
작업 입력
SQL 쿼리 실행 작업에는 다음 매개변수가 필요합니다.
| 매개변수 | 설명 |
|---|---|
Dataset Name |
필수 항목입니다. 쿼리를 실행할 때 사용할 데이터 세트의 이름입니다. |
Query |
필수 항목입니다. 실행할 SQL 쿼리입니다. |
Max Results To Return |
선택사항입니다. 각 응답에 대해 반환할 결과 수입니다. 기본값은 |
작업 출력
SQL 쿼리 실행 작업은 다음 출력을 제공합니다.
| 작업 출력 유형 | 가용성 |
|---|---|
| 케이스 월 연결 | 사용 불가 |
| 케이스 월 링크 | 사용 불가 |
| 케이스 월 테이블 | 사용 불가 |
| 보강 테이블 | 사용 불가 |
| JSON 결과 | 사용 불가 |
| 출력 메시지 | 사용 가능 |
| 스크립트 결과 | 사용 가능 |
JSON 결과
다음 예에서는 SQL 쿼리 실행 작업을 사용할 때 수신되는 JSON 결과 출력을 설명합니다.
{
"Airport_Code": "CODE",
"Airport_Name": "NAME",
"Time_Label": "2015/05",
"Time_Month": 5,
"Time_Month_Name": "May",
"Time_Year": 2015,
"Statistics___of_Delays_Carrier": 351,
"Statistics___of_Delays_Late_Aircraft": 546,
"Statistics___of_Delays_National_Aviation_System": 292,
"Statistics___of_Delays_Security": 2,
"Statistics___of_Delays_Weather": 100,
"Statistics_Carriers_Names": "Example Airlines Inc.,Example Airlines Co.",
"Statistics_Carriers_Total": 3,
"Statistics_Flights_Cancelled": 88,
"Statistics_Flights_Delayed": 1289,
"Statistics_Flights_Diverted": 32,
"Statistics_Flights_On_Time": 6182,
"Statistics_Flights_Total": 7591,
"Statistics_Minutes_Delayed_Carrier": 19332,
"Statistics_Minutes_Delayed_Late_Aircraft": 34376,
"Statistics_Minutes_Delayed_National_Aviation_System": 12346,
"Statistics_Minutes_Delayed_Security": 48,
"Statistics_Minutes_Delayed_Total": 76163,
"Statistics_Minutes_Delayed_Weather": 100061
}
출력 메시지
SQL 쿼리 실행 작업은 다음 출력 메시지를 반환할 수 있습니다.
| 출력 메시지 | 메시지 설명 |
|---|---|
Successfully executed query in the BigQuery dataset
DATASET_NAME. |
작업이 완료되었습니다. |
Error executing action "Run SQL Query". Reason:
ERROR_REASON |
작업이 실패했습니다. 서버, 입력 매개변수 또는 사용자 인증 정보에 대한 연결을 확인합니다. |
스크립트 결과
다음 표에는 SQL 쿼리 실행 작업을 사용할 때 스크립트 결과 출력 값이 나와 있습니다.
| 스크립트 결과 이름 | 값 |
|---|---|
is_success |
True 또는 False |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.