我的应用程序相当小:import ( "context" "fmt" "log" "google.golang.org/api/compute/v1")func main() { ctx := context.Background() computeService, err := compute.NewService(ctx) urlMapCall := computeService.UrlMaps.List("my-prj") urlMaps, err := urlMapCall.Do() if err != nil { log.Println(err) return } for _, mp := range urlMaps.Items { fmt.Println(mp.Name) }}我收到错误:googleapi: Error 403: Required 'compute.urlMaps.list' permission for 'projects/my-prj', forbidden我已经设置了环境变量GOOGLE_APPLICATION_CREDENTIALS=$HOME/.gcp/my-prj-aef233we.json。此 JSON 代表的服务帐户具有项目编辑器和计算管理员角色。当我这样做时gcloud compute url-maps list,它可以毫无缺陷地工作。我究竟做错了什么?
3 回答
qq_笑_17
TA贡献1818条经验 获得超7个赞
当您使用 gcloud 命令进行测试时,您很可能不会使用服务帐户进行测试,而是使用个人帐户进行测试。这意味着您没有相同级别的许可,因此观察到的行为会受到尊重。执行 agcloud config list
查看当前配置和用户。
对于该权限compute.urlMaps.list
,3 个策划角色包含该权限
roles/compute.viewer roles/compute.networkViewer roles/compute.instanceAdmin.v1
另外,不要忘记授予该角色roles/iam.serviceAccountUser
将其中之一添加到您的服务帐户。
一只斗牛犬
TA贡献1784条经验 获得超2个赞
从 GCP 来看,我猜还需要启用 servceAccountUser 角色
Roles/compute.admin 完全控制所有 Compute Engine 资源。
如果用户将管理配置为作为服务帐户运行的虚拟机实例,您还必须授予 Roles/iam.serviceAccountUser 角色。
- 3 回答
- 0 关注
- 140 浏览
添加回答
举报
0/150
提交
取消