Google Cloud 服务帐号监控提醒

问题描述

背景

我有一个运行我的 N 个应用程序的 Google Cloud 项目。每个应用都有一个专属的 IAM 服务帐号(共 N 个服务帐号),权限最小。

场景

让我们假设其中一个服务帐户被泄露了。攻击者将尝试利用这些凭据。因为他不知道这个账户到底有什么权限,我们会试着打电话看看他是否能用。

问题

我想“听”审计日志。一旦我看到“拒绝访问”类型的日志,我就会知道这个服务帐户有问题。

  1. 是否可以将所有这些访问被拒绝事件写入 Google Cloud Stackdriver?
  2. 您建议如何实施它?

谢谢

解决方法

是否可以将所有这些访问被拒绝事件写入 Google 云 Stackdriver?

大多数但并非所有 Google Cloud 服务都支持这一点。但是,访问成功也会被记录。

  • 您需要启用数据访问审核日志。
  • 这可能会生成大量日志信息。
  • 组织和文件夹的访问日志只能通过 API 获得,不能通过控制台获得。
  • 在启用数据访问审核日志之前查看定价。

您建议如何实施它?

这个问题不适合 Stackoverflow,因为它寻求建议和意见。一般情况下,您会将日志导出到 Google Cloud Pub/Sub 以供 Cloud Functions、Cloud Run 等服务处理。还有一些商业服务,例如 DataDog 专为此类服务支持而设计。将日志导出到 Google BigQuery 是另一种流行的选择。

阅读这篇发表在 DataDog 网站上的关于数据访问审计日志及其服务的文章。我不推荐他们的服务,只是提供更多信息的链接。他们的文章非常好。

Best practices for monitoring GCP audit logs

要了解您需要处理的字段,请阅读本文档:

AuthorizationInfo

此链接也有帮助:

Understanding audit logs

,

这是一种解决方法:

  • 创建新的云发布订阅主题
  • 使用上一步中创建的云发布订阅主题的目标服务创建一个新的日志路由接收器(将过滤器设置为类似 protoPayload.authenticationInfo.principalEmail="<service-account-name>@<project-name>.iam.gserviceaccount.com" AND protoPayload.authorizationInfo.granted="false" 仅接收有关您的服务帐户的身份验证操作失败的消息)
  • 创建一个云函数,该函数由发布订阅主题的新消息触发;此功能可以执行您想要的任何操作,例如向电子邮件地址发送消息、寻呼您或您可以在代码中提出的任何其他内容。