多集群Kubernetes管理和訪問
譯文譯者 | 李睿
審校 | 孫淑娟
人們可以想象有這樣一座巨大的堡壘,這個堡壘有厚重的墻壁、堅固的大門,以及瞭望塔和護城河,以免受攻擊。堡壘有多層防御可以阻止攻擊者,雖然攻擊者可能會游過護城河,但必須翻越高墻才能進入堡壘。因此,攻擊者可能只會破壞單層防御,但多層防御會使其難以進入堡壘。
如果仔細觀察,發現這些防御層都做了阻止攻擊者入侵這樣一件事。這正是保護應用程序所需要的——防止未經授權的訪問的多層防御。談到Kubernetes訪問控制,需要管理許多不同的組件。Kubernetes集群本質上是復雜和動態的,這使得它們很容易受到網絡攻擊。
本文探討對多個Kubernetes集群進行訪問時如何管理的基本注意事項,有助于企業更好地規劃Kubernetes的整體安全性。
隔離Kubernetes API服務器
在Kubernetes集群中,通常是采用控制平臺控制節點,用節點控制Pod,用Pod控制容器,用容器控制應用程序。但是能夠控制平臺的是什么?Kubernetes公開了允許企業配置整個Kubernetes集群的API,因此保護對Kubernetes API的訪問是保持Kubernetes安全性方面最關鍵的考慮因素之一。由于Kubernetes完全由API驅動,因此控制和限制誰可以訪問集群以及允許他們執行哪些操作是第一道防線。
以下來看看Kubernetes訪問控制的三個步驟。在身份驗證過程開始之前,確保正確配置網絡訪問控制和TLS連接是首要任務。
(1)API認證
訪問控制的第一步是驗證請求。建議盡可能使用外部身份驗證服務。例如,如果企業已經使用身份提供程序(IdP)管理用戶帳戶,例如Okta、GSuite和Azure AD,以對用戶進行身份驗證。Kubernetes API服務器并不保證身份驗證程序的運行順序,因此確保用戶只綁定到單個身份驗證方法非常重要。對以前使用過的身份驗證方法和令牌進行定期檢查,如果不再使用,則將其停用,這一點也很重要。
(2)API授權
一旦通過身份驗證,Kubernetes會檢查請求是否被授權。基于角色的訪問控制(RBAC)是授權API訪問的首選方式。在默認情況下,應該了解四個內置的Kubernetes角色——集群管理員(cluster-admin)、管理員(admin)、編輯(edit)、查看(view)。集群角色可用于設置集群資源(例如節點)的權限,而其角色可用于命名空間資源(例如pod)。Kubernetes中的RBAC具有一定的復雜性和人工操作。
(3)準入控制
在成功驗證和授權執行特定任務后,最后一步是準入控制以修改或驗證請求。Kubernetes提供了幾個模塊來幫助定義和自定義允許在集群上運行的內容,例如資源請求限制和強制執行Pod安全策略。準入控制器還可用于通過Webhook擴展Kubernetes API服務器,以實現高級安全性,例如實現圖像掃描。
基于角色的訪問控制(RBAC)
Kubernetes被如此大規模采用的原因之一是因為社區的蓬勃發展和定期更新。Kubernetes 1.6中引入的關鍵更新之一是基于角色的訪問控制(RBAC)。雖然基本身份驗證和授權由RBAC負責,但角色的創建和維護在多個集群環境中變得至關重要。如果將內置集群管理角色授予任何用戶,他們實際上可以在集群中執行任何操作。管理和跟蹤角色和訪問權限是一項挑戰。
對于具有大型多集群環境的企業,將創建和刪除大量資源,這通常會增加未使用或丟失角色無人看管的風險。而在將來創建新角色時,某些非活動角色綁定可能會意外授予權限。發生這種情況是因為角色綁定可以引用不再存在的角色。將來如果使用相同的角色名稱,這些未使用的角色綁定可以授予原本不應該存在的權限。
集群的復雜性和動態性
隨著集群、角色和用戶數量的增加,確保控制需要用戶、組、角色和權限的適當可見性。每次添加新角色時,都需要配置額外的規則。對于大型企業來說,這可能意味著需要管理數百甚至數千條規則。由于缺乏一個集中的系統來管理集群中的所有角色,這是管理員面臨最糟糕的噩夢。
Kubernetes受歡迎的原因之一是它本質上是可擴展的。它配備了開箱即用的安全工具,允許應用程序和基礎設施根據需求進行擴展。這意味著Kubernetes集群可以是短暫的,可以立即創建和銷毀。每次創建或銷毀集群時,都必須為特定用戶配置訪問權限。如果對集群的訪問沒有得到適當的管理,這可能會導致安全漏洞,可能會授予對整個集群的未經授權的訪問權限。
結論
如今的大多數團隊分布在企業內的不同業務部門。在通常情況下,開發人員、測試人員、業務分析師和顧問都可能在同一個應用程序上工作——每個人都需要訪問不同的集群或同一集群的不同組件。為不同用戶提供正確級別的訪問權限,并在必要時撤銷該訪問權限非常重要。
Kubernetes是一個由節點、集群、Pod、容器、卷等多個組件組成的協調良好的系統。在規模上,可以將數百個這樣的組件分布在世界各地的多個集群中。識別“誰”需要“什么”,訪問“哪個”資源變得具有挑戰性。只有到那時,才會意識到對Kubernetes安全工具的需求,它不僅可以與企業的基礎設施無縫集成,還可以提供一種安全且統一的方式來管理對多個集群的訪問。
原文標題:??Multi-Cluster Kubernetes Management and Access??,作者:Kyle Hunter