为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go 应用程序中使用默认凭据时出现 GCP 权限问题

在 Go 应用程序中使用默认凭据时出现 GCP 权限问题

Go
梵蒂冈之花 2023-08-07 16:41:32
我的应用程序相当小: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

将其中之一添加到您的服务帐户。


查看完整回答
反对 回复 2023-08-07
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

我的同事发现了这个问题:我给的项目名称 my-prj错误。A404可能帮助我更快地发现问题。

感谢其他答案,因为需要添加角色服务帐户用户。


查看完整回答
反对 回复 2023-08-07
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

从 GCP 来看,我猜还需要启用 servceAccountUser 角色

Roles/compute.admin 完全控制所有 Compute Engine 资源。

如果用户将管理配置为作为服务帐户运行的虚拟机实例,您还必须授予 Roles/iam.serviceAccountUser 角色。


查看完整回答
反对 回复 2023-08-07
  • 3 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信