5

我已经使用具有以下角色的服务帐户设置了一个名为在 Google Compute 引擎上运行 cronjobs 的计算实例: Custom Compute Image User + Deletion rights Compute Admin Compute Instance Admin (beta) Kubernetes Engine Developer Logs Writer Logs Viewer Pub/Sub Editor Source Repository Reader Storage Admin 不幸的是,当我 ssh 进入这个 cronjob 运行器实例然后运行时:

sudo gcloud compute --project  {REDACTED} instances create e-latest \
    --zone {REDACTED} --machine-type n1-highmem-8 --subnet default \
    --maintenance-policy TERMINATE  \
    --scopes  https://www.googleapis.com/auth/cloud-platform \
    --boot-disk-size 200  \
    --boot-disk-type pd-standard --boot-disk-device-name e-latest \
    --image {REDACTED} --image-project {REDACTED} \
    --service-account NAME_OF_SERVICE_ACCOUNT \ 
    --accelerator type=nvidia-tesla-p100,count=1 --min-cpu-platform Automatic

我收到以下错误:

用户无权访问服务帐户 {NAME_OF_SERVICE_ACCOUNT}。用户:{NAME_OF_SERVICE_ACCOUNT}。请项目所有者授予您服务帐号的 iam.serviceAccountUser 角色。

除了计算实例管理员之外,我还需要能够使用我的实例创建实例吗?

进一步说明:(1)当我尝试不指定--service-account错误时,除了我的用户无权访问的服务帐户是默认的'51958873628-compute@developer.gserviceaccount.com'之外,错误是相同的。(2) 添加/删除 sudo 不会改变任何东西

4

3 回答 3

5

创建使用服务帐户的实例需要您对该服务帐户具有 compute.instances.setServiceAccount 权限。要完成这项工作,请将iam.serviceAccountUser角色授予您的服务帐户(在整个项目上或在您希望能够创建实例的特定服务帐户上)。

于 2018-06-06T20:18:17.330 回答
2

首先找出你是谁

  • 如果您使用的是 Web UI:您使用什么电子邮件地址登录?
  • 如果您使用的是本地gcloudterraform:找到包含您的 gcloud 凭据的 json 文件(通常与 类似的名称 myproject*.json)并查看它是否包含电子邮件grep client_email myproject*.json

GCP IAM 更改

  1. 转到https://console.cloud.google.com
  2. 前往 IAM
  3. 查找您的电子邮件地址
  4. 成员 -> 编辑 -> 添加另一个角色 -> 输入角色名称Service Account User-> 添加

(您可以使用 Condition 缩小范围,但暂时保持简单)。

于 2020-07-21T20:29:26.780 回答
0

Make sure that NAME_OF_SERVICE_ACCOUNT is service account from current project.

If you change project ID, and don't change NAME_OF_SERVICE_ACCOUNT, then you will encounter this error.

This can be checked on Google Console -> IAM & Admin -> IAM. Then look for service name ....-compute@developer.gserviceaccount.com and check if numbers at the beginning are correct. Each project will have different numbers in this service name.

于 2020-08-08T06:04:21.730 回答