亚洲一区精品自拍_2021年国内精品久久_男同十八禁gv在线观看_免费观看a级性爱黄片

Article / 文章中心

構建云原生權限的五個優(yōu)秀實踐

發(fā)布時間:2022-05-13 點擊數:904
為了讓人們的工作和生活更輕松,需要了解構建云原生權限帶來的獨特挑戰(zhàn),并了解構建云原生權限的五個優(yōu)秀實踐,這些實踐可以為開發(fā)人員減少很多麻煩。

基于云原生/微服務的產品很復雜,為這些產品構建訪問控制和管理權限也很復雜。而且每次拉取請求只會讓情況變得更糟。大多數開發(fā)人員最終都會為他們的產品多次構建授權或訪問控制,他們被迫根據每個新客戶、產品或安全需求進行重構。

編輯搜圖

為了讓人們的工作和生活更輕松,需要了解構建云原生權限帶來的獨特挑戰(zhàn),并了解構建云原生權限的五個最佳實踐,這些實踐可以為開發(fā)人員減少很多麻煩。

應用程序和訪問權限已更改

開發(fā)人員在過去使用帶有授權或訪問控制的單一框架(如Django或Spring)來構建授權,但當創(chuàng)建云原生應用程序時,這些不再適用。

這有幾個原因:

  • 首先,應用程序本身不再是單一的——它們基于微服務并且正在變得高度分散。當開發(fā)人員需要合并部署在邊緣,并且通常也需要訪問控制的設備或實例時,這一點也值得引起注意。

  • 其次,云原生應用程序往往需要集成第三方服務(例如計費、身份驗證、數據庫、分析等),并且除了開發(fā)人員自己的應用程序的微服務之外,還需要能夠控制對它們的訪問。

  • 第三,更加動態(tài)和分布式的應用程序需要使用一堆不同的授權模型(例如RBAC、ReBAC、ABAC),這些模型基于多個數據源和越來越復雜的規(guī)則。最后,安全、隱私和合規(guī)性需求也在上升(面對日益復雜的網絡威脅)并且變得非常復雜。開發(fā)人員發(fā)現自己不僅要管理誰應該訪問數據,還要管理數據在不同服務之間的傳播方式。

授權的現實

所有這些新需求都要求在考慮授權時采用不同的思維方式:

  • 授權不再是事后事項,必須提前計劃。

  • 授權是一項持續(xù)的努力,而不是一次性解決的問題。它必須與產品一起不斷發(fā)展。

  • 授權是客戶體驗的關鍵,因為它會影響用戶連接和邀請他人使用產品的方式。如果體驗不好,他們不會喜歡。

  • 授權連接到更大的身份和訪問管理空間。

構建云原生權限的五個最佳實踐

為了處理所有這些更改,有一些最佳實踐可以幫助開發(fā)人員構建云原生權限,并有時間實際開發(fā)功能,而不是在處理權限方面不堪重負。

1. 解耦策略和代碼

構建云原生權限的最重要實踐之一是策略和代碼的解耦。將授權層的代碼與應用程序代碼本身混合在一起可能會產生很大的問題。更重要的是,它造成了在不同微服務之間復制代碼時難以升級、添加功能和整體監(jiān)控代碼的情況。每一項更改都需要重構大量代碼,這些代碼只會隨著這些微服務的發(fā)展而彼此偏離得更遠。

這可以通過(在理想情況下)創(chuàng)建一個單獨的授權微服務將策略與代碼解耦來避免這種情況,其他服務將使用該微服務來滿足它們的授權需求。例如,開放策略管理或Spice DB等開源策略/權限引擎允許開發(fā)人員在單獨的服務中管理授權。

2. 事件驅動

開發(fā)人員希望正在構建的應用程序是動態(tài)的。應用程序通常包括用戶邀請、角色分配或使用第三方數據源等功能——所有這些都應該實時管理。如果沒有這種能力,做出授權決策的能力將顯著降低。

這要求開發(fā)人員將授權層設計為事件驅動的。他們希望創(chuàng)建一個現實,每次發(fā)生影響授權的事件時,它都會立即通過系統(tǒng)傳遞,以確保授權層了解它,并與應用程序和任何相關的第三方數據服務保持同步。

在理想情況下,為了實現這一點,開發(fā)人員將授權數據與應用程序數據分離(因為并非所有與應用程序相關的數據都與授權相關,反之亦然),在授權層中創(chuàng)建一個精益模型,然后通過實時事件使其與應用程序和其他源保持同步。

例如,開放策略管理層是一個開源項目,可以使開放策略管理成為事件驅動的。這使開發(fā)人員可以響應策略和數據更改,向其代理推送實時更新,并使開放策略達到實時應用程序所需的速度。

3. 利益相關者的后臺集成

授權層是產品本身的一部分,在以產品為中心的企業(yè)中,有各種利益相關者需要能夠連接到訪問控制體驗。與開發(fā)人員一起,這些包括DevOps、產品經理、安全、合規(guī)、銷售、營銷等。在構建授權層時,希望通過后臺系統(tǒng)為這些不同的利益相關者提供控制和接口。這要求從一開始就考慮不同利益相關者從訪問控制界面到產品的需求。應該讓每個人都滿意。

4. 客戶接口

與考慮利益相關者要求的方式類似,開發(fā)人員還需要考慮最終用戶/客戶。授權不僅與管理產品有關,而且與產品的最終用戶有關。例如,如果用戶需要訪問他們自己的審計日志(幾乎每個B2B應用程序用戶都需要),他們應該能夠輕松地看到在產品中所做的事情。提前認識到這一需求需要構建授權層,使其能夠鎖定滿足最終用戶需求的不同接口。

5. GitOps

因此創(chuàng)建了一個單獨的微服務來管理權限,并且能夠以事件驅動的方式向它提供更新?,F在如何管理這些更改、應用版本、應用各種制衡,并確保微服務的代碼和數據符合需求和要求?其答案是GitOps。

使用GitOps可以讓開發(fā)人員為每個版本更改創(chuàng)建一個拉取請求。然后,當開發(fā)人員更新產品及其訪問控制功能時,他們可以使用新代碼推動提交,讓這些代碼通過必要的測試和檢查,并將它們應用到授權層。

云原生權限的未來發(fā)展

隨著復雜性的增加以及客戶和安全需求的不斷涌現,以一種為未來做好準備且不需要大量重構或重寫的方式構建產品的訪問控制至關重要。為授權創(chuàng)建單獨的微服務,將其設計為事件驅動,為各種利益相關者和客戶提供控制和接口,并使用GitOps使開發(fā)人員能夠創(chuàng)建盡可能面向未來的產品,并防止他們不得不多次重建授權層,而無論需求如何。