作者:Andrew Stiefel,NGINX 產(chǎn)品營銷經(jīng)理
據(jù)行業(yè)分析機(jī)構(gòu)451 Group指出,目前企業(yè)擁有的 API 的平均數(shù)量超過15,000個。顯然,這一數(shù)字遠(yuǎn)高于平臺運(yùn)營團(tuán)隊可以用電子表格跟蹤的API 的平均數(shù)量。即使將API跟蹤的責(zé)任分配給各個業(yè)務(wù)部門,考慮到API數(shù)量的驚人的增長速度,這仍然是一項艱巨的任務(wù)。
2021年,F(xiàn)5工程師和技術(shù)專家Rajesh Narayanan為這個問題創(chuàng)造了一個新詞:API蔓延(API sprawl)。“API蔓延”一詞的含義正如其名——即世界各地的企業(yè)中的API數(shù)量的加速增長,而這也給API的管理和防護(hù)帶來了巨大挑戰(zhàn)。這一問題有多嚴(yán)重?據(jù)Narayan估計,到2030年,全球部署和運(yùn)行的API將超過10億個。
現(xiàn)代應(yīng)用在開發(fā)方式方面的變化加速了API的蔓延。微服務(wù)的興起、用于系統(tǒng)內(nèi)部通信的API的不斷增加,以及多云和混合云架構(gòu)的快速增加,都使得我們需要更多地使用API在應(yīng)用之間進(jìn)行通信。例如,作為容器編排的事實標(biāo)準(zhǔn)的Kubernetes就是使用API來實現(xiàn)所有的內(nèi)部通信的。新的基礎(chǔ)架構(gòu)類型(如serverless架構(gòu))也意味著API可以在幾乎所有環(huán)境中運(yùn)行。同時還有更多種類的API技術(shù)需要管理——REST、GraphQL和gRPC都已被廣泛使用,而更多的API查詢協(xié)議也將很快出現(xiàn)。
更糟糕的是,網(wǎng)絡(luò)罪犯絕對會樂于見到API蔓延。他們越來越多地將API作為他們精確攻擊的目標(biāo),原因是API通常沒有得到仔細(xì)的管理,而且默認(rèn)配置的訪問權(quán)限相對開放。
為了消除這種問題,必須以程序化、規(guī)?;慕鉀Q方案來應(yīng)對API管理、發(fā)現(xiàn)和防護(hù)方面的挑戰(zhàn)。不過在您能夠有效應(yīng)對API蔓延之前,您需要先了解該問題在您的組織機(jī)構(gòu)中的嚴(yán)重程度。以下六個明顯跡象表明您遇到了API蔓延問題。
1. 沒有最近更新的API清單
API蔓延的典型癥狀是不知道在所有環(huán)境中都運(yùn)行著哪些API,這通常是由于松散的API管理策略導(dǎo)致的——在這種策略下,團(tuán)隊無需注冊僅在內(nèi)部使用的API(即所謂的“影子API”)。
您的首要任務(wù)是準(zhǔn)確盤點現(xiàn)有的API。但由于API的添加和棄用通常極為頻繁,想要“準(zhǔn)確盤點”就需要不斷地進(jìn)行統(tǒng)計。合理的解決方案是通過編程式的方式進(jìn)行盤點并持續(xù)進(jìn)行API發(fā)現(xiàn),類似于網(wǎng)絡(luò)掃描和資產(chǎn)發(fā)現(xiàn)。
從理論上講,結(jié)構(gòu)化的API審批流程也有所助益。但在現(xiàn)實中,對于API創(chuàng)建和版本管理等任務(wù),不斷“左移”的企業(yè)會想要縮減繁重的審批流程。對于這些企業(yè)來說,將API清單盤點作為CI/CD的一部分來構(gòu)建流程通常是一種很好的方法,尤其是當(dāng)API用于微服務(wù)和其他更現(xiàn)代的應(yīng)用架構(gòu)時。
2. 不知道每個API分別在何處運(yùn)行
在現(xiàn)代基礎(chǔ)架構(gòu)環(huán)境中,僅僅知道API的存在還遠(yuǎn)遠(yuǎn)不夠——還需要知道每個API的位置。端點可能會在不同基礎(chǔ)架構(gòu)形式的容器間互為鏡像——橫跨多個云平臺、在混合云中,或者在像是 serverless 這樣的多種服務(wù)中。
安全團(tuán)隊需要掌握API的位置信息,從而正確配置策略和防護(hù)措施并運(yùn)行API安全測試。如果您需要在多個環(huán)境中運(yùn)行API,這也會影響您對于API網(wǎng)關(guān)和其他API流量管理方式的選擇。理想情況下,您會希望有一個適用全局的API網(wǎng)關(guān)解決方案,以便能夠在不同環(huán)境中實現(xiàn)具有一致性的API流量管理和防護(hù)。
3. 無法輕松地識別API的所有者或負(fù)責(zé)人
如果您不知道API由誰負(fù)責(zé),當(dāng)API出現(xiàn)問題時,就不知道該找誰處理。通常情況下,當(dāng)構(gòu)建API的人或團(tuán)隊調(diào)崗或者離職時,那些對于平穩(wěn)運(yùn)營來說不可或缺的API就會成為“孤兒”。有時,API所有權(quán)的轉(zhuǎn)移非常明確——但更常見的情況是,這個過程會被跳過或通過非正式手續(xù)完成。
為每個API分配所有權(quán)是清單盤點過程的一部分,它至關(guān)重要,因為這樣可以確立問責(zé)制,幫助責(zé)任人合理地管理和防護(hù)他們負(fù)責(zé)的API。
4. 多個API在執(zhí)行著類似或重復(fù)任務(wù)
當(dāng)多個團(tuán)隊有相似但不完全相同的需求,通常會發(fā)生任務(wù)重合的情況,而且有人會說:“我們會通過構(gòu)建自己的API來滿足我們的需求,這樣,我們就可以掌控自己的命運(yùn)!”但是,擁有多個類似API會增加不必要的技術(shù)債務(wù)。因此,衡量有多少應(yīng)用或服務(wù)需要使用API,并將其作為關(guān)鍵性能指標(biāo) (KPI) 之一非常重要。跟蹤這些指標(biāo)有助于最大程度地提高每個API的可重用性。整合API的另一種方法是轉(zhuǎn)換到像是GraphQL一類的更靈活的形式。
5. 文檔滯后超過2個版本
文檔對于經(jīng)驗傳遞、新員工入職培訓(xùn)和組織彈性至關(guān)重要??上У氖?,編寫和維護(hù)文檔通常是工程師最痛恨的事情。過時的API文檔通常表明API正在蔓延——因為這說明團(tuán)隊創(chuàng)建和更新API的速度太快,所以沒時間更新文檔——或者他們可以看似合理地這么解釋他們不更新文檔的行為。在最壞的情況下,過時的文檔標(biāo)示著其中提到的API是無人維護(hù)的孤兒。
慶幸的是,API往往有清晰定義的結(jié)構(gòu),使其易于理解。良好的API管理解決方案通常包含一個工具,用于幫助開發(fā)人員根據(jù)API規(guī)范自動生成文檔。最常見的例子之一是OpenAPI規(guī)范。它使用標(biāo)準(zhǔn)格式來描述API,這樣,人類和計算機(jī)就可以在無需訪問源代碼或其他文檔的前提下發(fā)現(xiàn)和理解API的功能。
6. 項目由于API安全防護(hù)而延誤
有好消息?安全團(tuán)隊會在發(fā)布前檢查所有API。壞消息呢?由于API負(fù)責(zé)人在開發(fā)過程中沒有遵循API安全最佳實踐,或者沒有進(jìn)行充分的測試,因此未通過檢查,代碼被送回返工。還有更好的消息?制定一套一致的通用規(guī)則和最佳實踐來幫助開發(fā)人員實現(xiàn)絕大部分的要求,并不是那么難的事情——基本方法包括了實施速率限制、加密外部流量,以及要求對密鑰再生進(jìn)行重新授權(quán)等。大多數(shù)企業(yè)還可以使用高級Web應(yīng)用防火墻 (WAF) 或其他工具對API網(wǎng)關(guān)實施額外的保護(hù),以抵御OWASP 列出的10種最常見API攻擊。
更先進(jìn)的組織機(jī)構(gòu)擁有成熟的SecDevOps能力,可以為每個API進(jìn)行威脅建模,而且還可能能夠根據(jù)可以訪問的數(shù)據(jù)或服務(wù)類型為不同的API指定不同的安全等級。
結(jié)論:避免蔓延是一場永無止境的斗爭
以上六個跡象只是API蔓延現(xiàn)象的一部分預(yù)警。我們要明確一點——API蔓延是開發(fā)人員自主性和微服務(wù)DIY思維的自然產(chǎn)物。借助現(xiàn)代開發(fā)工具和像GitHub Copilot這樣的代碼自動化能力,構(gòu)建新的API正變得越來越輕松可行。
應(yīng)對API蔓延的工作沒有止境。部署API管理解決方案和API網(wǎng)關(guān)可以發(fā)揮強(qiáng)大的助推作用——如果開發(fā)人員不針對API使用APIM(API Management,即API管理)解決方案,網(wǎng)關(guān)可能會關(guān)閉他們的API——這一要求很苛刻,但對安全防護(hù)來說很必要。
幸運(yùn)的是,應(yīng)對蔓延所采取的措施大多與常見的API管理方法一致。隨著時間的推移,這些措施可以消除技術(shù)債務(wù),并避免在開發(fā)過程后期或發(fā)布后通過補(bǔ)充的安全措施修復(fù)API,最終讓開發(fā)速度得到提高。
如果說API是企業(yè)的生命線,則API蔓延是對企業(yè)健康狀況的最大威脅之一。謹(jǐn)慎且主動的API蔓延控制措施會帶來巨大的回報,并且最終會提高開發(fā)人員的滿意程度。
免責(zé)聲明:市場有風(fēng)險,選擇需謹(jǐn)慎!此文僅供參考,不作買賣依據(jù)。
關(guān)鍵詞: