如何在Google Cloud SDK中记录应用程序使用的所有权限
GCP 自动记录应用权限的可行方案
核心思路:借助审计日志+权限分析工具
GCP原生提供了完整的工具链,帮你自动捕获应用实际调用的权限,无需手动梳理,完美适配最小权限原则,具体操作如下:
1. 开启目标服务的审计日志
默认情况下,GCP的数据访问审计日志不会全量开启,你需要为用到的服务手动启用:
- 进入GCP控制台「IAM与管理」→「日志」→「日志浏览器」
- 针对Storage、Security Center、Datastore、Secret Manager、Pub/Sub,分别开启对应服务的管理员写入日志和数据读写日志(部分服务需开启对象级访问日志,比如Storage)
- 注意:沙箱项目用量小,开启日志产生的额外成本可忽略
2. 运行应用触发全量日志
让你的Python应用完整跑一遍所有业务场景,确保所有API调用都被触发,此时审计日志会记录下应用发起的每一次请求对应的权限信息。
3. 提取并整理权限列表
有两种高效方式提取所需权限:
方式一:日志浏览器直接筛选
用过滤器定位应用的日志(按服务账号过滤最精准):
protoPayload.authenticationInfo.principalEmail="你的应用服务账号邮箱"
查看每条日志的protoPayload.methodName字段,该字段对应具体API方法,每个方法直接映射一个权限(比如storage.objects.get对应storage.objects.get权限,pubsub.topics.publish对应pubsub.topics.publish权限),收集去重即可。
方式二:CLI导出日志后解析
用gcloud命令导出日志到本地,再用脚本提取:
gcloud logging read "protoPayload.authenticationInfo.principalEmail='你的服务账号邮箱'" --format="json" > audit_logs.json
写个简单的Python脚本遍历JSON文件,提取protoPayload.methodName字段并去重,快速得到权限列表。
4. 创建最小权限自定义角色
拿到权限列表后,进入GCP控制台「IAM与管理」→「角色」→「创建角色」,添加提取到的权限,生成自定义角色,再给应用的服务账号绑定该角色,替换原Owner角色即可。
额外优化工具
- IAM推荐器:GCP内置工具,会自动分析资源使用情况,给出权限精简建议,直接在IAM页面查看即可。
- 策略分析器:可模拟权限变更,验证自定义角色是否满足应用需求,避免权限不足导致的报错。
内容的提问来源于stack exchange,提问作者Dshiz
相关产品推荐
相关产品推荐

