쿼리 기록 감사를 사용하면 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())