【问题标题】:API must be enabled for service account project必须为服务帐户项目启用 API
【发布时间】:2019-02-04 17:48:38
【问题描述】:

在创建资源之前启用 API 时,我们遇到了一个服务帐户“默认”到创建它的项目的问题。

SA 是在项目 A 下创建的,但它拥有项目 B 的 Owner 权限。

我们正在尝试在 项目 B 中创建一个资源(GKE 集群),但它抱怨我们需要首先在 项目 A 上启用 Kubernetes API(我们正在通过--project 到集群创建命令,以避免在我们尝试创建集群的位置出现任何歧义。get-credentials 命令也是如此)。

ERROR: (gcloud.container.clusters.create) ResponseError: code=403, message=Kubernetes Engine API has not been used in project PROJECT_NUMBER before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/container.googleapis.com/overview?project=PROJECT_NUMBER then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.

PROJECT_NUMBER 这里是项目 A 的编号,不是 B。所需的 API 已经在项目 B 上启用。

我们在这里使用服务帐户的方法是否存在缺陷?

【问题讨论】:

    标签: google-cloud-platform google-iam


    【解决方案1】:

    即使您在项目 B 中创建集群,API 的调用方也是项目 A(因为服务帐户归项目 A 所有);因此,必须在项目 A 上启用 API。

    【讨论】:

    • 在这种情况下,服务帐户被用作身份。因此,要求项目 A 启用此 API 似乎不是一个正确的 IAM 设计决策(由 GCP)。 IAM 应该只要求项目 B 启用 API。这也会给第三方集成带来问题。
    • 的确,如果是这样的话,我对 GCP 服务帐户的理解有一段时间是错误的。 @rob-kochman,你知道这是否记录在任何地方吗?
    • 我花了很长时间浏览文档,这是我找到的最好的:Also make sure that the desired API(s) are enabled for the project that those credentials are associated with. via:developers.google.com/explorer-help/#CustomCreds 很难找到这个事实让我想知道是否我们正在正确管理服务帐户。我们有一个拥有不同环境的多个项目的所有者。这可能不是最佳做法!
    • 我同意这令人困惑。不过,API 启用和 IAM 是分开的。我会考虑改进文档。
    猜你喜欢
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多