Google cloud platform 必须为服务帐户项目启用API

Google cloud platform 必须为服务帐户项目启用API,google-cloud-platform,google-iam,Google Cloud Platform,Google Iam,在创建资源之前启用API时,我们遇到了一个服务帐户“默认”到创建它的项目的问题 SA是在项目A下创建的,但它拥有项目B的所有者权利 我们试图在项目B中创建一个资源(GKE集群),但它抱怨我们需要首先在项目a上启用Kubernetes API(我们将--project传递给cluster create命令,以避免在尝试创建集群的位置出现任何歧义。get credentials命令也是如此) PROJECT\u NUMBER这里是项目A的编号,而不是B的编号。所需的API已在项目B上启用 我们在这里

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

SA是在项目A下创建的,但它拥有项目B的
所有者
权利

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

PROJECT\u NUMBER
这里是项目A的编号,而不是B的编号。所需的API已在项目B上启用


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

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

在这种情况下,服务帐户被用作标识。因此,要求项目A启用此API似乎不是正确的IAM设计决策(由GCP决定).IAM应该只要求Project B启用API。这也会给第三方集成带来问题。事实上,如果是这种情况,我对GCP服务帐户的理解有一段时间是错误的。@rob kochman,你知道这是否有文档记录吗?我花了很长时间查看文档,这是我发现的最好的:
还要确保所需的API已为与这些凭据关联的项目启用。
via:这一点很难找到,这让我想知道我们是否正确管理了服务帐户。我们有一个帐户是不同环境中多个项目的所有者。这可能不是最佳做法!我同意这令人困惑。API启用和不过,AM是独立的。我将研究如何改进文档。
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.