?譯者 | 胥磊
審校 | 孫淑娟
在過去的十年,企業網絡的入侵已經變得司空見慣,大家對邊界安全的關注也在日漸淡化。但越來越多的公司發現僅僅通過“處于內網”就信任訪問的用戶和設備,明顯不足以應對不斷變化的威脅。
與此同時將業務應用程序重新平臺化為 SaaS 模式,加上移動和分布式的網絡逐漸成為行業趨勢,使得通過VPN接入公司內網顯得老套和繁瑣。疫情的爆發圍繞上述趨勢掀起的一場風暴,加速了安全的更新換代。對于任何想要生存下來的公司來說,采用零信任架構都不再有可商談的余地。
零信任意味著縱深防御
關于安全(含現實世界和數字世界)的最重要原則之一就是縱深防御。通過與單一控制措施來確保安全(就像大門上的一把鎖)進行比較,單一措施的效果遠不如采取一系列安全措施的組合能提供更多的安全性。
“門和鎖”的分類
在這些確保安全的措施里面有不少可以采用零信任安全架構,都歸屬于粗粒度和細粒度訪問控制的范疇。在過去的十年,大部分安防行業的注意力都集中在粗粒度訪問控制,但在最近兩年伴隨一波創新的浪潮已經變為細粒度訪問控制了。
如上圖所示,縱深防御就是要求每一層上至少要有一個解決方案(甚至更多)。下面讓我們深入研究其中的幾個。
粗粒度訪問控制
這類訪問控制雖然能知道正在訪問受保護資源的用戶和設備,但是沒有這些用戶,相關操作以及操作資源的上下文。主要包括訪問代理,單點登錄/身份服務提供商以及API網關/路由。
1. 訪問代理
正如Google在推廣其BeyondCorp時所說的那樣,訪問代理是用戶訪問企業應用和資源的第一道防線。使用了用戶、設備、網絡、位置甚至日期/時間屬性的準入控制策略,有助于確保只有通過該策略允許的請求才被路由到應用程序。Zscaler 和 Cisco 等大型供應商以此作為傳統 VPN 的替代品。
2. 企業單點登錄/身份服務提供商
身份服務提供商(IDP)通常被用于用戶要登錄他們可以訪問的應用時進行身份驗證。雖然嚴格意義上來說這不是授權層,但IDP可以根據一系列的屬性對用戶做出是否有權限訪問某些應用的粗粒度決策。例如Okta這樣的IDP可以將銷售部門的用戶配置到Salesforce,并強制只有銷售人員才可以訪問此類應用。IDP 對于下游訪問控制也是至關重要的,因為它產生一個簽名的訪問令牌(如 JWT) ,IDP 的下游各層都可以使用這個令牌來確認請求所代表的用戶身份。
3. API路由/網關
服務網格提供了一個機會,在將請求路由到應用程序之前可以使用API網關進行API的訪問授權。云原生計算基金會的開放策略代理(OPA)項目,作為一個可用于訪問授權的通用策略引擎而廣受歡迎。像Styra這類供應商可以非常容易的通過配置類似Kong和Envory的API網關來評估OPA策略,該策略可以基于HTTP方法,路徑甚至訪問令牌(JWT)中的屬性來允許或拒絕請求。話雖如此,由于API網關沒有足夠的用戶相關的上下文(超出JWT范疇),而且無法提供特定資源的訪問控制,因此這一層的防御是粗粒度的。
細粒度訪問控制
這種類型的安全措施都內置于應用本身或者了解應用正在訪問的資源,由于它們有那些正在嘗試執行操作的用戶,操作本身以及操作的資源相關的全部上下文,因此認為它們都是“細粒度”的,包括應用/API授權,數據過濾和數據代理。隨著粗粒度解決方案日趨成熟,目前許多創新都轉向了細粒度授權,其中的大多數解決方案都要某種程度地集成到應用程序中,而不僅僅是網絡級別攔截請求。
1. 應用/API授權服務
幾乎每個業務應用都有角色和權限控制,根據登錄用戶的權限級別來區分可用的操作集。一個健壯的 RBAC/ABAC 解決方案,允許應用將來自身份服務提供商(OPA)或目錄的屬性映射到應用的角色和權限,以便盡可能自動地分配角色和權限。
現代的應用有一個負責為每個應用/API請求授權的微服務,它會根據用戶和資源屬性編寫授權策略來允許或拒絕請求。OPA作為這層的良好的解決方案開始被推行,很多供應商(其中包括Aserto)都將OPA作為端到端應用授權解決方案的一部分。SaaS開發人員也開始逐步使用基于OPA等開源項目中現成的解決方案來替換自主開發的授權微服務。
2. 數據過濾
一些應用依靠數據訪問層來過濾出用戶正在訪問的數據中那些“正確”的數據,通常這些都是在行級安全級別的數據庫中,或由開發人員手動或通過ORM庫的構建在應用中完成。
解決這個問題的新方法包括向庫提供描述主體(用戶或用戶組),謂詞(要執行的動作)和對象(資源)以及主體可以使用的規則,和對資源可以執行的哪些操作,然后這些庫將協助構建對數據源的查詢控制,只返回“正確”的數據。本質上是提供了一個“授權感知的ORM”。
3. 數據代理
數據代理不僅可以通過依賴了數據源的應用來進行限制訪問數據源還可以通過網絡層進行限制。類似于API網關,數據代理可以攔截對已知數據源的請求,并根據用戶以及其正在查詢的字段做出細粒度的訪問決策。Cyral已采用OPA作為執行數據庫訪問控制規則的底層引擎。
結論
借助于零信任架構,安全不再是孤注一擲的賭博行為。在降低因未授權訪問和數據泄露帶來的風險方面,縱深防御比過時的基于邊界安全的方法要有效得多。每個公司都應采用這種粗細粒度混合的訪問控制。
結合使用訪問代理,身份提供商和API網關,為基于用戶和設備身份的應用,資源和數據訪問提供粗粒度訪問控制。創建應用且對應用的每個請求都基于RBAC/ABAC服務進行授權,可以確保在應用層執行細粒度的訪問控制,因為應用層中有著最多的誰被允許在哪些資源上執行哪些操作的上下文。一旦授權服務允許操作,使用數據過濾可以僅返回用戶可以訪問的數據,從而減少“手工”編寫查詢代碼的需求。最后數據代理可以根據用戶和應用正在訪問的字段的細粒度屬性對數據源的查詢進行獨立授權。所有這些方法的組合使用可以更好地提高安全性。
譯者介紹
胥磊,51CTO社區編輯,某頭部電商技術副總監,關注Java后端開發,技術管理,架構優化,分布式開發等領域。
原文標題:??Modern Application Security Requires Defense in Depth???,作者:Omri Gazitt?