乾貨 | API開放提高效率和安全性攻略

圖片描述

API開放常見問題

每一個開發人員在工做都會常常涉及各類API,基於這些API實現了形形色色豐富的功能。除了提供給內部其餘服務使用的API,愈來愈多企業以API的方式將特有的數據或能力暴露出去,被其餘公司或者最終用戶調用,而後根據必定方式進行計費實現企業創收。不少企業在進行API開放時,每每定義了一個簽名校驗算法後就將API開放出去,並覺得萬事大吉了。可是通過一段時間卻出現了不少意料以外的問題。例如:前端

  • API提供者沒法清晰掌握每一個調用方的使用狀況。
  • 有些調用方的使用量有時會變得很大,影響API穩定性。
  • 開放的API和調用方逐漸增多,導致有哪些API在開放,誰能調用哪些API的管理變得比較混亂。
  • 有些調用方傳參方式老是不對,致使開發同窗在聯調時花費大把時間。
  • 常常會有一些莫名其妙的流量嘗試攻擊。

以上的每個問題都須要花很多時間來解決,搞得API開發的同窗苦不堪言。但其實全部成熟公有云提供商都擁有API網關這款產品,且功能大同小異。而當咱們在選擇API網關的時候,第一位要考慮的就是穩定性、安全性和性能。接着還須要考慮所支持的功能的豐富度、使用的難易程度、使用情況及可觀測性等。幾乎全部的API網關產品都支持互聯網後端地址,不須要必定要把服務部署到公有云上。你的服務能夠仍然部署在你的私有云或者其餘家公有云,將你的服務地址註冊到你選好的雲API網關上,用戶從API網關做爲入口訪問你的服務便可,只用很是小的一次性研發投入和一些配置工做。
除了選擇公有云服務,也有不少開源項目可供你們選擇。從功能的完畢程度來看,Kong是個不錯的選擇(https://konghq.com/kong/)。若是對nginx+lua插件的方式比較不習慣,喜歡java開發的話則可使用zuul(https://github.com/Netflix/zuul)或者spring cloud gateway(https://github.com/spring-clo...)來進行開發實現。
而下面咱們將以京東雲API網關爲例,看看怎麼利用這類產品對API的開放進行加速和各方面的強化。java

API管理

清晰的API管理工具和流程能下降API的維護成本,提升開放效率。
京東雲API網關以分組和API兩級管理API。能夠按分組的方式來管理權限,流量,版本,發佈,SDK和文檔等,同時又能夠按API來定義具體的接口細節、後端配置、轉換配置。
大部分API網關產品都支持版本和發佈環境的概念,這些概念有助於更好的管理即將發佈的API。京東雲API網關的版本指API定義的變化歷史,和git倉庫同樣,每一次的變化都基於一個已有的版本進行,而且能夠針對一個具體的API版原本生成這個版本對應的SDK和文檔,而後部署到某個發佈環境。京東雲API網關預設了測試、預發、線上三個發佈環境,用於區分新版本的測試環境和供API調用者使用的生產環境。而要提供新的API,首先須要把API定義出來,再部署到測試環境。部署以後,能夠經過API調試界面在頁面進行簡單調試,也能夠下載SDK後編程實現。nginx

權限管理

由於通常會有多個API開放給多個調用方,誰能調用哪些每每須要頻繁調整,因此權限管理也是比較麻煩的一個工做。若是把權限相關配置放在API提供方的程序裏,將很是不靈活,維護成本也會很高,可是利用API網關就能夠實現API實現邏輯與API鑑權邏輯的分離。當鑑權邏輯主要交給API網關來進行後,API的實現就變得更加純粹。
在鑑權方面,各家API網關產品支持的受權模式都不徹底相同。目前,京東雲API網關支持的受權模式有訂閱密鑰、API網關簽名和京東雲用戶簽名三種。訂閱密鑰的方式爲在請求頭傳一個訂閱密鑰,不只使用成本低,還能保證中等程度的安全性;簽名密鑰則會根據用戶的AK/SK,利用京東雲自定義的加密算法對數據進行傳輸校驗,從而保證很高的準確性和安全性。因爲API網關已經作了用戶側的驗證,所以API提供方只須要驗證其收到的請求是來自於API網關便可。關於驗證的方式,國外的API網關產品較多使用客戶端證書,而國內的API網關通常採用SecretKey簽名的方式,京東雲API網關也是採用後端簽名的方式進行驗證。
而在建立受權的時候,也能夠配置訪問受權、API分組及發佈環境之間的任意綁定關係,使得一個調用者能夠只調用某個分組,也能夠調用多個分組,還能夠限制其只能調用某個分組的線上環境,而測試和預發環境則只容許測試Key進行訪問。git

clipboard.png

流量管理

若是但願給調用者作受權,同時想要保證他按照咱們指望的頻次來調用。須要對已受權的調用操做進行流控限制時,只須要配置一條流控策略並綁定到對應的API分組上便可。這裏配置了兩個流控值,即API分組次數限制和單Access Key次數限制。API分組的次數限制用來保護API提供者的後端服務,這個值小於後端服務可支撐的上限便可;單Access Key次數限制用來限制單個API調用者,能夠按需設置。github

clipboard.png

監控和日誌

當API被調用了之後,查看調用統計和日誌就變得很重要了。在京東雲的API網關中,可以看到請求量、失敗量和響應時間等。此外,還能夠看到API調用的具體日誌,從而對API進行安全可控的管理。算法

clipboard.png

除了上述這些豐富的功能,API網關產品還支持各類便利開發過程的功能,例如Mock後端服務。須要開發新功能時,能夠在API網關上配置API接口後使用Mock後端發佈到測試環境,這樣即便後端功能還未開發好,前端以及移動端的開發也可使用Mock地址來進行開發和聯調,大大提高了開發效率。
以京東雲API網關爲例,咱們看到了如何使用API網關產品輕鬆地對API開放進行加速和強化,從而解決了企業在API開放過程當中出現的一系列問題。選擇一款合適的API網關產品,將可以帶領用戶在API經濟熱潮下快速找到正確的前進方向,爲企業賦能,使企業更好的預見將來,擁抱將來!spring


點擊"京東雲"瞭解更多產品信息編程

圖片描述

圖片描述

相關文章
相關標籤/搜索