在沒有用戶的情況下提供應用程式身分識別認證
身為開發人員,當您建置非使用者應用程式時,您沒有可以提示使用者輸入使用者名稱和密碼或多重要素驗證 (MFA) 的使用者。 您必須自行提供應用程式的身分識別。 本文說明為何 Azure 上服務(非使用者應用程式)的最佳 零信任 客戶端認證作法是適用於 Azure 資源的受控識別。
服務帳戶的問題
使用「服務帳戶」(建立用戶帳戶並將其用於服務)不是很好的解決方案。 Microsoft Entra ID 沒有服務帳戶概念。 當系統管理員為服務建立使用者帳戶,然後與開發人員共享密碼時,它不安全。 它不可無密碼或具有 MFA。 您最好的解決方案是使用下列其中一個客戶端認證選項,而不是使用使用者帳戶作為服務帳戶。
用戶端認證選項
有四種類型的客戶端認證可以識別應用程式。
- 祕密金鑰
- [MSSQLSERVER 的通訊協定內容]
- 適用於 Azure 資源的受控識別
- 同盟認證
秘密金鑰或憑證?
當您在企業中有複雜的秘密管理基礎結構(例如 Azure 金鑰保存庫)時,可以接受秘密密鑰。 不過,在IT專業人員產生秘密密鑰的案例中,秘密密鑰會傳送電子郵件給開發人員,而開發人員接著可能會將其儲存在不安全的位置,例如電子錶格,導致秘密密鑰無法正確保護。
憑證型客戶端認證比秘密金鑰更安全。 憑證管理得更好,因為它們不是秘密本身。 秘密不是傳輸的一部分。 當您使用秘密金鑰時,用戶端會將秘密金鑰的實際值傳送至 Microsoft Entra ID。 當您使用憑證時,憑證的私鑰永遠不會離開裝置。 即使有人攔截、譯碼和取消加密傳輸,秘密仍然安全,因為攔截方沒有私鑰。
最佳做法:使用適用於 Azure 資源的受控識別
當您在 Azure 中開發服務(非使用者應用程式)時,適用於 Azure 資源的受控識別會在 Microsoft Entra ID 中提供自動受控識別。 應用程式可以向任何支援 Microsoft Entra 驗證的服務進行驗證,而不需管理認證。 您不需要管理秘密;您不需要解決失去或處理錯誤的可能性。 無法攔截秘密,因為它們不會透過網路移動。 如果您要在 Azure 上建置服務,Azure 資源的 受控識別是最佳做法。
下一步
- 單一和多租使用者應用程式 支援的身分識別和帳戶類型說明如何選擇您的應用程式是否只允許來自 Microsoft Entra 租使用者、任何 Microsoft Entra 租使用者或具有個人 Microsoft 帳戶的使用者。
- 開發應用程式許可權策略 可協助您決定認證管理的應用程式許可權方法。
- 當沒有任何使用者 說明 Azure 資源的受控識別為何是 Azure 上服務(非使用者應用程式)的最佳客戶端認證作法時,請提供應用程式身分識別認證。
- 授權最佳做法 可協助您為應用程式實作最佳的授權、許可權和同意模型。
- 在應用程式開發生命週期中使用 零信任 身分識別和存取管理開發最佳做法,以建立安全的應用程式。
- 使用身分識別 零信任 方法來建置應用程式,提供許可權和存取最佳做法的概觀。