化圓為方:如何將公開API設為私有
AWS
![化圓為方:如何將公開API設為私有](https://kingcloud.tech/wp-content/uploads/2024/03/1711606346-APIsecurity.webp)
API已成為系統和企業之間實現無縫數據交換和功能的重要組成部分。事實上,API每年增長三倍。公開API本質上是設計成開放和可發現的。根據定義,這也意味著API暴露在網路攻擊之下。這就是為什麼API已成為頭號攻擊向量的原因。
API成為頂級攻擊向量是可以理解的。我們所有其他的商業應用程式都隱藏在私有網路後面——通常是MPLS(AWS Direct Connect、Azure ExpressRoute等)、VPN或零信任網路存取(ZTNA)。但API暴露在公共互聯網上。
第二天的API安全解決方案和雪花
這種網路暴露是為什麼會有如此多”第二天”的API安全解決方案 – WAF、API安全平台、IDS等。這些解決方案能夠很好地阻擋已知的威脅,但每天仍然有成功的API攻擊發生。為什麼會這樣?
每個API都是獨一無二的,並且快速演進——商業邏輯、驗證、授權和配置不斷變更。API就像雪花一樣獨特。結果是,許多API攻擊實際上是零日攻擊——利用最近和獨特的特定API變更的新型攻擊。
一場艱難的賽跑
網路暴露和雪花特性是為什麼API相關漏洞每天都在增加的原因。
“雪花”問題意味著許多攻擊對第二天的解決方案來說是未知的 – 它們攻擊以前不存在的漏洞。因此,在新型攻擊之後,我們就得爭分奪秒地修補漏洞。我們在與誰賽跑?互聯網上的每個攻擊者。API是公開的——暴露在網路中——不像我們其他的商業應用程式,它們隱藏在MPLS、VPN或零信任解決方案後面。與互聯網上的攻擊者賽跑是艱難的,如果輸了,可能會導致服務中斷、數據外洩或客戶受損。
為什麼不避免這場賽跑?
那為什麼不將API私有化,不將它們暴露在互聯網上,將它們放在MPLS、VPN或ZTNA後面,就像我們對其他商業應用程式所做的那樣呢?API客戶端太分散和動態,沒有好的方法來管理跨所有那些API客戶端的代理或專用電路。那些解決方案並非為API而設計的——就像將方形的木樁塞進圓形的洞裡一樣。
零信任API網路需要為API而建
為了讓我們的API像其他商業應用程式一樣私有化,我們首先必須滿足業務需求。API提供者需要實現所需的業務速度和敏捷性。在技術層面,我們需要一種為API客戶端的分佈式特性而設計的安全網路解決方案,並假設總會存在雪花般的漏洞。
讓我們看看一個為這些業務、技術和運營需求量身定制的開源零信任API解決方案:
![](https://kingcloud.tech/wp-content/uploads/2024/03/1711606748-Screenshot-2024-02-14-at-7.27.32 AM.png)
對於上圖通常有三種反應:
好的,告訴我它是如何運作的。請參閱下文。
看起來很複雜。不,完全是軟體,幾分鐘內就可以啟動並集中管理。
似乎是專有解決方案,供用戶訪問其應用程式。是的!它使用類似於用戶到應用程式零信任世界的原理,但是用於保護API。
零信任API網路是如何運作的
![](https://kingcloud.tech/wp-content/uploads/2024/03/1711606795-Screenshot-2024-02-14-at-7.31.54 AM.png)
以下是零信任API網路的四大支柱:
- 消除公共訪問。您的API客戶端將使用私有IP或域名來訪問您的API。如果您公司名稱是Acme,那麼您的客戶端現在可能會使用api7.acme.unreachable(您可以任意設定域名)。想像一下攻擊者試圖探查*.acme.unreachable以尋找雪花漏洞。這是不可能的,因為它不是公共域名——您的API伺服器已無法訪問。
- 身份、驗證、授權、雙向TLS。授權的API客戶端需要從互聯網訪問您的API。您的零信任API覆蓋網路只能通過X.509憑證加密驗證的身份從互聯網訪問,並通過mTLS連接進行持續驗證和最小特權訪問授權。您將策略執行點(PEP)從DMZ移至API客戶端。您的API客戶端會在現有代碼中添加幾行零信任網路代碼來啟用此模型。此代碼取代了VPN、MPLS等(也有非代碼選項)。例如,您的某些API客戶端可能使用Resty,一個流行的Golang REST客戶端開源庫。他們現有的Resty代碼會添加幾行零信任API網路代碼:
- 僅出站。您已消除入站訪問。您的伺服器將改為向零信任API覆蓋網路開啟已識別、驗證和授權的socket(您將關閉所有入站端口,僅開啟到特定覆蓋網路路由器IP或您的x.acme.unreachable域名的出站端口)。
- 管理。如果沒有簡單的管理,API網路安全就沒有太大價值。零信任API覆蓋雲端純軟體和雲原生。您可以在任何地方,在幾分鐘內啟動私有API雲端,無需部署硬體。如果API客戶端被入侵,一次點擊或自動操作就可以移除其訪問權限。每個客戶端/API的網路使用情況都顯示在您的Web控制台或管理儀表板上。
上述內容基於開源OpenZiti零信任網路平台,但任何零信任API平台都應該提供類似的功能。具體來說,它應該實現:
- 速度。保護API但不會拖慢業務或增加運營複雜性,這不是大多數組織想要的折衷。安全與速度並重才是目標。
- 最小化威脅面。關閉您API伺服器前面的所有入站端口。使用私有、無法訪問的地址或域名,最小化攻擊面並停止與基於網路的攻擊者競爭。
- 可擴展性。純軟體、雲原生架構。最好是基於開源。
- 卓越的運營。集中可見性、控制、策略和身份。豐富的遙測數據。性能優化的覆蓋網路。
- 零信任安全。基於身份的網路、持續驗證、強大的授權、雙向TLS(mTLS)、加密傳輸、微分段。
- 靈活性。API客戶端只需添加幾行代碼即可獲得零信任API網路。其他API客戶端可以使用特定於API的代理或DNS來訪問覆蓋網路(如果需要的話),而您的API伺服器/網關仍然是私有的。
- 恢復。假設發生入侵。實施微分段,防止數據外洩,並提供簡單的控制來立即移除威脅。
零信任API網路
雖然API將永遠是雪花般獨特的存在,但它們不再需要成為我們唯一暴露在網路中的商業應用程式。通過最小化攻擊面,而不影響業務速度和API客戶端體驗,我們終於可以減輕API安全的最大風險。這也簡化了我們第二天的API安全解決方案,這些解決方案在API查詢進入我們的DMZ後進行檢查。