应用可以使用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 Arc)对Azure资源进行身份验证。本地工作流在 身份验证中更详细地讨论了本地托管的应用。
Azure托管应用的身份验证
当应用托管在Azure上时,它可以使用托管标识对Azure资源进行身份验证,而无需管理任何凭据。 有两种类型的托管标识:用户分配和系统分配。
使用用户分配的托管标识
将用户分配的托管标识创建为独立的Azure资源。 它可以分配给一个或多个Azure资源,从而允许这些资源共享相同的标识和权限。 若要使用用户分配的托管标识进行身份验证,请创建标识,将其分配给Azure资源,然后将应用配置为通过指定其客户端 ID、资源 ID 或对象 ID 来使用此标识进行身份验证。
使用用户分配的托管标识进行身份验证
使用系统分配的托管标识
系统分配的托管标识直接在Azure资源上启用。 标识绑定到该资源的生命周期,并在删除资源时自动删除。 若要使用系统分配的托管标识进行身份验证,请在Azure资源上启用标识,然后将应用配置为使用此标识进行身份验证。
使用系统分配的托管标识进行身份验证
在本地开发期间进行身份验证
在本地开发期间,可以使用开发人员凭据或服务主体对Azure资源进行身份验证。 这样就可以测试应用的身份验证逻辑,而无需将其部署到Azure。
使用开发人员凭据
可以使用自己的Azure凭据对本地开发期间Azure资源进行身份验证。 这通常是使用开发工具(例如Azure CLI或Visual Studio Code)完成的,它可为应用提供访问Azure服务所需的令牌。 此方法很方便,但应仅用于开发目的。
使用开发人员凭据在本地进行身份验证
使用代理
中转身份验证使用系统身份验证代理收集用户凭据,以对应用进行身份验证。 系统身份验证代理在用户的计算机上运行,负责管理所有已连接帐户的身份验证,包括握手流程和令牌维护。
使用代理在本地进行身份验证
使用服务主体
服务主体在Microsoft Entra租户中创建,用于表示应用,并用于对Azure资源进行身份验证。 可以将应用配置为在本地开发期间使用服务主体凭据。 此方法比使用开发人员凭据更安全,更接近应用在生产环境中进行身份验证的方式。 但是,由于需要机密,它仍然不如使用托管标识理想。
使用服务主体在本地进行身份验证
本地托管的应用的身份验证
对于本地托管的应用,可以使用服务主体对Azure资源进行身份验证。 这涉及到在Microsoft Entra ID中创建服务主体、分配必要的权限,以及配置应用以使用其凭据。 此方法允许本地应用安全地访问Azure服务。
使用服务主体对本地应用进行身份验证