쿼리 기록 감사 보기

쿼리 기록 감사를 사용하면 Ads Data Hub 계정을 사용하여 실행된 모든 작업에 대한 보고서를 생성할 수 있습니다. 이를 통해 데이터에 누가 액세스했는지, 언제 액세스했는지 확인할 수 있습니다.

쿼리 기록 감사는 Ads Data Hub 계정을 사용하여 실행된 모든 쿼리에 대한 로그 항목이 포함된 BigQuery 테이블로 작성됩니다. 계정의 쿼리 기록 감사를 보려면 먼저 API를 통해 보고서를 생성해야 합니다. 각 감사 로그에는 1일 분량의 데이터가 포함됩니다. 지난 30일 이내라면 어떤 날에 대해서도 감사 로그를 생성할 수 있습니다.

쿼리 기록 감사는 수퍼유저만 사용할 수 있습니다. 역할 기반 액세스에 대해 자세히 알아보기

쿼리 기록 감사 형식

각 쿼리 기록 감사에서는 다음 스키마를 사용합니다.

필드 이름 설명
customer_id Ads Data Hub 고객 ID
ads_customer_id 하위 계정의 ID(사용된 경우)(그렇지 않으면 customer_id와 동일함)
match_table_customer_id 데이터 이동 색인이 포함된 계정의 ID(사용된 경우)(그렇지 않으면 customer_id와 동일함)
user_email 쿼리를 실행한 사용자의 이메일 주소
query_start_time 쿼리 실행이 시작된 시간
query_end_time 쿼리 실행이 완료된 시간
query_type 분석 쿼리와 잠재고객 쿼리를 구분합니다.
query_resource_id 쿼리와 연결된 ID
query_text 쿼리의 SQL
query_parameters
query_parameters.name 쿼리 매개변수의 이름
query_parameters.value 쿼리의 매개변수 row_merge_summary를 통해 전달된 값
row_merge_summary.column_name 열 이름
row_merge_summary.merge_type 행 병합 요약의 유형
row_merge_summary.constant_value 상수 집합의 값(상수가 사용되지 않는 경우 null임)
destination_table 쿼리가 기록된 BigQuery 내 위치

쿼리 기록 감사 액세스

쿼리 기록 감사에 액세스하려면 API를 호출해야 합니다. 아래에서 API 호출을 위한 샘플 코드를 찾거나 참조 문서를 보고 직접 쿼리를 작성하세요.

API 요청의 결과는 API 요청의 본문에서 지정하는 BigQuery 데이터 세트에 기록됩니다.


"""This sample shows how to create a query history audit.

For the program to execute successfully, ensure that you run it using Python 3.
"""

from __future__ import print_function
from json import dumps
from google_auth_oauthlib import flow
from googleapiclient.discovery import build

appflow = flow.InstalledAppFlow.from_client_secrets_file(
  # Replace client_secrets.json with your own client secret file.
  'client_secrets.json',
  scopes=['https://www.googleapis.com/auth/adsdatahub'])
appflow.run_local_server()
credentials = appflow.credentials
developer_key = input('Developer key: ').strip()
service = build('adsdatahub', 'v1', credentials=credentials,
                developerKey=developer_key)

def pprint(x):
  print(dumps(x, sort_keys=True, indent=4))

customer_id = input('Customer ID (e.g. "customers/123"): ').strip()
bq_project = input('Destination BigQuery project ID (e.g. "your-project"): ').strip()
dataset_id = input('Destination BigQuery dataset (e.g. "your-dataset"): ').strip()
start = input('The start date for your query history audit. Formatted as "mm/dd/yyyy": ').strip().split('/')
end = input('The end date for your query history audit. Should be 1 day later than start_date. Formatted as "mm/dd/yyyy": ').strip().split('/')

choice = input("Do you want to enter a timezone? Defaults to UTC otherwise. (y/n) ")

if choice.lower() == 'y':
  timezone = input("Timezone (e.g. 'UTC'): ")
else:
  timezone = 'UTC'

body = {
  'project_id': bq_project,
  'dataset': dataset_id,
  'start_date': {
      'year': start[2],
      'day': start[1],
      'month': start[0]
  },
  'end_date': {
      'year': end[2],
      'day': end[1],
      'month': end[0]
  },
  'time_zone': timezone
}

pprint(service.customers().exportJobHistory(customer=customer_id, body=body).execute())