我已在 Google 云中配置了共享 VPC。 我可以通过 Web 控制台使用我的用户帐户(在组织下)使用共享 VPC 在服务项目中创建虚拟机,没有任何问题。
但是,如果我尝试使用服务项目 (Project:service-project) 下的服务帐户列出网络,则会返回错误。
`$ gcloud 计算网络列表 --uri --project=long-shared-vpc 错误:(gcloud.compute.networks.list)某些请求未成功:
如何授予我的服务帐户(在 service-project 下)对宿主项目中共享 VPC(宿主项目:long-shared-vpc)的访问权限?
我尝试寻找 IAM,但似乎没有选项可以授予“compute.networks.list”对其他项目的访问权限。 我错过了什么?
该错误表明服务帐户在项目
compute.networks.list
中没有 long-shared-vpc
权限(通过角色授予)。
虽然服务账户是在所属项目中创建的,但可以通过将服务账户绑定到具有一个/多个 IAM 角色的资源来将服务账户(通过其电子邮件地址)添加到其他资源(通常是一个项目)。
第一步是确定授予
compute.networks.list
的 IAM 角色。
执行此操作的一种方法是使用 IAM 权限参考并完成过滤器。
可能的角色之一(!)是
roles/compute.instanceAdmin
下一步是将资源(通常是项目)绑定到身份和角色。
这里可能可以使用网络而不是项目;我对VPC不熟悉。
您需要运行此命令并作为具有适当权限的凭据进行身份验证:
ACCOUNT="..." # Service Account in service-project
SVC_PROJECT="service-project"
EMAIL="${ACCOUNT}@${SVC_PROJECT}.iam.gserviceaccount.com"
VPC_PROJECT="long-shared-vpc"
ROLE="roles/compute.instanceAdmin"
gcloud projects add-iam-policy-binding ${VPC_PROJECT} \
--member=serviceAccount:${EMAIL} \
--role=${ROLE}