Как посмотреть аудиты истории запросов

Аудит истории запросов позволяет вам создавать отчет обо всех заданиях, выполняемых с использованием вашей учетной записи Ads Data Hub. Это позволяет вам ответить на вопросы, касающиеся того, кто имел доступ к вашим данным и когда они это сделали.

Аудит истории запросов записывается в виде таблиц BigQuery, содержащих записи журнала для всех запросов, выполняемых с использованием вашего аккаунта Ads Data Hub. Чтобы просмотреть аудит истории запросов для вашей учетной записи, вам необходимо сначала создать отчет через API. Каждый журнал аудита содержит данные за 1 день. Вы можете создать журнал аудита за любой день в течение последних 30 дней.

Аудит истории запросов доступен только суперпользователям. Подробнее о доступе на основе ролей

Формат аудита истории запросов

При каждом аудите истории запросов используется следующая схема:

Имя поля Описание
customer_id Идентификатор клиента Ads Data Hub
ads_customer_id Идентификатор субсчета, если он используется (в противном случае он будет идентичен customer_id).
match_table_customer_id Идентификатор учетной записи, содержащей таблицу соответствия, если она используется (в противном случае будет идентичен customer_id).
user_email Адрес электронной почты пользователя, выполнившего запрос
query_start_time Время начала выполнения запроса
query_end_time Время завершения выполнения запроса
тип_запроса Различает аналитические запросы и запросы аудитории.
query_resource_id Идентификатор, связанный с запросом
запрос_текст SQL запроса
параметры запроса
query_parameters.name Имя параметра запроса
query_parameters.value Значение, передаваемое через параметр запроса row_merge_summary.
row_merge_summary.column_name Название столбца
row_merge_summary.merge_type Тип сводки слияния строк
row_merge_summary.constant_value Значение набора констант (будет равно нулю, если константа не используется)
таблица_назначения Местоположение (в BigQuery), куда был записан запрос.

Доступ к аудиту истории запросов

Чтобы получить доступ к аудиту истории запросов, вам необходимо вызвать API. Найдите пример кода для вызова API ниже или просмотрите справочную документацию. и напишите свой собственный запрос.

Результаты запроса API будут записаны в набор данных BigQuery, который вы указываете в теле запроса API.


"""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())