客座文章作者:Onkar Bhat,工程经理和 Deepika Dixit,软件工程师,Kasten by Veeam
安全性是应用程序开发的一个关键需求,以一种使用户体验无缝和无麻烦的方式配置认证和授权工作流也是如此。幸运的是,在 Kubernetes 中有一个简单的方法做到这一点——无需重新发明轮子。
在最近的网络研讨会上,Kasten by Veeam 工程经理 Onkar Bhat 和软件工程师 Deepika Dixit 分享了一种使用Dex[1]和基于角色的访问控制(RBAC)配置认证和授权工作流的简单方法。Bhat 和 Dixit 分别处理了授权和身份验证,解释了他们的方法是如何工作的,并为观众提供了一个循序渐进的演示。
开始本次网络研讨会,Bhat 提供了 Dex 认证工作流程的详细概述。使用 Dex 的开发人员,只需将应用程序配置为当用户试图访问应用程序时,将用户重定向到 Dex。Dex 然后验证应用程序是否已经注册到自己身上,并尝试通过第三方身份提供者谷歌、GitHub、Active Directory 或其他身份验证。Dex 支持一个很长的 IDP 列表,但是为了演示的目的,Bhat 使用了 LDAP。
一旦用户通过 IDP 的身份验证,他或她将被重定向回 Dex,由 Dex 批准用户对客户机应用程序的访问。Bhat 提到,IDP 通常在 Kubernetes 之外,可以在 Dex 内将连接器配置到多个 IDP。
在概述之后,Bhat 向查看者介绍了如何配置 Dex,并提供了屏幕截图来说明身份验证工作流的关键部分。然后他执行了一个现场演示,在那里他安装并运行了一个客户端应用程序,以测试单个用户、用户组和管理员的 Dex 身份验证工作流。
如果没有授权用户的过程,应用程序安全性就不完整,RBAC 提供了一种结合 Dex 身份验证工作流实现这一目的的简单方法。
正如 Dixit 所指出的,Kubernetes 有自己的方法来管理对你的计算机或网络资源的访问,该方法基于你组织中单个用户的角色。Kubernetes RBAC 允许你使用现有的用户和组,并为它们分配角色。该方法灵活而强大——定义规则一次,就可以多次使用它们,不仅在集群内,而且可以跨多个集群使用。RBAC 清楚地定义了谁可以访问什么,这允许在应用程序更改和增长时跨集群进行动态计算。
Dixit 指出,对于管理员来说,多租户常常是一个问题,特别是当集群和应用程序在初始设置之后成熟时。它们必须决定如何限制用户仅访问它们的应用程序和应用程序中的组件。Kubernetes RBAC 使定义规则和管理谁可以访问什么变得更容易,同时允许用户和应用程序之间的分离和安全性。
Dixit 分享了 Kubernetes 文档中的角色和 clusterRoles 示例,以说明可以区分应用程序级和集群级访问。她还指出,规则是一组特定的权限,本质上是附加的;默认情况下,用户没有访问权限,除非它绑定到一个角色。可以扩展这些规则并提供额外的访问。规则可以是“all”,也可以是非常细的,甚至是 API 组中的特定资源。
根据 Dixit,规则的主题可以是三种类型:用户、组或服务帐户。可以使用 RoleBinding 和 ClusterRoleBinding 在命名空间或集群级别定义不同的访问级别。
Kubernetes RBAC 的一个重要特性是更改身份验证系统的能力。一旦你将角色和访问级别定义为 RBAC 对象,你就可以从一个 IDP 切换到另一个 IDP,并且你所拥有的 RBAC 角色是持久的。
在 Dexit 在讨论中逐步演示了如何在 Kubernetes 中使用 RBAC 为所有类型的主题配置访问。
Dex 和 RBAC 可以一起用于为 Kubernetes 应用程序提供强大的安全性。
[1]
Dex: https://dexidp.io/