Google Cloud 获取 API Key 的日志使用信息

Posted

技术标签:

【中文标题】Google Cloud 获取 API Key 的日志使用信息【英文标题】:Google Cloud get the log usage information of a API Key 【发布时间】:2021-01-20 16:41:26 【问题描述】:

我正在构建一个聊天并具有云翻译 API 的功能,我为每个客户端创建一个新的 API 密钥,以便能够识别每个客户端的消费使用情况,问题如下:

我想查看项目中所有 API 密钥的使用情况,例如操作日志记录:

但要披露时间戳和 API 密钥名称使用的信息,以便我能够跟踪服务的每个客户端使用情况并确定我要向他们收取多少费用。

更新

对this article 进行了一些额外的研究,这提供了一个演练以了解服务帐户密钥(类似但不是我需要的)。在本指南中,他们创建了一个日志接收器以将日志推送到 BigQuery。

现在的问题是用于提取日志的过滤器如下:

logName:"projects/<PROJECT>/logs/cloudaudit.googleapis.com" 
protoPayload.authenticationInfo.serviceAccountKeyName:"*"

属于服务帐户密钥名称的第二行提取日志。但正如问题开头所述,我正在寻找 API 密钥日志而不是服务帐户密钥。

【问题讨论】:

该功能称为“数据访问审核日志”。必须启用此功能并生成大量记帐信息(0.50 美元/GiB)。 AFAIK,只记录 IAM 用户活动,不记录 API 密钥。我认为可能有更好的设计选择,例如创建您自己的调用翻译的服务,使用 Google OAuth 进行授权,并且您的服务将用户活动存储在数据库中。 API 密钥是遗留的,存在安全问题。 【参考方案1】:

您可以使用 Cloud Audit logs 1 ,Cloud Audit Logs 为每个 Cloud 项目、文件夹和组织提供以下审核日志:

-管理员活动审核日志

-数据访问审核日志

-系统事件审核日志

-Policy Denied 审计日志

Google Cloud 服务会将审核日志条目写入这些日志,以帮助您回答“谁做了什么、在何处以及何时?”等问题。在您的 Google Cloud 资源中。

对于这种情况,数据访问审计日志2 可能会有所帮助,它包含读取资源配置或元数据的 API 调用,以及创建、修改或读取用户提供的资源的用户驱动的 API 调用数据。数据访问审核日志不会记录对公开共享(所有用户或所有经过身份验证的用户可用)或无需登录 Google Cloud 即可访问的资源的数据访问操作。

正如前面评论中提到的,默认情况下禁用此日志,因为它们可能非常大;必须明确启用它们才能写入。

不过,查看 API 指标的最简单方法是使用 Google Cloud Console 的 API 仪表板3。您可以查看所有 API 使用情况的概览,也可以深入了解特定 API 的使用情况。

【讨论】:

1) 数据访问审核日志是否记录 API 密钥活动? 2) Console API Dashboard 是否按 API Key 显示 API 使用情况? 正如 John Hanley 所提到的,数据访问审计日志和 API 仪表板似乎没有显示每个键的具体使用情况(显示每个服务的信息)。那么如何在 API 密钥资源 @GabrielTorres 上启用数据访问操作日志呢?

以上是关于Google Cloud 获取 API Key 的日志使用信息的主要内容,如果未能解决你的问题,请参考以下文章

通过 API Key 访问 Google Cloud Function

获取用于 Google Cloud Messaging 的 API 密钥

vision-client 不支持 api-key

如何通过HTTP请求验证Google Cloud Vision

使用 NodeJS REST API 通过 Google Cloud Storage 获取文件上传进度

通过 Google Cloud Speech API 获取每个转录单词的时间戳?