Как отслеживать владельца и временную метку запроса, выполненного из пользовательского интерфейса biguquery - PullRequest
0 голосов
/ 27 марта 2020

У нас есть система для отслеживания всех запросов, выполненных в Google Bigquery. По сути, мы используем облачные API Google через утилиту gcloud, чтобы отслеживать запросы DDL / DML, мы храним имя пользователя, продолжительность выполнения запроса и метку времени в БД.

Однако в этих API я не могу отследить Запрос DDL, где таблица создана или удалена непосредственно из интерфейса Bigquery. Есть ли способ отследить, кто и когда запустил этот запрос

Ответы [ 3 ]

0 голосов
/ 30 марта 2020

Кажется, что вы не можете видеть созданную / удаленную таблицу при использовании пользовательского интерфейса с историей запросов. Но вы можете увидеть журналы в журналах Stackdriver с фильтрацией BigQuery. Задание BQ не создано, но есть вызов API, который можно отслеживать через журналы.

0 голосов
/ 20 апреля 2020

Из журналов аудита BigQuery можно выполнять поиск операций InsertTable (google.cloud.bigquery.v2.TableService.InsertTable) и DeleteTable (google.cloud.bigquery.v2.TableService.DeleteTable). Если есть действия этого типа, им показывается поле methodName, см. Пример ниже. Я получил это с этим запросом:

resource.type="bigquery_dataset"
"InsertTable" OR "DeleteTable"

Из каждой записи журнала, возвращенной поиском выше, проверьте для principalEmail и timestamp, даже, вы можете посмотреть на requestMetadata, чтобы получить больше информации о виновник. Вот пример:

{
 insertId: "yyyzzz"  
 logName: "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity"  
 protoPayload: {
  @type: "type.googleapis.com/google.cloud.audit.AuditLog"   
  authenticationInfo: {
   principalEmail: "user@test.com"    
  }
  authorizationInfo: [1]   
  metadata: {…}   
  methodName: "google.cloud.bigquery.v2.TableService.DeleteTable"   
  requestMetadata: {
   callerIp: "189.00.00.00"    
   callerSuppliedUserAgent: "Mozilla/5.0 (X11; CrOS x86_64 12739.105.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.158 Safari/537.36,gzip(gfe)"    
   destinationAttributes: {…}    
   requestAttributes: {…}    
  }
  resourceName: "projects/my-project/datasets/my-dataset/tables/my-table"   
  serviceName: "bigquery.googleapis.com"   
  status: {
  }
 }
 receiveTimestamp: "2020-03-31T16:51:31.977240157Z"  
 resource: {…}  
 severity: "NOTICE"  
 timestamp: "2020-03-31T16:51:31.590Z"  
}
0 голосов
/ 27 марта 2020

В пользовательском интерфейсе BigQuery вы можете проверить История запросов , чтобы просмотреть детали запроса, такие как:

  • Идентификатор задания
  • Пользователь
  • Время создания местоположения
  • Время начала
  • Время окончания
  • Длительность
  • Обработка байтов
  • Счет байтов
  • Задание priority
  • Таблица назначения
  • Использовать устаревшие SQL

Нажмите ссылку История запросов на панели навигации. На панели сведений истории запросов щелкните отдельное задание запроса, чтобы просмотреть сведения или открыть запрос в редакторе запросов. Когда вы открываете запрос в редакторе запросов, вы можете повторить запрос, щелкнув Выполнить запрос.

enter image description here

Я провел несколько тестов с использованием DDL такие операторы, как:

CREATE TEMP TABLE Example
( 
   x INT64,
   y STRING
);

INSERT INTO Example
VALUES (5, 'foo');

INSERT INTO Example
VALUES (6, 'bar');

SELECT *
FROM Example;

И я смог получить информацию о запросе с помощью пользовательского интерфейса BigQuery

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...