你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
为 Azure Spring Apps 中的应用程序启用系统分配的托管标识
注意
基本、标准和企业计划将从 2025 年 3 月中旬开始弃用,停用期为 3 年。 建议转换到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告。
标准消耗和专用计划将于 2024 年 9 月 30 日开始弃用,并在六个月后完全关闭。 建议转换到 Azure 容器应用。 有关详细信息,请参阅将 Azure Spring Apps 标准消耗和专用计划迁移到 Azure 容器应用。
本文适用于:✅ 基本计划/标准计划 ✅ 企业计划
本文介绍如何使用 Azure 门户和 CLI 为 Azure Spring Apps 中的应用程序启用和禁用系统分配的托管标识。
Azure 资源的托管标识在 Microsoft Entra ID 中为 Azure 资源(例如 Azure Spring Apps 中的应用程序)提供自动托管标识。 可以使用此标识向支持 Microsoft Entra 身份验证的任何服务进行身份验证,这样就无需在代码中插入凭据了。
先决条件
如果你不熟悉 Azure 资源托管标识,请参阅什么是 Azure 资源托管标识?
- 已预配的 Azure Spring Apps 企业计划实例。 有关详细信息,请参阅快速入门:使用企业计划生成应用并将其部署到 Azure Spring Apps。
- Azure CLI 版本 2.45.0 或更高版本。
- 适用于 Azure CLI 的 Azure Spring Apps 扩展支持应用用户分配的托管标识(1.0.0 或更高版本)。 使用以下命令删除以前的版本并安装最新扩展:
az extension remove --name spring az extension add --name spring
- 已预配的 Azure Spring Apps 实例。 有关详细信息,请参阅快速入门:将第一个应用程序部署到 Azure Spring Apps。
- Azure CLI 2.45.0 或更高版本。
- 适用于 Azure CLI 的 Azure Spring Apps 扩展支持应用用户分配的托管标识(1.0.0 或更高版本)。 使用以下命令删除以前的版本并安装最新扩展:
az extension remove --name spring az extension add --name spring
添加系统分配的标识
若要创建带有系统分配的标识的应用,需在应用程序上设置另一属性。
若要在门户中设置托管标识,请首先创建应用,然后启用该功能。
- 按常规在门户中创建应用。 在门户中导航到该应用。
- 在左侧导航窗格中向下滚动到“设置”组。
- 选择“标识”。
- 在“系统分配的”选项卡中,将“状态”切换为“启用” 。 选择“保存”。
获取 Azure 资源的令牌
应用可使用其托管标识获取令牌,来访问其他受 Microsoft Entra ID 保护的资源(例如 Azure Key Vault)。 这些令牌代表访问资源的应用程序,而不是应用程序的任何特定用户。
你可能需要将目标资源配置为允许从应用程序进行访问。 有关详细信息,请参阅向 Azure 资源或其他资源分配托管标识访问权限。 例如,如果请求用于访问 Key Vault 的令牌,请确保已添加包含应用程序标识的访问策略。 否则,对 Key Vault 的调用会被拒绝,即使其中包含令牌。 若要详细了解哪些资源支持 Microsoft Entra 令牌,请参阅可以使用托管标识访问其他服务的 Azure 服务。
Azure Spring Apps 与 Azure 虚拟机使用同一终结点来获取令牌。 建议使用 Java SDK 或 Spring Boot Starter 获取令牌。 有关处理令牌过期和 HTTP 错误等重要主题的各种代码和脚本示例和指南,请参阅如何使用 Azure VM 上的 Azure 资源的托管标识来获取访问令牌。
从应用禁用系统分配的标识
移除系统分配的标识后,也会将其从 Microsoft Entra ID 中删除。 删除应用资源会自动从 Microsoft Entra ID 中移除系统分配的标识。
使用以下步骤从不再需要系统分配的托管标识的应用中删除该标识:
- 使用与包含 Azure Spring Apps 实例的 Azure 订阅关联的帐户登录到门户。
- 导航到所需的应用程序,然后选择“标识”。
- 在“系统分配”/“状态”下,选择“关闭”,然后选择“保存” :
从对象 ID(主体 ID)获取客户端 ID
使用以下命令从对象/主体 ID 值获取客户端 ID:
az ad sp show --id <object-ID> --query appId