應用程式可以使用 Azure Identity 函式庫來驗證 Microsoft Entra ID,讓應用程式能存取 Azure 服務與資源。 無論應用程式部署於 Azure、本地託管,或是在開發者工作站本地運行,這項認證要求都適用。 接下來的章節將說明在使用 Azure SDK 用戶端函式庫時,跨不同環境驗證應用程式至 Microsoft Entra ID 的建議方法。
應用程式驗證的建議方法
基於令牌的驗證是通過 Microsoft Entra ID 進行的,這是驗證應用程式至 Azure 的推薦方法,而不是使用連接字串或基於金鑰的選項。 Azure 身份函式庫提供支援憑證驗證的類別,讓應用程式能對Azure資源進行認證,無論該應用程式是在本地執行、Azure上,還是在本地伺服器上運行。
令牌型驗證的優點
權杖型驗證相較於連線字串具有下列優點:
- 基於憑證的認證確保只有特定用於存取 Azure 資源的應用程式能夠存取,而任何擁有 連接字串 的人或應用程式都能連接到 Azure 資源。
- 基於憑證的認證讓你能進一步限制 Azure 資源存取權限,僅限於應用程式所需的特定權限。 這符合 的最低許可權原則。 相較之下,連接字串 則賦予 Azure 資源的完整權限。
- 當使用 managed identity 進行基於憑證的驗證時,Azure 幫你處理管理功能,因此你不必擔心像是保護或輪換秘密等任務。 這讓應用程式更安全,因為沒有 "連接字串" 或應用程式密鑰可能會被洩露。
- Azure 身份函式庫會幫你取得並管理 Microsoft Entra 令牌。
使用連接字串應僅限於令牌型驗證不可用的情況、概念驗證初始應用程式,或不涉及存取生產環境或敏感數據的開發原型。 如果可能,請使用 Azure Identity 函式庫中可用的憑證驗證類別來驗證 Azure 資源。
跨不同環境進行驗證
應用程式應該使用哪種基於憑證的認證方式來驗證 Azure 資源,取決於該應用程式執行的地點。 下圖提供不同案例和環境的指引:
顯示應用程式的建議令牌型驗證策略的圖表,視應用程式執行位置而定。
當應用程式為:
- 託管於 Azure:應用程式應使用管理身份驗證Azure資源。 更詳細地討論此選項,請參見伺服器環境中的 驗證。
- 開發期間本地執行:應用程式可使用 developer account、broker 或 service principal 來驗證 Azure。 在本機開發過程中的 驗證階段,將更詳細地討論每個選項。
- 內部部署:應用程式應透過應用程式服務主體進行 Azure 資源驗證,或者在 Azure Arc 的情況下使用受管理的身分。內部部署的工作流程有更詳細的討論,請參考 內部部署應用程式的驗證。
Azure 托管應用程式的驗證
當你的應用程式託管在 Azure 上時,它可以使用受管理身份驗證 Azure 資源,無需管理任何憑證。 受控識別有兩種類型:使用者指派和系統指派。
使用使用者指派的受控識別
使用者指派的管理身份會被建立為獨立的 Azure 資源。 它可以指派給一個或多個 Azure 資源,讓這些資源共享相同的身份與權限。 若要使用使用者指派的管理身份來認證,請建立該身份,指派到你的 Azure 資源,然後透過指定客戶端 ID、資源 ID 或物件 ID 來設定應用程式使用此身份進行認證。
使用使用者指派的受控識別進行驗證
使用系統指派的受控識別
系統指派的管理身份是直接在 Azure 資源上啟用的。 身分識別會系結至該資源的生命週期,並在刪除資源時自動刪除。 若要使用系統指派的管理身份進行驗證,請在 Azure 資源啟用該身份,然後設定應用程式使用此身份進行認證。
使用系統指派的受控識別進行驗證
本機開發期間的驗證
在本地開發時,你可以用開發者憑證或服務主體認證 Azure 資源。 這讓你能測試應用程式的認證邏輯,而不必部署到 Azure。
使用開發人員認證
你可以用自己的 Azure 憑證在本地開發時驗證 Azure 資源。 這通常透過開發工具完成,如 Azure CLI 或 Visual Studio Code,這些工具能為你的應用程式提供存取 Azure 服務所需的憑證。 這個方法很方便,但只應用於開發目的。
使用開發人員認證在本機進行驗證
使用經紀人
代理驗證會使用系統驗證代理程式來收集使用者認證,以驗證應用程式。 系統驗證代理程式會在使用者的電腦上執行,並管理所有連線帳戶的驗證交握和權杖維護。
使用代理程式在本機進行驗證
使用服務主體
服務主體是在 Microsoft Entra 租戶中建立,用來代表應用程式並用來驗證 Azure 資源。 您可以將應用程式設定為在本機開發期間使用服務主體(Service Principal)認證。 這個方法比使用開發人員認證更安全,而且更接近您的應用程式在生產環境中驗證的方式。 不過,由於需要秘密,所以使用受控識別仍然不太理想。
使用服務主體在本機進行驗證
內部部署應用程式的驗證
對於本地託管的應用程式,你可以使用服務主體來驗證 Azure 資源。 這包括在 Microsoft Entra ID 中建立服務主體,指派必要的權限,並設定您的應用程式以使用其憑證。 此方法允許您的本地應用程式安全存取 Azure 服務。
使用服務主體帳戶驗證內部部署應用程式