【问题标题】:Restrict IAM service account to a particular Google Stackdriver Log将 IAM 服务帐号限制为特定的 Google Stackdriver 日志
【发布时间】:2019-03-23 21:49:10
【问题描述】:

我计划在 GKE 中创建多个我的应用程序实例,并且正在考虑使用 Google Stackdriver 进行审计日志记录。但是,从我在访问控制文档 (https://cloud.google.com/logging/docs/access-control) 中可以看到,logWriter 角色适用于整个项目。我显然只想让每个实例能够写入自己的日志。这可能吗?

我的计划是将日志从 Stackdriver 发送到 BigQuery。一种可能是直接发送到 BigQuery,但似乎无法将帐户限制为仅插入。另一个是每个应用程序(GKE 命名空间)一个单独的项目——但这似乎过于复杂,不推荐使用。

谢谢!

【问题讨论】:

  • 一个有效的问题,我认为您是正确的 - 您不能限制或授予对特定日志的访问权限。要么全有,要么全无。

标签: google-cloud-platform stackdriver google-cloud-stackdriver


【解决方案1】:

对于 GCE/GKE 集群上的每个实例,您都可以启用或禁用日志记录功能。对于单个 GCE 实例,您可以选择禁用对 API 的访问,或者仅在创建实例时使用具有“logwriter”角色的服务帐户 [1]。

对于 GKE,您可以同时启用/禁用对 Stackdriver Logging API 的访问,并向下渗透到节点池实例。工作方式很简单,“fluentd”pod 将使用节点的服务帐户将日志发送到 stackdriver API。

根据将日志从 Stackdriver 发送到 Bigquery,您需要使用 Sink [2]。 Sink 将创建一个新的服务帐户,称为唯一写入者身份,并且您的导出目标 (BigQuery) 必须允许此服务帐户写入日志条目,如 [3] 中所述

[1]https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances?hl=en_US&_ga=2.210364631.-390700867.1538154355 [2]https://cloud.google.com/logging/docs/export/configure_export_v2 [3]https://cloud.google.com/logging/docs/export/configure_export_v2#dest-auth

【讨论】:

  • 感谢您的回复,但我不确定解决方法有什么帮助,因为具有 logwriter 角色的实例将能够写入所有日志,而不仅仅是特定日志..
  • 我所追求的是防止 GKE pod 在审计日志中相互模仿。是的,使用 fluentd 会起作用,尽管将 JSON 审计条目与文本序列化似乎效率低下 - 但仍然为您的答案 +1。我认为我可能需要为每个 pod 创建一个项目,为每个 pod 提供该项目的服务帐户,登录到该项目的 Stackdriver 日志,并在每个项目中创建接收器以导出到我原始项目中的特定 BigQuery 表..
猜你喜欢
  • 1970-01-01
  • 2019-07-22
  • 1970-01-01
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多