首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >部署在GKE上的应用程序如何能够在同一个GCP项目上部署其他应用程序而无需认证

部署在GKE上的应用程序如何能够在同一个GCP项目上部署其他应用程序而无需认证
EN

Stack Overflow用户
提问于 2022-03-13 09:53:10
回答 2查看 156关注 0票数 1

我有一个部署在GKE集群上的java应用程序。我们管它叫“骑兵”

应用程序应该能够使用helm命令在同一个GCP项目上部署其他应用程序(可以是相同的GKE或不同的GKE集群)。

我们能够使用身份验证做到这一点,其中JSON密钥被提供给"orchestrator“,我们可以使用它来生成令牌。

我的问题是。由于“orchestrator”和其他应用程序都运行在同一个GCP项目上(有时运行在同一个GKE集群上),是否有一种方法可以使用GCP自动发现的默认凭据,而不是为“orchestrator”应用程序生成和提供服务帐户JSON密钥?

这样,客户就不需要向我们的系统公开这个密钥,并且在没有应用程序干预的情况下,身份验证将在幕后进行。

GCP管理员能做些什么使这个用例无缝地工作吗?

EN

回答 2

Stack Overflow用户

发布于 2022-03-17 12:14:40

我将详细阐述我的意见。

当您使用Service Account时,您必须使用密钥进行身份验证--每个服务帐户都与公共/私有RSA密钥对相关联。在使用GKE集群时,是否考虑使用工作负载标识,就像使用和管理SA的最佳实践中提到的那样?

根据使用和管理服务帐户的最佳实践,所有非人类帐户都应该用服务帐户来表示。

服务帐户代表非人类用户。它们适用于工作负载(如自定义应用程序)需要访问资源或执行操作而不需要最终用户参与的情况。

因此,通常,每当您想要向应用程序提供某些权限时,都应该使用Service Account

服务帐户的密钥类型中,您可以找到所有Service Accounts都需要RSA对键的信息:

每个服务帐户都与公共/私有RSA密钥对相关联。Service凭据API使用这个内部密钥对创建短期服务帐户凭据,并对blobs和JSON令牌(JWT)进行签名。这个密钥对被称为Google管理的密钥对. 此外,您还可以创建多个公共/私有RSA密钥对(称为用户管理密钥对),并使用私钥使用Google进行身份验证。此私钥称为服务帐户密钥。

您也可以考虑工作负载标识,但我不确定这是否能满足您的需求,因为您的环境仍然有很多未知之处。

作为附加信息,有一种名为Basic Authentication的选项可以供您选择,但由于安全原因,从GKE1.19开始就不支持它了。在另一个堆栈案例中提到了这一点:我们禁止在Google Kubernetes Engine (GKE)中进行基本身份验证。

总结:

为非人工帐户提供权限的最佳实践是使用Service Account。每个服务帐户都需要一对RSA Keys,您可以创建多个密钥。如果您有此选项,也可以使用Workload Identity,但由于缺乏详细信息,很难确定这在您的场景中是否有效。

附加链接:

票数 1
EN

Stack Overflow用户

发布于 2022-03-21 15:42:12

实现这一目标的一种方法是使用这里提到的默认凭据方法:自动查找凭据。GCP管理员可以将相同的SA附加到GKE集群资源(请参阅附加的屏幕快照),而不是向我们的应用程序公开SA密钥,默认的凭据机制将使用SA凭据来访问API和资源(取决于SA角色和权限)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71455569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档