如何在GCP中限制服务账号权限?以Places Autocomplete为例
如何将GCP服务账号权限限制为仅访问Google Maps Places Autocomplete API
核心结论
完全可以实现最小权限配置,关键是使用Places API专属角色+带条件的服务使用角色,避免授予全局宽泛权限。
具体配置步骤
启用目标API
首先确保你的GCP项目中已经启用了Places API(Autocomplete是Places API的子功能,必须先启用Places API才能使用)。使用Places API专属角色
不要使用宽泛的Maps API Viewer角色,而是使用专门针对Places API的只读角色:roles/maps.placesViewer。这个角色仅允许访问Places API的所有只读操作,包括Autocomplete功能,权限范围精准得多。限制
serviceusage.serviceUsageConsumer角色的作用范围
你提到的roles/serviceusage.serviceUsageConsumer确实是必要的(它允许服务账号使用已启用的API),但可以通过条件绑定将其权限限制为仅对Places API生效:- 给服务账号分配该角色时,添加条件表达式:
resource.name == "projects/[你的项目ID]/services/places-backend.googleapis.com"
这样该角色只能用于Places API的访问,无法作用于其他GCP服务或Maps API。
- 给服务账号分配该角色时,添加条件表达式:
更细粒度:自定义角色(可选)
如果想进一步缩小权限到仅Autocomplete操作,可以创建自定义角色:- 进入IAM -> 角色 -> 创建角色
- 在权限搜索框中查找
maps.places.autocomplete.read,添加这个唯一权限 - 将自定义角色分配给服务账号,再配合带条件的
serviceusage.serviceUsageConsumer角色即可。
验证配置
完成配置后,测试以下场景:
- 发起Places Autocomplete API请求:应正常返回结果
- 尝试访问其他Maps API(如Maps JavaScript API)或其他GCP服务(如Cloud Storage):应收到权限拒绝的错误
内容的提问来源于stack exchange,提问作者Raf
相关产品推荐
相关产品推荐

