Conferir auditorias do histórico de consultas

Com esse tipo de auditoria, é possível gerar um relatório de todos os trabalhos executados usando sua conta do Ads Data Hub. Assim, você pode responder a perguntas sobre quem acessou seus dados e quando.

As auditorias do histórico de consultas são gravadas como tabelas do BigQuery que contêm entradas de registro de todas as consultas executadas usando sua conta do Ads Data Hub. Para conferir as auditorias do histórico de consultas da sua conta, primeiro é necessário gerar o relatório usando uma API. Cada registro de auditoria contém dados referentes a um dia. Você pode gerar um registro de auditoria para qualquer um dos últimos 30 dias.

As auditorias do histórico de consultas estão disponíveis apenas para superusuários. Saiba mais sobre o acesso com base em papéis.

Formato de auditoria do histórico de consultas

Cada auditoria usa o seguinte esquema:

Nome do campo Descrição
customer_id O ID de cliente do Ads Data Hub.
ads_customer_id O ID da subconta, se usado (idêntico a customer_id).
match_table_customer_id O ID da conta que inclui a tabela de correspondências, se usado (idêntico a customer_id).
user_email Endereço de e-mail do usuário que executou a consulta.
query_start_time Hora em que a consulta começou a ser executada.
query_end_time Hora em que a execução da consulta terminou.
query_type Diferencia entre consultas de análise e de público-alvo.
query_resource_id O ID associado à consulta.
query_text O SQL da consulta.
query_parameters
query_parameters.name O nome do parâmetro da consulta.
query_parameters.value O valor transmitido pela linha row_merge_summary do parâmetro da consulta.
row_merge_summary.column_name O nome da coluna.
row_merge_summary.merge_type O tipo de resumo da mesclagem de linhas.
row_merge_summary.constant_value O valor do conjunto de constantes ("nulo" se nenhuma constante for usada).
destination_table O local (no BigQuery) em que a consulta foi criada.

Acessar auditorias do histórico de consultas

Para acessar as auditorias do histórico de consultas, chame a API. Confira abaixo um exemplo de código para chamar a API ou consulte a documentação de referência e crie sua própria consulta.

Os resultados da solicitação de API vão ser gravados no conjunto de dados do BigQuery que você especificar no corpo da solicitação.


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