0

每次新建项目,在项目中使用BQ,都需要手动设置BQ logs sink,包括filter:

BQ 日志接收器示例

日志过滤器

问题 - 有没有办法自动化它,一旦为新项目创建 BQ 资源,它会自动创建一个接收器?它应该有:

接收器名称:BQLogsDataset_[ProjectNameOrID]

目的地:bigquery.googleapis.com/projects/billing/datasets/BQLogsDataset

作家身份:会创建一个合适的身份

将应用过滤器:resource.type="bigquery_resource" logName="projects/[ProjectNameOrID]/logs/cloudaudit.googleapis.com%2Fdata_access"

可能有人已经实现了类似的或有任何其他解决方案,每次创建具有 BQ 资源的新项目时,如何不要忘记启用 BQ 日志记录?

谢谢你!

4

3 回答 3

2

您可以在组织级别创建 Bigquery Sink 并启用--include-children将配置组织中所有项目的标志。

示例 gcloud 命令:

gcloud logging sinks create my-org-bq-sink bigquery.googleapis.com/projects/my-gcp-project/datasets/my_bq_audit_dataset --include-children --organization=MY_ORG_ID

有关此 gcloud 命令的更多详细信息,请点击此处

如果您使用的是 Terraform,那么您可以使用google_logging_organization_sink

希望这可以帮助。

于 2020-01-23T11:58:40.003 回答
1

解决方案 - 使用下面的此命令为项目(以及下面的子项)设置接收器。BQ 日志也会被相应地过滤:

gcloud logging sinks create <My-sink-name> bigquery.googleapis.com/projects/<My-billing-project-ID>/datasets/<My-dataset-name> --include-children --log-filter='resource.type="bigquery_resource" AND logName:"cloudaudit.googleapis.com/data_access"' --organization=<My-organization-ID> 
于 2020-01-28T14:58:31.443 回答
0

我的建议是使用可以通过 API 定义的组织级接收器。可以在此链接中找到对 API 的引用

这是文档中有关设置的相关描述:

父资源——在其中创建接收器的项目、文件夹、计费帐户或组织。sink 只能导出属于父资源的日志。父母有以下格式:

“项目/[PROJECT_ID]”“组织/[ORGANIZATION_ID]”“文件夹/[FOLDER_ID]”“billingAccounts/[BILLING_ACCOUNT_ID]”

一个包含子参数。这仅与组织内的接收器有关。请参阅汇总导出。

注意:此设置目前只能通过 API 完成,不能通过谷歌控制台 UI

于 2020-01-23T09:30:17.103 回答