1. 程式人生 > 程式設計 >實現API管理系統的幾個重要關鍵詞

實現API管理系統的幾個重要關鍵詞

管理API的需求源自於Web API開展業務。從2006年開始,然後逐漸成熟,並在2016年之前進入市場。無論是通過代理現有API的管理閘道器、本身作為用於部署API本身的閘道器的一部分,還是作為連線層在程式碼中,API管理就是針對API進行編輯、測試、釋出、身份驗證,計量,分析報告、監控等。在過去十年中,API管理提供商共同定義了一些使用Web API完成業務的常用方法。雖然API技術非常技術化,但它依舊與API業務密切有關,並且通過使用Web提供對資料,內容,演演算法和其他數字資源的訪問所產生的價值。下面將通過幾個關鍵詞的形式說明API管理的重要性和實現方式。

1.安全性:

API認證

如果你經常向合作伙伴提供API訪問許可權,那限制API訪問合作伙伴IP地址的防禦力(白名單)非常強大。但你仍需要進行身份驗證和速率限制,只要將流量減少到只有已知的合作伙伴,這會消除在對更廣泛的網際網路開放的API上看到的大量惡意流量,例如蠻力企圖獲取訪問許可權和拒絕服務攻擊。即便使用IP白名單,建立API閘道器仍然是最佳做法。這有助於身份驗證並確保後端僅接收正確返回的API呼叫。

最常見的是OAuth和OAuth2,用於在API之間進行通訊和保護通訊。即便使用OAuth,其他人的Token也可能是一個問題。如何管理Token的生命週期?Token是否得到重新整理?在一些成功的基礎架構中,使用了一次性Token來嚴格限制正在嘗試的操作型別,它是一種歸結為安全Token管理和基於證書的身份驗證。

在授權之前始終對API進行身份驗證 ,有許多方法可以進行API身份驗證,但多因素身份驗證是常用的方法。對於API,使用外部程式(例如通過OAuth協議)獲取訪問Token是很常見的。身份驗證金鑰最敏感,必須保持安全,建議使用管理儲存來自動執行整個過程。 也就是說,僅憑身份驗證不足以授予對API的訪問許可權,應該有一個授權步驟來確定哪些資源可以訪問API。檢查授權的各種方法包括基於內容的訪問控制(CBAC),基於角色的訪問控制(RBAC)或基於策略的訪問控制(PBAC),這些方法可確保業務資料保持完全受到保護,以防止未經批准的訪問。

限制訪問API的資源

保護API環境涉及每個API接觸點,對API客戶端(第三方應用程式和開發人員或微服務)進行身份驗證和授權,限速API呼叫以緩解分散式拒絕服務(DDoS)攻擊並保護處理後端應用程式API呼叫。

用於保護API的一些技術和工具是:

1)使用JSON Web Token(JWT)來驗證和授權API客戶端,JWT包括有關客戶端的資訊,例如管理許可權或到期日期。當客戶端向JWT提供其API請求時,API閘道器會驗證JWT並驗證其中的宣告是否與你為客戶端請求的資源設定的訪問策略相匹配。

2)定義和實施訪問控制策略,僅允許某些型別的客戶端執行寫入操作或訪問敏感資料(如定價)。

3)定義基於角色的訪問控制,該控制僅允許某些使用者(例如特定組織內的開發人員)釋出敏感資訊(如定價或庫存水平)的API。

4)通過應用速率限制策略來保護API本身,該策略設定API閘道器從指定源(例如客戶端IP地址)每秒(或其他時間段)接受的請求數量的閾值。

5)使用HTTPS保護後端應用程式 - 應該在API閘道器和處理API請求的後端系統之間使用HTTPS協議。

限制和配額的斷路器,一個好的做法是強制執行每個應用程式的資料使用配額,以便在DoS,DDoS攻擊或防止未經授權的使用者不正當使用API時,後端不會受到影響。每個資源的節流和配額不僅可以作為斷路器,還可以防止系統產生負面影響。具有配額和限制等策略的複雜API管理平臺可提供此功能。

三個關鍵領域

我們的API安全方法的三個關鍵領域:

1)採用說明性方法。客戶轉向OAuth 2並使用Open ID Connect進行覆蓋,OAuth 2有很多選擇,Open ID雖然限制了選擇但也指匯出最佳實踐。

2)仔細考慮應用程式ID如何與使用者身份相關聯。

3)從最廣泛的意義上考慮API安全性,以減少入侵企圖。可以採取分發安全實施的方法。預設情況下,API管理專注於提供API閘道器,而API閘道器應該專注於流量的身份驗證和授權。建議採用多層方法,並在Apache Mod Security的單獨層中包含Web應用防火牆。

2.易用性:

部署API有許多重要元素,包括身份驗證,保護/可用性和貨幣化。但是如果不使用API,其中許多都無關緊要。易於使用和成功完成用例是被使用的關鍵。我們的整合平臺使API易於使用。 通過我們的應用程式聯結器,我們可以簡化許多API的使用。

API中的最後一個字母是“介面”,因此明確定義該介面如何工作是十分重要的。客戶如何使用你的API,以及開發人員如何將這些API推向市場,你需要提前做出一些重要的架構決策。隨著API數量的增長,保持命名和資料格式的一致性變得很重要。當你提供5-10個API時,這並不是什麼大問題,但是當數量超過100時,你可能有多個人(或多個團隊)在不同的時間段建立它們,作為不同產品的一部分引入等等,讓所有團隊輕鬆瞭解並執行現有規範至關重要。如果這些規範不統一且難以閱讀,那它一定會導致問題。

3.API生命週期管理:

具有以下四個主要元素:

1.API生命週期管理,提供管理API整個生命週期的能力,從API的設計、開發、釋出和管理(包括維護和版本控制),從而允許公司通過撰寫創新解決方案來加速創新,提高開發效率,促進企業資料的更好安全性,並允許使用者輕鬆發現和使用API。

2.API閘道器,API閘道器充當一組API的入口點。使用API閘道器的好處是為每個客戶端提供最佳API,減少客戶端需要進行的請求數量並實施適當的安全性和控制。

3.檔案,Developer Portal是提高API採用率和粘性的關鍵。這是開發人員學習和使用API的第一點,也是開發人員瞭解身份驗證/授權機制的地方。此外,他們還將瞭解哪些API可供使用,並利用每個API請求的描述和示例。

4.API分析/監控,API分析和監控可幫助瞭解和理解其API的使用情況,從而提供有關各種API使用的見解。或者,開發者可以強制執行API配額,限制和API流量,以阻止/限制與你的業務目標不一致的使用。

在國內的API介面管理工具中,能完整實現API管理全流程並且體驗較好的的平臺和工具就是 EOLINKER了,包括介面檔案編輯、API測試、自動化測試和API監控和閘道器,能體驗到完整的API研發方案。而國外的諸如POSTMAN、Swagger功能也能強大,但是前者注重測試,後者注重介面管理,並不全面,而且全英的語言對國人也不是很友好。因此有需求或者感興趣可以各自了解下 EOLINKER、POSTMAN、Swagger。

在選擇API管理解決方案時,最好的建議是始終保持關係簡單,模組化,強獨立性並與API生命週期中的其他模組分離,並保持業務參與度有限,使得可以在沒有冗長合同的情況下不斷使用成長。API生命週期中的每一階段都應該反映API的理念,並保持小巧,分離,專注做好該階段目標。

參考資料:

Kin Lane,API Life Cycle Basics: API Management,dzone.com/articles/ap…

Tom Smith,Keys to API Management,dzone.com/articles/ke…