API(應(yīng)用程序編程接口)是互聯(lián)網(wǎng)不可或缺的一部分。當(dāng)我們訪問一個網(wǎng)站時,承載該網(wǎng)站的Web服務(wù)器會展示網(wǎng)頁。API正是那個使網(wǎng)站數(shù)據(jù)能夠為登錄所使用的客戶端(無論是臺式機、筆記本電腦還是移動設(shè)備)消化理解的工具。API作為服務(wù)器提供的程序,可以是處理Web流量同一程序的一部分,也可以是向客戶端提供數(shù)據(jù)的獨立程序。
API專為兩個軟件程序之間的交互而設(shè)計,而UI(用戶界面)則專為用戶直接與程序交互而設(shè)計。API呈現(xiàn)的是可供其他程序解析和操作的原始數(shù)據(jù),而UI呈現(xiàn)的是人類用戶易于閱讀的數(shù)據(jù)。
API在此圖中被類比成餐廳里的服務(wù)員,他把訂單拿給廚師,收集點單的食物,然后帶著食物返回。
按預(yù)期受眾劃分的API類型
1. 公共API。也稱為外部或開放API,可被開發(fā)者和其他用戶公開使用,限制最小。
2. 合作伙伴API。它們不對外公開,由戰(zhàn)略業(yè)務(wù)合作伙伴提供,需要特定權(quán)限才能訪問。
3.內(nèi)部API。也稱為私有API,對外部用戶隱藏,僅向內(nèi)部系統(tǒng)和內(nèi)部開發(fā)團隊公開。
4.復(fù)合API。復(fù)合API結(jié)合了多個數(shù)據(jù)或服務(wù)API。在微服務(wù)架構(gòu)中非常有用,在這種架構(gòu)中,需要從多個服務(wù)獲取信息以執(zhí)行單一任務(wù)。
按協(xié)議劃分的API類型
1.REST。表現(xiàn)層狀態(tài)轉(zhuǎn)換(REST)架構(gòu)非常流行,它依賴于客戶端/服務(wù)器方法來分隔API的前端和后端,并在開發(fā)和實施中提供了相當(dāng)大的靈活性。REST是無狀態(tài)的,這意味著API在請求之間不存儲任何數(shù)據(jù)或狀態(tài)。
2.RPC。遠程過程調(diào)用協(xié)議(RPC)是一種簡單的方式,可以發(fā)送多個參數(shù)并接收結(jié)果。RPC API調(diào)用可執(zhí)行的操作或進程,而REST API主要交換數(shù)據(jù)或資源,例如文檔。
3.SOAP。簡單對象訪問協(xié)議(SOAP)是由萬維網(wǎng)聯(lián)盟定義的消息傳遞標(biāo)準(zhǔn),它支持廣泛的通信協(xié)議,常被用于創(chuàng)建使用基于XML數(shù)據(jù)結(jié)構(gòu)的Web API。
API安全的背景
API安全位于以上三個領(lǐng)域的交叉點:
1.信息安全關(guān)注信息在其完整生命周期內(nèi)從創(chuàng)建到最終銷毀的數(shù)據(jù)保護全過程。
2.?網(wǎng)絡(luò)安全涉及對網(wǎng)絡(luò)上數(shù)據(jù)流的保護以及防止未經(jīng)授權(quán)的網(wǎng)絡(luò)訪問。
3.應(yīng)用安全確保軟件系統(tǒng)設(shè)計和構(gòu)建能夠抵御攻擊和濫用。
API安全風(fēng)險控制
1. 所有權(quán)和管理。每個API應(yīng)該有一個所有者或提供者,他們將通過合適的服務(wù)水平協(xié)議定義和發(fā)布使用條款,以限制API的使用和使用方式,并且可以根據(jù)定義和約定的SLA隨時調(diào)整API的實施。
2.根據(jù)公司政策設(shè)計API。應(yīng)制定明確闡述API的政策,表明API應(yīng)該是技術(shù)中立的,即不依賴于應(yīng)用程序、編程語言和平臺。
3.隱私和安全。API的設(shè)計應(yīng)確保消費者數(shù)據(jù)的隱私,并定期開展審計進行檢查。數(shù)據(jù)應(yīng)實現(xiàn)端到端安全,并且應(yīng)該與網(wǎng)絡(luò)無關(guān),以數(shù)據(jù)為中心。
4.API治理。API應(yīng)根據(jù)制定的數(shù)字戰(zhàn)略開發(fā),并針對以下問題有明確的答案:
o 實現(xiàn)了哪些業(yè)務(wù)成果?
o 目標(biāo)受眾是誰?
o API的愿景是什么,它是否已被社會化?
o 是否建立了API架構(gòu)和組件的重用?
o 是否激活了API安全最佳實踐?
o 是否建立有效的API生命周期管理流程?
o API是否符合當(dāng)前法律法規(guī)?
o 是否定期對API進行漏洞安全評估和滲透測試并及時修復(fù)??
5.審計控制
o 數(shù)據(jù)從源頭到目的地的傳輸是否受到監(jiān)控,如果有故障,是否通知管理員,并記錄在審計報告中?
o 是否禁止匿名API?
o 是否在用于內(nèi)部開發(fā)和培訓(xùn)目的的API上部署了用戶身份和密碼?
o 是否使用API密鑰認(rèn)證來保護應(yīng)用程序的認(rèn)證?
o 是否對所有B2B通信使用數(shù)字證書?
o 是否在內(nèi)部和外部生產(chǎn)API上部署了OAuth2.0協(xié)議和安全令牌?