You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GCP Cloud Logging查询特定用户/service account的role/permission变更

GCP Cloud Logging 检索IAM角色/权限变更日志配置方法

所有GCP IAM角色绑定、权限变更的操作默认会记录到Admin Activity审计日志流,不需要手动开启日志采集,直接使用以下过滤规则即可检索对应记录。

基础过滤规则说明

IAM变更类日志的通用特征:

  • 日志归属:项目级IAM变更对应resource.type = "project",文件夹/组织级IAM变更对应resource.type = "folder"/resource.type = "organization"
  • 日志路径固定为审计日志流:logName = "projects/[你的项目ID]/logs/cloudaudit.googleapis.com%2Factivity",查文件夹/组织级日志时将前缀替换为folders/[文件夹ID]/organizations/[组织ID]即可
  • 关联服务固定为IAM服务:protoPayload.serviceName = "iam.googleapis.com"
  • 变更操作对应的方法名匹配以下值即可覆盖全场景:
    • SetIamPolicy:全量覆盖资源IAM策略的操作
    • AddRoleToPolicy/RemoveRoleFromPolicy:单条角色绑定增删操作(新版IAM API操作类型)
    • CreateRole/UpdateRole/DeleteRole:自定义角色本身的创建、修改(含权限点增删)、删除操作

可直接复用的查询语句

1. 全量查询项目下所有角色权限变更日志

将语句中的你的项目ID替换为实际项目ID即可使用:

logName="projects/你的项目ID/logs/cloudaudit.googleapis.com%2Factivity"
protoPayload.serviceName="iam.googleapis.com"
protoPayload.methodName=~"SetIamPolicy|AddRoleToPolicy|RemoveRoleFromPolicy|CreateRole|UpdateRole|DeleteRole"

2. 查询特定用户相关的角色权限变更日志

以下示例检索用户user@example.com相关的所有变更,既包含该用户发起的操作,也包含该用户作为被授权/移除权限主体的操作:

logName="projects/你的项目ID/logs/cloudaudit.googleapis.com%2Factivity"
protoPayload.serviceName="iam.googleapis.com"
protoPayload.methodName=~"SetIamPolicy|AddRoleToPolicy|RemoveRoleFromPolicy|CreateRole|UpdateRole|DeleteRole"
(
  # 匹配该用户作为操作发起方的日志
  protoPayload.authenticationInfo.principalEmail="user@example.com"
  OR
  # 匹配该用户作为被授权/移除权限对象的日志
  protoPayload.response.bindings.members:"user:user@example.com"
)

3. 查询特定服务账号相关的角色权限变更日志

以下示例检索服务账号my-sa@你的项目ID.iam.gserviceaccount.com相关的所有变更:

logName="projects/你的项目ID/logs/cloudaudit.googleapis.com%2Factivity"
protoPayload.serviceName="iam.googleapis.com"
protoPayload.methodName=~"SetIamPolicy|AddRoleToPolicy|RemoveRoleFromPolicy|CreateRole|UpdateRole|DeleteRole"
(
  # 匹配该服务账号作为操作发起方的日志
  protoPayload.authenticationInfo.principalEmail="my-sa@你的项目ID.iam.gserviceaccount.com"
  OR
  # 匹配该服务账号作为被授权/移除权限对象的日志
  protoPayload.response.bindings.members:"serviceAccount:my-sa@你的项目ID.iam.gserviceaccount.com"
)

常用过滤优化技巧

  • 若仅需查询特定角色的变更记录,可追加条件protoPayload.response.bindings.role:"roles/目标角色名",例如查询Owner角色变更则写为protoPayload.response.bindings.role:"roles/owner"
  • 若需排除GCP系统自动发起的变更,可追加条件NOT protoPayload.authenticationInfo.principalEmail ends with "@system.gserviceaccount.com"
  • 若仅需查询特定时间范围内的日志,可直接在Cloud Logging界面的时间选择器指定范围,不需要在查询语句中额外写时间条件

内容的提问来源于stack exchange,提问作者Sander van den Oord

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 14:01:14