将userId映射到其关联的电子邮件

时间:2019-12-05 13:41:38

标签: google-bigquery

当我在控制台中运行以下命令时,它将返回标题为“ userId”的列(这是deprecated字段)。如何将此userId映射到其电子邮件地址或用户名?

<REDACTED>@cloudshell:~ (project-id)$ bq show \ 
--transfer_config \
projects/<XXX>/locations/europe/transferConfigs/<XXX>

返回的userID值是一个19个字符的整数。

这个问题的原因是我们有大量的计划查询和转帐,并且想知道使用其凭据的帐户。

我以前在Serverfault上问过这个问题,并被鼓励在此处发布。

1 个答案:

答案 0 :(得分:0)

我认为没有一种方法可以通过电子邮件或服务帐户来映射每个用户ID,此外,如果该参数已弃用,则我不建议使用它,因为它可能会消失。

但是,作为解决方法,您可以使用要获取信息的日志在Bigquery [1]中创建一个新接收器,例如,在您的情况下,我将使用以下过滤器创建接收器:

  

resource.type =“ bigquery_resource”

     

protoPayload.requestMetadata.callerSuppliedUserAgent =“ BigQuery DataTransfer服务”

     

protoPayload.methodName =“ jobservice.jobcompleted”

因此,每次启动Bigquery转移程序时,接收器都会将每个日志导出到选定的Bigquery数据集中,其中包含可用于您的用例的大量信息,例如表示用户或服务的“ authenticationInfo”执行该转帐的帐户。

由于数据存储在Bigquery的表中,因此您可以每次创建新查询并获取最适合您的信息。例如:

SELECT 
protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobName.jobId as 
JOB_ID, protopayload_auditlog.authenticationInfo.principalEmail as USER
FROM `<TABLE>`
group by JOB_ID, USER

[1] https://cloud.google.com/logging/docs/export/configure_export_v2#dest-create