應用程式可以使用 Azure 身分識別資料庫驗證至 Microsoft Entra ID,讓應用程式能夠存取 Azure 服務和資源。 此驗證需求適用於應用程式部署至 Azure、裝載於內部部署,或是在開發人員工作站本機執行。 接下來的各節將說明在使用 Azure SDK 用戶端程式庫時,如何在不同的環境中使用 Microsoft Entra ID 對應用程式的身份進行驗證的建議方法。
應用程式驗證的建議方法
透過 Microsoft Entra ID 進行令牌式驗證是向 Azure 驗證應用程式的建議方法,而不是使用連接字串或金鑰型選項。 Azure 身分識別連結庫提供支援令牌型驗證的類別,並允許應用程式在本機、Azure 或內部部署伺服器上執行,向 Azure 資源進行驗證。
令牌型驗證的優點
權杖型驗證相較於連線字串具有下列優點:
- 令牌型驗證可確保只有想要存取 Azure 資源的特定應用程式能夠執行此動作,而具有連接字串的任何人或任何應用程式都可以連線到 Azure 資源。
- 令牌型驗證可讓您進一步將 Azure 資源存取限制為僅應用程式所需的特定許可權。 這符合 的最低許可權原則。 相反地,連接字串會授與 Azure 資源的完整許可權。
- 使用 受控識別 進行令牌型驗證時,Azure 會為您處理系統管理功能,因此您不需要擔心保護或輪替秘密等工作。 這可讓應用程式更安全,因為沒有可能遭到入侵的連接字串或應用程式秘密。
- Azure 身分識別連結庫會為您取得和管理Microsoft Entra 令牌。
使用連接字串應僅限於令牌型驗證不可用的情況、概念驗證初始應用程式,或不涉及存取生產環境或敏感數據的開發原型。 可能的話,請使用 Azure 身分識別連結庫中可用的令牌型驗證類別,向 Azure 資源進行驗證。
跨不同環境進行驗證
應用程式應該用來向 Azure 資源驗證的特定令牌型驗證類型取決於應用程式執行的位置。 下圖提供不同案例和環境的指引:
當應用程式為:
- 裝載在 Azure 上:應用程式應該使用受控識別向 Azure 資源進行驗證。 更詳細地討論此選項,請參見伺服器環境中的 驗證。
- 在開發期間在本機執行:應用程式可以使用應用程式服務主體進行本機開發,或使用開發人員的 Azure 認證向 Azure 進行驗證。 在本機開發過程中的 驗證階段,將更詳細地討論每個選項。
- 裝載於內部部署:應用程式應該使用應用程式服務主體或 Azure Arc 的受控識別向 Azure 資源進行驗證。在 伺服器環境中的驗證中,會更詳細地討論內部部署工作流程。
Azure 裝載應用程式的驗證
當您的應用程式裝載在 Azure 上時,它可以使用受控識別向 Azure 資源進行驗證,而不需要管理任何認證。 受控識別有兩種類型:使用者指派和系統指派。
使用使用者指派的受控識別
使用者指派的受控識別會以獨立 Azure 資源的形式建立。 它可以指派給一或多個 Azure 資源,讓這些資源分享相同的身分識別和許可權。 若要使用使用者指派的受控識別進行驗證,請建立身分識別、將其指派給 Azure 資源,然後藉由指定其用戶端識別碼、資源標識元或對象識別碼,來設定您的應用程式使用此身分識別進行驗證。
使用系統指派的受控識別
系統指派的受控身分識別會直接在 Azure 資源上予以啟用。 身分識別會系結至該資源的生命週期,並在刪除資源時自動刪除。 若要使用系統指派的受控識別進行驗證,請在 Azure 資源上啟用身分識別,然後將您的應用程式設定為使用此身分識別進行驗證。
本機開發期間的驗證
在本機開發期間,您可以使用開發人員憑證或服務主體憑證來進行 Azure 資源的認證。 這可讓您測試應用程式的驗證邏輯,而不需將其部署至 Azure。
使用開發人員認證
您可以在本機開發期間,使用自己的 Azure 認證向 Azure 資源進行驗證。 這通常是使用開發工具來完成,例如 Azure CLI 或 Visual Studio,其可提供應用程式存取 Azure 服務所需的令牌。 這個方法很方便,但只應用於開發目的。
使用服務主體
服務主體會在 Microsoft Entra 租戶中建立,以代表應用程式,並用於驗證 Azure 資源。 您可以將應用程式設定為在本機開發期間使用服務主體(Service Principal)認證。 這個方法比使用開發人員認證更安全,而且更接近您的應用程式在生產環境中驗證的方式。 不過,由於需要秘密,所以使用受控識別仍然不太理想。
內部部署應用程式的驗證
針對裝載於內部部署的應用程式,您可以使用服務主體向 Azure 資源進行驗證。 這包括在 Microsoft Entra ID 中建立服務主體、指派必要的許可權,以及設定您的應用程式使用其認證。 此方法可讓您的內部部署應用程式安全地存取 Azure 服務。