OAuth API密鑰如何降低API安全威脅
API聚合平臺Apigee的首席安全架構師Subra Kumaraswamy與我們討論了API安全的最佳實踐方式。
有了破解版API,我們就有了更多方法來防止API安全漏洞。遺憾的是,通過使用簡單的幾種攻擊方式,黑客們就可以輕松地破壞API。Subra Kumaraswamy是API管理系統的供應商Apigee公司的首席安全架構師,同時也是Cloud Security and Privacy(一篇發自于O'Reilly媒體上的一篇文章)的合作者。他說,為了應對黑客襲擊,開發人員不得不采用多種方法來保證API的安全性。
作為Cloud Security Alliance的創始人之一,Kumaraswamy認為,開發人員必須在API管理平臺中加入一些合適的安全工具,例如速度限制和安全令牌管理。并不是為每一類應用程序定制一種防護方案,Kumaraswamy建議,開發人員使用API網關來進行接下來的工作,同時也可以支持全球政策的實施。
這本次采訪中,Kumaraswamy向我們提供了幾點關于創建API強安全性的幾條建議,其中包括OAuth的使用、提供API密鑰、身份驗證機制、AWS API安全性等等。
在建立API過程中,OAuth框架處于什么狀態?這種方法是否仍可行呢?
Subra Kumaraswamy:在API安全建設的過程中,OAuth [Open Authorization]框架是大家非常熟悉的一種授權框架。在向Web 應用程序、桌面應用程序、移動應用程序和物聯網提供特定授權功能的同時,OAuth2.0也非常重視客戶端開發的簡易性。然而,我們需要注意的是,OAuth是一種委托的授權協議,而不是真正的授權協議。因此,超越OAuth標準的OpenID Connect被列為開發人員可選方案之中。除了想要對應用程序授以訪問受保護的用戶代表資源外,這些開發人員還想要以編程的方式來驗證用戶身份。
在API知道哪類客戶發送請求的情況下,如何選擇并使用最合適的認證方法來登陸本地應用程序?
Kumaraswamy:當本地應用程序中加入終端客戶認證功能后,開發人員應用采用三腳流OAuth2.0。在此模型中,以之前成功的用戶認證為例,本地應用程序的授權服務器上含有一個短期的訪問令牌和長期刷新令牌。訪問令牌向API服務提供受保護資源的訪問權,而使用刷新令牌會更新短期存在的訪問令牌。這種方法可以降低登錄沖突,使用戶與移動應用程序保持連續的互動。如果出現令牌泄露的事情,開發人員可以通過使用安全閥而輕松地撤銷訪問令牌和刷新令牌。
開發人員在提供API密鑰時會犯哪些共同的錯誤?如何避免這些錯誤?
Kumaraswamy:在訪問受保護資源之前,API密鑰需通過API網關的驗證。一類常見的錯誤是,在提供密鑰時,會賦予平臺操作一些應用程序不需要的特權,而這種特權與API產生沖突。例如,如果你向軟件開發人員暴露了API支付驗證,那么API密鑰應僅限于支付驗證時使用,而不應該被賦予修改支付明細的特權。
另外一類常見錯誤是,在密鑰沒有配額的情況下就可以無限訪問API。這會引起拒絕服務攻擊,同時通過自動化機器人可以收集到重要數據。使用散列法和隨機因子來保護API密鑰證書是一個標準慣例,例如SHA-256或者其他更高的版本。
當創建API安全時,開發人員還應注意哪些問題?
Kumaraswamy:開發人員應該以一種API威脅模型開始,在應用模型的基礎上試圖理解威脅的運作原理,例如內部API和外部API。他們必須知道有些因素會對API用戶構成威脅,例如可信的開發人員、自行注冊的開發人員以及其合作者。掌握這些信息后,API設計者和開發人員必須建立一些合適的安全措施以應對各種威脅。
例如,我們可以看到,API威脅模型中,不可信的開發人員通過網絡能夠看到一些敏感的數據。在此,無論運輸層安全性中的敏感數據處于運輸狀態還是靜止狀態,開發人員都要使用加密技術對實施保護。
開發人員應該使標準應用程序安全性達到最佳狀態,例如,通過使用動態和靜態的編碼分析工具來測試API中是否存在標準 OWASP Top 10缺陷。最后,開發人員應該在安全的位置記錄API活動,對任何非正常行為進行定期審核,例如API暴利破解攻擊。
使用AWS API后,安全方面的優點和缺點分別有哪些?
Kumaraswamy: AWS API和認證機制是亞馬遜所獨有的,對管理AWS基礎設施即服務資源起到一定的限制作用。使用署名的請求模型(一種基于署名的認證模型HMAC即基于哈希的消息驗證代碼)對AWS(具象狀態傳輸)API也可以起到保護。HMAC將哈希功能與共享在客戶與AWS之間的對稱密鑰結合在一起使用。AWS客戶要在請求信息(例如AWS服務、范圍、活動和時間標記)以及共享于開發人員之間的AWS私有密鑰基礎上簽署每一份API請求。AWS API安全機制對用戶身份進行核查、對REST調用具有完整的保護性,同時免于再次遭受攻擊。從某種方式來說,AWS認證機制與雙腳OAuth(客戶認證授權)有異曲同工之處。