使用 Stackdriver 的 GoogleCloud 生产访问控制

Production Access controls for GoogleCloud using Stackdriver

人们如何实施生产访问控制(即记录和报告服务和人员通过 SSH 访问计算实例)。我们的目标是跨项目将所有用户登录条目一致地转发到我们的 SIEM,并理想地避免具有项目特定的 Stackdriver 接收器(以及相关的设置和维护)。

我们尝试了以下方法:

我们遇到的问题: - 组织级别的过滤器格式文档有限(对于 logName 之类的内容,似乎与项目级别不同)。 log_id 功能似乎有效 - 一些日志类型出现在组织级别(如 cloudapis activity)但系统日志似乎没有得到处理 - 容器 OS 似乎在 fluentd 中默认不启用 ssh/sudo 转发(或者我还没有找到哪个日志类型有此数据)。我确实看到这个记录到测试节点上的 journalctl

有没有人有一致的方法来实现这个?

为了防止其他人遇到此问题,我们发现了以下内容:

  • 可以通过 CLI 在组织级别设置 Stackdriver 接收器。通过 Cloud Console UI 不可见,而且 CLI 也不允许您在 org
  • 上列出日志类型
  • 除了 logName 之外,还可以在接收器上定义过滤器,但格式可能与项目级过滤器不同
  • 您需要在特定于平台的 fluentd 中启用 auth 日志记录(即 google-fluentd 在 Ubuntu 上的一个进程不同于容器 OS 上的 stackdriver 设置)
  • 出于某种原因,SSHD 不会通过系统日志记录说明用户和 IP 的初始日志(因此会很流畅),因此对 Stackdriver 不可见
  • Use or org sinks to topics 是一个子项目,订阅转发到您选择的 SIEM,运行良好

仍在尝试获取 gcloud ssh 命令的日志

解决此问题的一种方法是 exporting your log sink to BigQuery. Note that sink setup to export BigQuery Logs for all projects under the Organization contains a parameter that is set to 'False',字段 'includeChildren' 必须设置为 'True'。一旦设置为 true,则来自接收器父资源中包含的所有项目、文件夹和计费帐户的日志也可用于导出,如果设置为 false,则只有接收器父资源拥有的日志可用于导出。那么您必须能够从 BigQuery 中过滤所需的日志。

解决这个问题的另一种方法是通过使用命令列出所有项目来编写脚本:gcloud projects list | tail -n +2 | awk -F" " '{print }'这可以制成一个可以迭代的数组,并且可以检索每个项目的日志使用与 doc.

中类似的命令

不确定所有这些是否能以某种方式帮助解决或解决您的问题,但愿如此。