详解使用Dex实现Kubernetes身份验证
新钛云服已累计为您分享740篇技术干货
尽管Kubernetes是当今使用最广泛的开源容器编排平台,但它没有创建和管理用户的手段,至少没有本地方式。然而,这并不是一个缺点,因为它可以对接多种认证服务。也正因此,Dex已成为Kubernetes可用的最佳身份验证解决方案之一。
在本文中,您将了解有关 Dex for Kubernetes 的更多信息。我们将探讨它可以解决的一些问题,通过使用第三方身份提供者进行设置的高级概述,并考虑 Dex 未涵盖的一些仍需要解决的问题。
什么是Dex?
Dex for Kubernetes 是如何工作的?
kubectl
实际上是在与 API 服务器进行交互。对于 API 服务器的每个 HTTP 请求,身份验证插件都会查找用户名、UID 和组。此类属性可以由客户端证书、身份验证代理或不记名令牌提供。这就是 Dex 的用武之地,充当身份提供者和kubectl
客户端之间的桥梁。Dex 解决了什么问题?
它提供了一种通过身份提供者将用户登录到集群的安全方式。 它消除了与为多个用户使用相同的 kubeconfig 文件相关的安全风险。 它可以通过审核日志有效地检测每个用户执行的操作。 它消除了无时间限制地创建不记名令牌的做法。 由于使用 RBAC 规则(零信任 RBAC 访问)进行有效的用户和组管理,它有助于执行身份验证和授权策略。
使用 Dex 在 Kubernetes 上
设置身份验证
最终用户发起登录 Dex 的请求。这通常通过用户启动单点登录的 Web 应用程序或门户来完成。 Dex 将此请求转发给第三方身份提供商(例如,Active Directory、Google、GitHub 或 Okta)。为此,Dex 使用“connectors”,它具有一系列用于查询其他用户管理系统的协议。 多亏了这些“connectors”,Dex 可以从身份提供者那里访问相关的用户信息,例如姓名、电子邮件、唯一标识符、组、访问令牌等。在 Okta 的情况下,这些数据以 ID 令牌的形式出现。根据Dex 文档,“ID 令牌是 JSON Web 令牌 (JWT)……作为证明最终用户身份的 OAuth2 响应的一部分返回。” 一旦 Dex 从第三方上游身份提供者那里获得了用户信息,它就会承担身份提供者的角色,并颁发一个签名的 ID 令牌发送给 kubectl
客户端,客户端将 JWT 转发给 API 服务器。API 服务器使用 Kubernetes OpenID Connect 令牌身份验证器插件使用 ID 令牌。此时的结果可以是验证或拒绝用户。如果用户成功通过身份验证,API 服务器将使用 ID 令牌信息来应用 RBAC 规则。 来自 API 服务器的响应被发送回 kubectl
客户端。客户端将 kubectl
结果显示给最终用户。
Dex 没有解决哪些问题?
结论
原文:https://loft.sh/blog/dex-for-kubernetes-how-does-it-work/
最新评论
推荐文章
作者最新文章
你可能感兴趣的文章
Copyright Disclaimer: The copyright of contents (including texts, images, videos and audios) posted above belong to the User who shared or the third-party website which the User shared from. If you found your copyright have been infringed, please send a DMCA takedown notice to [email protected]. For more detail of the source, please click on the button "Read Original Post" below. For other communications, please send to [email protected].
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。