云扳手IAM许可被拒绝

问题描述 投票:0回答:1

使用CLI gcloud命令时,我可以对数据库执行所有操作。然而,当我尝试从Go(从使用gcloud命令时所做的相同shell实例)做同样的事情时,我收到一条消息错误:

spanner: code = "PermissionDenied", desc = "Resource projects/todo/instances/todospanner/databases/tododb is missing IAM permission: spanner.sessions.create."

我试图运行的代码取自此处的示例:https://cloud.google.com/spanner/docs/getting-started/go/

我在扳手权限中找不到该权限(spanner.session.create)。我一直在玩我在以前用gcloud登录的帐户上设置我能找到的与扳手相关的所有权限。

我的GOOGLE_APPLICATION_CREDENTIAL已设置,我也尝试使用gcloud beta auth

go google-cloud-platform google-cloud-spanner
1个回答
1
投票

此处列出并描述了Cloud Spanner IAM角色,包括权限spanner.session.createhttps://cloud.google.com/spanner/docs/iam#roles

请注意某些角色是如何特定于Person,而其他角色是特定于机器的(或特定于服务帐户)。

您需要指定从哪里连接或执行代码(Cloud Shell实例,在GCE上运行的VM,本地计算机或笔记本电脑)并确保将正确的角色分配给试图执行的人员或服务帐户代码和访问Cloud Spanner实例。

考虑这种情况:

  • 您的gcloud SDK可以通过[email protected]帐户获得良好的认证,该帐户已授予roles/spanner.admin角色,因此gcloud的一切正常
  • 托管您的代码和SDK的VM作为[email protected]服务帐户运行,并且无法访问Cloud Spanner,导致麻烦。

有关服务帐户的更多信息,请访问:https://cloud.google.com/compute/docs/access/service-accounts

© www.soinside.com 2019 - 2024. All rights reserved.