如何使用api 部署API安全,你準備好了嗎?

2021-10-12 09:26:50 字數 2683 閱讀 3556

現代系統依賴於通過各種網路公開的api(應用程式介面)的複雜系統。很多企業借助api來傳輸資料和連線服務,提供便利。但同時,近年來一些嚴重的資料洩露都源於api遭到攻擊和破環,導致敏感的資訊被不法分子利用。

那什麼是api安全,它如何融入到整體的安全計畫?

所有應用程式都使用api(比如,對核心的呼叫、軟體開發工具包、密碼庫和soap協議)。如今,**商提到的「 api安全」是指這些api的子集 —— 通過網路公開的那些api。

就本質而言,這些網路公開的api使資訊能夠自由傳遞以及在軟體元件之間進行互動。攻擊者有機會可以通過公共網路、雲和專用網路的暴露端點來破壞系統的元件。一些知名公司(包括usps、t-mobile和salesforce等)的重大違規事件是源於暴露或使用不安全的api端點。那麼問題來了,要如何了解軟體安全計畫是否滿足企業所需的安全控制的要求,以確保使用和建立的api是安全的?首先,你需要定義什麼是「api安全」。

究竟什麼是「api 安全」?

api安全是對企業建立和使用的(暴露在網路中)api的保護。當然,這意味著需要使用與api緊密相關的通用安全控制:速率限制以及使用者、服務和請求的身份驗證和授權。這還意味著了解資料**,以及在檢視組成的系統時,在設計或檢視討論時準確地尋找到上下文的位置。對於軟體安全領頭企業來說,這意味著應用程式安全計畫可以在適當的時間捕獲活動並將其應用於暴露或使用api的軟體。強大的api安全性不只是購買一些新工具,還源於一種安全文化,它涉及整個軟體安全計畫中的活動。

解決api安全難題

諸如微服務架構等的流行軟體開發趨勢已將與軟體安全計畫(ssi)相關的軟體單元從「應用程式」(或整體式)擴充套件至api的許多子元件。這些子元件具有自己的生命週期和合同,並必須遵守安全控制措施。軟體安全企業可以從以下方面提公升安全性:

設計api

api是被用在前端客戶端(胖客戶端或瀏覽器)和後端系統之間,以及後端元件之間。進一步考慮,單個api端點可能最終會同時處理前端和後端請求。當各個api端點暴露於各種已知和未知的呼叫方(閘道器或負載平衡器的上游消耗、組成或包裝)時,很難確定單個api端點必須執行哪些安全控制。應用程式安全主管可以做出的乙個決定是,推動使用api,以明確記錄提供商和使用者應承擔的安全責任。

架構師還面臨識別api跨領域問題的麻煩。安全領導者應該注意一些安全活動,例如統一訪問控制,以及那些與業務邏輯接近的活動,例如統一客戶身份認證。

安全控制

關於安全控制,api安全中有多個抽象級別:業務邏輯中的控制(防止濫用);保護業務邏輯的控制(身份驗證和授權);以及最終由架構啟用或定義的架構安全控制(api閘道器和微細分)。

由架構決策支援的安全控制,對於在api安全的環境中的應用程式開發而言相對較新。除了應用於業務邏輯的安全控制之外,還擴充套件到諸如速度檢查、身份驗證和授權決策等。我們需要知道如何最好地隔離一組api,並在那裡通過閘道器啟用重要的安全控制。例如,微分段是否能達到要求?服務網格提供的安全控制效果如何?

一些架構決策試圖提供阻塞點,以便安全架構師更深入地了解這些分布式系統。雖然某些架構決策需要集中管理的方法,但有的則啟用端點強制的方法。

當然,我們建議進行威脅建模。應用安全企業必須開始識別各種型別的api(第一方、第三方、客戶或使用者)的風險、每個api端點的關鍵控制、針對採用很多api的架構(如微服務)造成的問題提供可接受的解決方案,以及是否將賣方索賠作為風險管理計畫的一部分。

物料清單

應用安全企業需要了解他們的api足跡;衡量使用流程和工具來覆蓋該足跡的工作;跟蹤、記錄正在進行的安全活動並確定優先順序;並為各種型別的安全分析提供了豐富的上下文。當與程式所有者討論api安全時,我們經常會發現現有的清單解決方案無法提供這些內容。安全計畫負責人應該仔細研究是否可以採用現有的物料清單解決方案,或者是否必須採用新的解決方案。

安全測試

如今的安全測試與以往一樣,對於深入了解上游軟體安全實踐的有效性都很重要。api安全測試對手動、自動或者混合測試都提出了新挑戰。其中上下文關聯是一種。如果測試人員沒有輸入或感知威脅模型的能力,則無法找到對ssi不利的高風險問題,得不到及時修復。

靜態分析工具可以有效地識別特定於語言的軟體安全問題,或可以很好理解的注入攻擊,對於那些使用大量api的**庫仍然有效,但是前提是這些工具必須對用於公開這些api路由的庫和平台進行建模。有的企業已經採用靜態分析推動安全控制(例如,使用身份驗證和授權庫),並可用於api安全。

動態分析可以生成api覆蓋範圍,其典型方法包括對客戶端(或工具)、行為以及使用規範進行測試。該解決方案不是構建乙個工具,並強迫開發團隊使用一種測試工具,而是去支援各種可能的測試。

現代應用程式和系統依賴於通過各種公共和專用網路公開的api的複雜系統。我們可以採取一些步驟來了解這些更改如何影響我們的軟體安全計畫的各個要素,並確保在正確的時間和地方,將安全性內建到暴露在或使用api的軟體中。

如何保護你的API

rest api架構越來越多的被使用。當你設計了乙個post方法的api時,該api暴露出來後可能被人找到,並進行惡意資料的提交。怎麼解決這個被惡意提交的問題呢?首先想到的是可以要求客戶在提交引數時,將驗證資訊加上如 使用者名稱 密碼。就像下面的資料結構一樣使用者每次提交資料都加上kid 相當於使用...

Android如何使用API

本文針對android 開發如何使用 api文件進行一些經驗分享。1 為什麼需要掌握api 的使用。也許你需要完成乙個功能時很多時候你在網上google 一番,因為很可能找到有用的 片段,甚至不用關心具體實現的原理就可以直接拿來用。你可能遇到過搜出來的結果不太令人滿意,尤其是你需要完成的功能比較新穎...

Android如何使用API

本文針對android開發如何使用api文件進行一些經驗分享。1 為什麼需要掌握api的使用。也許你需要完成乙個功能時很多時候你在網上google一番,因為很可能找到有用的 片段,甚至不用關心具體實現的原理就可以直接拿來用。你可能遇到過搜出來的結果不太令人滿意,尤其是你需要完成的功能比較新穎,dem...