如何通过gcloud CLI获取GCP用户近3个月访问的资源以缩减权限
在GCP中通过gcloud CLI查询用户过去3个月访问过的资源
前提准备
- 确保目标项目已启用Data Access审计日志(默认仅Admin Activity日志开启,Data Access日志需手动启用),否则无法获取资源访问记录。
- 执行命令的账号需拥有
logging.viewer权限,能读取项目审计日志。
核心查询命令
直接提取用户过去3个月访问过的所有资源(去重后):
gcloud logging read 'logName:"projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fdata_access" AND protoPayload.authenticationInfo.principalEmail="[USER_EMAIL]" AND timestamp>="$(date -d "-3 months" +%Y-%m-%dT%H:%M:%SZ)"' --format='value(protoPayload.resourceName)' | sort | uniq
替换命令中的[PROJECT_ID]为你的GCP项目ID,[USER_EMAIL]为目标用户的完整邮箱。
扩展查询(含资源所属服务)
如果需要同时查看资源对应的GCP服务(比如GCS、BigQuery等),使用以下命令:
gcloud logging read 'logName:"projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fdata_access" AND protoPayload.authenticationInfo.principalEmail="[USER_EMAIL]" AND timestamp>="$(date -d "-3 months" +%Y-%m-%dT%H:%M:%SZ)"' --format='value(protoPayload.resourceName, protoPayload.serviceName)' | sort | uniq
关键注意事项
- 日志保留限制:GCP默认审计日志仅保留30天,若要查询过去3个月的记录,必须提前将审计日志导出到Cloud Storage或BigQuery进行长期存储。如果未配置导出,只能获取最近30天的访问记录。
- 跨项目场景:若用户访问过多个项目的资源,需逐个项目执行上述命令;若拥有组织级权限,可通过组织级日志查询统一获取。
内容的提问来源于stack exchange,提问作者eramm
相关产品推荐
相关产品推荐

