【问题标题】:I am not able to access compute engine API with gcloud?我无法使用 gcloud 访问计算引擎 API?
【发布时间】:2020-11-30 12:06:13
【问题描述】:

我有一个使用访问范围“为每个 API 设置访问权限”的实例运行,并明确允许 Compute Engine API 具有读写访问权限,如下图所示。

API access list

所以我通过 SSH 登录到实例内部,并尝试运行以下命令:-

gcloud compute instances list

我得到一个错误:

- Required 'compute.zones.list' permission for 'projects/dotted-hxxl-xxx'

我的用户明确允许访问计算引擎 API,但我仍然收到错误消息。我不应该得到这个错误吗?我在这里错过了什么?

【问题讨论】:

    标签: google-cloud-platform google-compute-engine google-compute-api


    【解决方案1】:

    当您登录到实例时,您获得的权限不是您的用户,而是计算引擎provided by the metadata server 的权限。

    • 转到计算引擎详细信息并查看服务帐户部分。
    • 如果有服务帐号,检查其权限
    • 如果没有,请在您的 VM 上添加一个服务帐户(您需要停止它才能执行此操作)

    【讨论】:

    • 嗨,为了检查权限,您的意思是 IAM 策略对吗?我做到了,它只有“存储列表对象”。所以你的意思是,我需要明确地给予许可?
    • 执行gcloud config list,您将看到您的VM的服务帐户。然后授予它所需的权限。
    【解决方案2】:
    1. 停止计算引擎实例

    gcloud compute instances stop instance-1 --zone us-central1-c

    1. 获取实例的服务帐号

    gcloud compute instances describe instance-1 --zone us-central1-c | grep email

    1. 将角色roles/compute.instanceAdmin 分配给服务帐号

    gcloud projects add-iam-policy-binding your_project -- member="serviceAccount:SERVICE_ACCOUNT_ID@your_project.iam.gserviceaccount.com" --role="roles/compute.instanceAdmin"

    1. 启动实例

    gcloud compute instances start instance-1 --zone us-central1-c

    1. ssh 到实例

    gcloud compute ssh instance-1 --zone us-central1-c

    1. 运行 gcloud 命令

    gcloud compute instances list

    还可以阅读IAM roles and OAuth scopes之间的区别

    当您将实例设置为作为服务帐号运行时,您确定 您的 IAM 角色对服务账户的访问级别 授予服务帐户。如果服务帐号没有 IAM 角色, 那么服务帐户不能在其上运行任何 API 方法 实例。

    此外,实例的访问范围决定了默认的 OAuth 通过 gcloud 工具和客户端库发出的请求的范围 在实例上。因此,访问范围可能会进一步限制 通过 OAuth 进行身份验证时访问 API 方法

    【讨论】:

    • 感谢您的详细回答,如果我错了,请纠正我,IAM 角色分配了服务帐户的权限,并且 Oauth 范围定义了它们(意味着服务帐户)可以访问的范围。如果服务帐户允许 IAM 实例管理员,但范围是默认范围,那么 gcloud 无法获得结果,对吗?
    • 不,如果服务帐户和默认范围允许 IAM,gcloud 将获得结果。您可以只限制具有范围的服务帐户。例如,只有当我使用默认计算引擎服务帐户创建 VM 时,我才能通过范围限制访问。如果我使用自定义服务帐户创建 VM,则只能使用默认范围。
    • 也请阅读link
    猜你喜欢
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    相关资源
    最近更新 更多