使用零信任原則提高應用程式安全性
無法推斷所開發應用程式的安全網路周邊。 幾乎每個開發的應用程式都設計成從網路周邊外部存取。 應用程式在開發時無法保證安全,或在部署應用程式之後仍會保持安全。 應用程式開發人員的責任不僅可將應用程式的安全性最大化,也會將應用程式遭到入侵時可能造成的損害降到最低。
此外,責任包含支援客戶和使用者不斷變化的需求,而這些人員預期應用程式能滿足零信任安全性需求。 了解零信任模型的原則,並採用做法。 藉由了解並採用原則,您可以開發更安全的應用程式,並將安全性中斷所造成的損害降到最低。
零信任模型明訂一套明確驗證的慣例,而不是隱含信任。 此模型奠基於三個主要指導原則:
- 明確驗證
- 使用最低權限存取
- 假設缺口
零信任最佳做法
遵循這些最佳做法,利用 Microsoft 身分識別平台及其工具來建立零信任就緒應用程式。
明確驗證
Microsoft 身分識別平台提供驗證機制,對存取資源的人員或服務驗證身分識別。 套用如下所述的最佳做法,以明確驗證任何必須存取資料或資源的實體。
最佳做法 | 應用程式安全性的優點 |
---|---|
使用 Microsoft 驗證程式庫 (MSAL)。 | MSAL 是供開發人員使用的一套 Microsoft Authentication 程式庫。 藉由 MSAL,即可驗證使用者和應用程式,而使用幾行程式碼就可以取得權杖來存取公司資源。 MSAL 使用新式通訊協定 (OpenID Connect 和 OAuth 2.0),讓應用程式無須直接處理使用者的認證。 此認證的處理方式大幅改善使用者和應用程式的安全性,因為識別提供者變成安全界限。 此外,這些通訊協定持續演進,以因應身分識別安全性的新規範、商機和挑戰。 |
視情況採用增強式安全性延伸模組,例如持續性存取評估 (CAE) 和條件式存取驗證內容。 | 在 Microsoft Entra ID 中,最常用的延伸模組包括條件式存取、條件式存取驗證內容和 CAE。 如果應用程式使用增強式安全性功能,例如 CAE 和條件式存取驗證內容,則必須撰寫成處理宣告挑戰。 開放式通訊協定可啟用宣告挑戰和宣告要求,以用於叫用額外的用戶端功能。 這些功能可在發生異常或使用者驗證條件變更等時刻,繼續與 Microsoft Entra ID 互動。 這些擴充功能可以在應用程式中進行編碼,而不會干擾驗證的主要程式碼流程。 |
依應用程式類型使用正確的驗證流程。 針對 Web 應用程式,請一律使用機密用戶端流程。 針對行動應用程式,請嘗試使用訊息代理程式或系統瀏覽器進行驗證。 | 針對持有秘密的 Web 應用程式 (機密用戶端),流程的安全性高於公開用戶端 (例如:桌面和主控台應用程式)。 使用系統網頁瀏覽器來驗證行動應用程式時,可透過安全的單一登入 (SSO) 體驗使用應用程式保護原則。 |
使用最低權限存取
開發人員使用 Microsoft 身分識別平台,以授與權限 (範圍) 並確認呼叫端已授與適當的權限,然後才允許存取。 在應用程式中啟用微調權限,允許授與最少量的必要存取權,以強制執行最低權限存取。 請考慮下列做法,以確保遵守最低權限的原則:
- 評估要求的權限,以確定已將絕對最低權限設定為完成作業。 請勿建立能夠存取整個 API 介面的「概括」權限。
- 設計 API 時,請提供細微權限以允許最低權限存取。 首先透過使用範圍和應用程式角色,將功能和資料存取分割成可控制的區段。 請勿將 API 新增至現有的權限以設法變更權限的語意。
- 提供唯讀權限。
Write
存取,包含建立、更新、刪除作業的權限。 用戶端絕不應該只為了讀取資料而要求寫入權限。 - 提供委派和應用程式權限。 跳過應用程式權限可能使得用戶端難以達成常見的案例,例如自動化、微服務等。
- 如果處理敏感性資料,請考慮使用「標準」和「完整」存取權限。 限制敏感性屬性,以防止使用「標準」存取權限 (例如
Resource.Read
) 來存取。 然後,實作「完整」存取權限 (例如Resource.ReadFull
),這會傳回所有可用的屬性,包括敏感性資訊。
假設缺口
針對想要使用平台來滿足驗證和相關需求的應用程式,Microsoft 身分識別平台應用程式註冊入口網站是主要進入點。 註冊並設定應用程式時,請遵循如下所述的作法,將應用程式發生安全性缺口時可能造成的損害降到最低。 如需詳細資訊,請參閱 Microsoft Entra 應用程式註冊安全性最佳做法。
請考慮下列動作以防止安全性缺口:
- 正確定義應用程式的重新導向 URI。 請勿對多個應用程式使用相同的應用程式註冊。
- 確認應用程式註冊中使用的重新導向 URI,以查明擁有權並避免網域接管。 除非其為應用程式的目標用途,否則請勿將應用程式建立為多租用戶。 |
- 針對在租用戶中註冊的應用程式,請確定應用程式和服務主體擁有者會一律予以定義和維護。