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

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

Аудиты истории запросов составляются в виде таблиц BigQuery с записями в журналах для всех запросов, выполненных с использованием вашего аккаунта Ads Data Hub. Чтобы посмотреть аудиты истории запросов для своего аккаунта, сначала нужно создать отчет с помощью API. Каждый журнал аудита содержит данные за один день. Журнал аудита можно создать для любого дня из последних 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_type Используется для того, чтобы различать запросы анализа и запросы аудиторий.
query_resource_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 Заданное значение константы (будет равно нулю, если константа не используется).
destination_table Таблица в BigQuery, в которую был записан запрос.

Как получить доступ к аудитам истории запросов

Чтобы получить доступ к аудитам истории запросов, нужно вызвать 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())