无法将组织日志导出到 GCP 中的自定义项目

Can't export Organization logs to custom project in GCP

我正在尝试将 Google Cloud Organization 的日志从 另一个项目 导出到 _Default 日志存储桶。现在看来是不可能的。没有任何线索或错误告诉我原因。 到目前为止我尝试过的是:

在所有这些情况下都观察到相同的行为:根本没有导出日志

我正在使用 Terraform 完成此任务,配置中的一切似乎都很好。 我还为服务帐户编写者身份提供了正确的 IAM 权限:

org-logs-role = {
  members = [
    google_logging_organization_sink.organization_sink.writer_identity
  ],
  role_id = "roles/logging.bucketWriter"
}

接收器代码为:

resource "google_logging_organization_sink" "organization_sink" {
  name = "gbl-snk-${var.project}-${var.environment}-3-gcp"
  destination = "logging.googleapis.com/projects/${var.project}/locations/global/buckets/_Default"
  org_id = local.organization_id
  include_children = true
  filter = "protoPayload.serviceName=\"admin.googleapis.com\" OR protoPayload.serviceName=\"cloudidentity.googleapis.com\" OR protoPayload.serviceName=\"login.googleapis.com\" OR protoPayload.serviceName=\"iam.googleapis.com\""
}

列出接收器时,它显示在组织中,但没有日志到达 _Default 存储桶(我隐藏了项目的真实名称)

gcloud logging sinks list --organization={organization_id}

NAME                            DESTINATION                                                                           FILTER
gbl-snk-{project}-global-3-gcp  logging.googleapis.com/projects/{project}/locations/global/buckets/_Default           protoPayload.serviceName="admin.googleapis.com" OR protoPayload.serviceName="cloudidentity.googleapis.com" OR protoPayload.serviceName="login.googleapis.com" OR protoPayload.serviceName="iam.googleapis.com"

我做错了什么?我可以在组织的日志记录控制台中看到日志,但它们没有到达 {project} _Default 存储桶。

P.S.: 我尝试 copy/paste (以防万一)此代码(当然更改存储桶名称和 org.id ) 并且发生同样的情况。没有错误,但目标存储桶中没有日志。 https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/logging_organization_sink

我想查看的日志类型是来自指定过滤器的 CreateUser 或 DeleteUser 等事件。

欢迎任何帮助。

我想声明他的(在我看来)不是以下内容的副本:

因为一切正常,不会出现任何错误。

我猜这是一个写权限问题。你能执行这个命令吗

gcloud logging describe gbl-snk-{project}-global-3-gcp --organization={organization_id}

在结果中,获取 writerIdentity 服务帐户值。转到您的目标项目,在 IAM 页面中将其授予 Logs Writer 或 Logs Bucket Writer(查看差异 here)。

到时候应该效果会更好。

在 Terraform 中,您可以像那样获取作者身份

google_logging_organization_sink.organization_sink.writer_identity