构建 Kubernetes? 现在试试这 5 个 RBAC 工具来审核权限

已发表: 2022-03-14

Kubernetes RBAC 是一种高效的基于角色的授权方法,用于提供对 Kubernetes 集群中资源的精细访问。

但是,如果使用不当,很容易造成合规灾难。 这就是为什么我们需要 RBAC 工具来审计和定位 Kubernetes 中的风险权限。

在本文中,我们将讨论 Kubernetes RBAC 是什么,为什么审计风险权限很重要,并发现可以帮助我们最好地审计风险权限的工具!

什么是 RBAC?

基于角色的访问控制 (RBAC) 是一种安全机制,其中每个访问授权都基于分配给用户的角色。 因此,使用该系统,可以限制应用程序或用户对 Kubernetes 集群资源(命名空间、Pod、作业)的访问。

在 Kubernetes 中,RBAC 策略可用于管理系统用户(用户或组)以及服务帐户(服务帐户)的访问权限。

Kubernetes 中还有其他方式来授权用户,例如 ABAC(基于属性的访问控制),通过 Webhook 或节点授权,但稳定版本中使用最广泛的原生授权机制是 RBAC。

实际上,与资源的所有交互都是通过其 API 服务器完成的,这意味着最终,一切都仅限于向所述服务器(主节点或控制面板的重要组件)发出 HTTP 请求。

Kubernetes 有四个 RBAC 相关的对象,可以组合起来设置集群资源访问权限。 它们是 Role、ClusterRole、RoleBinding 和 ClusterRoleBinding。要使用这些对象,就像所有 Kubernetes 对象一样,必须使用 Kubernetes API。

Kubernetes 中的角色

在 Kubernetes 中,有两种角色,分别称为 Role 和 ClusterRole。 两者最大的区别在于 Role 属于一个具体的命名空间,而 ClusterRole 对集群来说是全局的。 因此,对于 ClusterRole,它的名称必须是唯一的,因为它属于集群。 在 Role 的情况下,两个不同的命名空间可以有一个具有相同名称的 Role。

另一个应该提到的区别是,Role 允许访问同一命名空间内的资源,而 ClusterRole 除了能够授予对任何命名空间内资源的访问权限外,还可以授予对同一命名空间内资源的访问权限,例如节点其中。

既然我们知道了角色的类型,接下来就是知道我们可以将这些角色分配给谁。 在这种情况下,我们有用户帐户、服务帐户和组。 用户帐户是分配给特定用户的帐户,而服务帐户由进程使用。 例如,假设我们的应用程序需要以编程方式访问集群中的资源,为此我们将使用服务帐户。

最后,我们需要将角色绑定到帐户(用户或服务)或组的“粘合剂”。 Kubernetes 中有两个资源:RoleBinding 和 ClusterRoleBinding。 RoleBinding 可以引用同一命名空间中的角色,而 ClusterRoleBinding 可以引用任何命名空间中的任何角色并全局分配权限。

注意,权限只允许访问资源,因为“默认情况下,一切都被拒绝”,并且可以为同一个用户分配多个角色

使用 RBAC 的唯一先决条件是使用“ –authorization-mode=RBAC ”选项在我们的集群上启用它。 我们可以使用以下命令进行检查:

 kubectl api-versions

什么是有风险的 RBAC 权限以及如何修复它们?

任何允许或可能允许未经授权访问 pod 资源的权限都被视为有风险的权限。 例如,如果用户具有编辑权限,他们可以编辑自己的角色并可以访问他们原本不允许访问的资源。 这可能会导致合规性问题。 同样,如果未选中旧权限,则某些用户可以访问他们不再需要的资源。

当您拥有大量角色时,手动查找此类有风险的权限既困难又耗时。 为了完成这个过程,有许多 RBAC 权限审计工具可以帮助扫描整个集群以定位任何有风险的权限。 同样重要的是要了解 RBAC 的有效性取决于最新的 RBAC 策略,而该策略又需要定期进行权限审核。

以下是一些基于不同语言和用户界面审核权限的最佳 RBAC 工具。

库比扫描

KubiScan 是一个基于 Python 的 RBAC 工具,用于扫描 Kubernetes 集群中的风险权限。 该工具必须在主节点内执行,然后可以直接从终端运行以提供风险权限列表。 Kubiscan 可用于查找有风险的 Roles、ClusterRoles、RoleBindings、ClusterBindings、Subjects、Pods 甚至 Container。

克兰

Appvia 的 Krane 是一个基于 Ruby 的 Kubernetes RBAC 静态分析和可视化工具。 它既可以作为 CLI 在本地运行,也可以在 CI/CD 管道中运行。 此外,它还可以作为 Kubernetes 容器中的独立服务运行。 Krane 提供了通过分面树和图形网络视图分析 RBAC 权限的功能。 它还通过其 Slack 集成为任何有风险的权限发出警报。

RBAC 工具

InsightCloudSec 的 RBAC 工具是使用 Go 构建的独立权限审计工具。 它不仅允许您扫描和突出显示有风险的 RBAC 权限,还允许您通过其 Auditgen 功能从权限审核中生成 RBAC 策略。 RBAC 工具还提供了 RBAC 可视化功能。

顺风

Fairwinds Insight 是一个独立工具,可提供许多 Kubernetes 安全性和合规性功能。 其策略实施功能允许您审核 RBAC 权限并根据标准和自定义策略对其进行扫描。 Fairwinds 提供按需演示。

权限管理器

Sighup 的 Permission Manager 是一个基于 Javascript 的 Kubernetes 权限管理工具。 它提供了一种简单而主动的方式来管理 Kubernetes 集群中的用户权限。 Permission Manager 还提供了该工具的企业版,允许您进行基本的 RBAC 权限审计。

结论

Kubernetes RBAC 是管理对 Kubernetes 集群中资源的访问的一种有效方式。 但是,如果实施不当,可能会导致安全性和合规性问题。 但是,可以通过 RBAC 审计工具持续审计权限来避免这种情况。

您可能还对 Kubernetes 最佳实践感兴趣。