開放式策略代理:云原生的通用策略引擎
開放式策略代理(OPA)可以幫助企業簡化分布式應用程序、Kubernetes、微服務等授權策略創建和實施。
隨著越來越多的組織采用云計算技術,他們可能會發現云原生堆棧的動態性和規模要求更加復雜的安全性和合規性。例如,隨著像Kubernetes這樣的容器編排平臺越來越受關注,開發團隊和開發人員對策略領域(如準入控制)以及更傳統的領域(如計算、存儲和網絡)負有新的責任。與此同時,每個應用程序、微服務或服務網格都需要自己的一組授權策略,開發人員需要為這些策略負責。
出于這些原因,很多組織開始尋找一種更簡單、更省時的方法來在云中創建、實施和管理策略。作為一個開源的、不受領域限制的策略引擎,開放策略代理(OPA)于4年前創建,正在成為云原生策略的實際標準。事實上,Netflix、Pinterest和Goldman Sachs等公司已經將OPA投入生產,用于Kubernetes準入控制和微服務API授權等用例。OPA還支持許多人們已經知道和喜歡的云原生工具,其中包括Atlassian套件和Chef Automate。
OPA為云計算原生組織提供了一種統一的策略語言,因此授權決策可以用一種通用的方式表示,跨應用程序、API、基礎設施等,而不必將定制的策略分別硬編碼到這些不同的語言和工具中。此外,由于OPA是專門為授權而構建的,它提供了越來越多的性能優化集合,因此策略作者可以將大部分時間花在編寫正確、可維護的策略上,并將性能留給OPA。
OPA授權策略在整個堆棧中有許多用例,從在容器編排周圍設置護欄,到控制SSH訪問或提供基于場景的服務網格授權。有三個流行的用例為許多OPA用戶提供了一個良好的啟動平臺:應用程序授權、Kubernetes許可控制和微服務。
申請授權的OPA
授權策略無處不在,因為幾乎每個應用程序都需要它。但是,開發人員通常自己開發代碼,這不僅耗時,而且會導致難以維護的工具和策略拼湊而成。雖然授權對每個應用程序都很重要,但花在創建策略上的時間意味著更少的時間關注面向用戶的功能。
OPA使用專用的聲明性策略語言來簡化授權策略的開發。例如,企業可以直接創建和執行策略,例如,“如果是承包商,則無法閱讀PII”或“Jane可以訪問此帳戶”。但這只是一個開始。由于OPA具有場景意識,因此還可以制定考慮任何事物的政策,例如,在交易日的最后一小時請求進行股票交易,這將產生上百萬美元的交易,只能在給定名稱空間中的特定服務上執行。
當然,許多組織已經有定制的授權。但是,如果組織希望在云中分解應用程序并擴展微服務,同時又保持開發人員的效率,那么就需要分布式授權系統。
用于Kubernetes接納控制的OPA
許多用戶還使用OPA為Kubernetes創建防護欄。Kubernetes本身已成為主流和關鍵任務,組織正在尋找定義和實施安全護欄以幫助減輕安全和合規風險的方法。管理人員可以使用OPA制定清晰的策略,以便開發人員可以加快管道生產,并迅速將新服務推向市場,而不必擔心運營、安全或合規風險。
OPA可用于創建策略,以拒絕使用相同主機名的入口,或要求所有容器映像來自可信注冊表,或確保所有存儲始終使用加密位進行標記,或確保暴露在互聯網上的每個應用程序使用經批準的域名。
由于OPA直接與Kubernetes API服務器集成,因此它可以拒絕跨計算、網絡、存儲等策略禁止的任何資源。對于開發人員特別有利的是,組織可以在開發周期的早期公開這些策略,例如在持續集成(CI)/持續交付(CD)管道中,以便開發人員可以及早獲得反饋,并在運行時修復問題。此外,組織甚至可以帶外驗證其策略,以確保它們達到預期的效果,并且不會在無意中引起麻煩。
微服務的OPA
最后,OPA在幫助組織控制其微服務和服務網格架構方面變得非常流行。借助OPA,組織可以直接為微服務創建和實施授權策略(通常是作為輔助工具),在服務網格內構建服務策略,或者從安全的角度創建限制服務網格架構中橫向移動的策略。
為云原生架構構建統一策略
通常,使用OPA的總體目標是創建一種跨云原生堆棧創建策略的統一方法,因此,組織不必通過廣告、部落知識、維基百科、PDF或大量不匹配的工具來持續管理策略。
除了簡化開發和加快交付速度之外,這對于安全性也是一個重大新聞,因為OPA減少了組織需要檢查的工具數量,例如組織是否懷疑自己曾嘗試未經授權的訪問。同樣,從操作和合規性角度來看,OPA使得在異構環境中提取和分析信息變得更加容易,從而幫助組織快速發現問題并更快地解決。
開發人員正在尋找一種更簡單、更有效的方法來為他們的云原生環境創建和管理基于策略的控件。對許多人來說,這種解決方案就是OPA。如果組織發現自己在多個地方、多種語言或跨多個團隊接觸授權策略,OPA可以幫助其消除冗余并加快交付速度。