構建 Kubernetes? 現在試試這 5 個 RBAC 工具來審核權限
已發表: 2022-03-14Kubernetes 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 最佳實踐感興趣。