Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Microsoft Entra 的 托管标识使您的云应用程序的机密管理更加简单。 使用托管标识,你的代码可以使用为其运行的 Azure 服务创建的服务主体。 使用托管标识,而不是存储在 Azure Key Vault 或本地连接字符串中的单独凭据。
Azure App Configuration及其.NET、.NET Framework和Java Spring客户端库中内置了托管标识支持。 尽管不要求使用托管标识,但它消除了使用包含机密的访问令牌的必要性。 代码可以仅使用服务终结点访问应用配置存储。 可以直接在代码中嵌入此 URL,而不会泄露任何机密。
本文介绍如何利用托管标识来访问应用程序配置。 它基于快速入门中引入的 Web 应用构建。 在继续之前,首先创建一个带有 App Configuration 的 ASP.NET Core 应用。
本文介绍如何利用托管标识访问应用配置。 它基于快速入门中引入的 Web 应用构建。 在继续之前,首先使用 Azure App Configuration 创建 Java Spring 应用。
重要
托管标识不能用于对本地运行的应用程序进行身份验证。 应用程序必须部署到支持托管标识的Azure服务。 本文以Azure App Service为例。 但是,相同的概念适用于支持托管标识的任何其他Azure服务。 例如,Azure Kubernetes Service、Azure 虚拟机和 Azure Container Instances。 如果在其中某一种服务中托管工作负载,也可以利用该服务的托管标识支持。
可以使用任何代码编辑器来完成本教程中的步骤。 Visual Studio Code 是 Windows、macOS 和 Linux 平台上提供的极佳选项。
在本文中,您将学习如何:
- 向应用配置授予托管标识访问权限。
- 将应用配置为在连接到App Configuration时使用托管标识。
先决条件
若要完成本教程,必须满足以下先决条件:
- 具有活动订阅的Azure帐户。 创建试用版订阅。
- Azure App Configuration存储区。 创建存储。
- .NET SDK 6.0 或更高版本。
- 具有活动订阅的Azure帐户。 创建试用版订阅。
- Azure App Configuration 的存储区。 创建存储。
- 支持的版本为 17 的 Java 开发工具包 (JDK)。
- Apache Maven 版本 3.0 或更高版本。
如果没有 Azure 试用版订阅,请在开始之前创建 Azure 试用订阅。
添加托管标识
要在门户中设置托管标识,首先创建应用程序,然后启用该功能。
在Azure portal中访问您的应用服务资源。 如果没有可使用的现有应用服务资源,请创建一个。
在左侧窗格向下滚动到设置组,然后选择身份。
在“系统分配”选项卡中,将“状态”切换为“启用”并选择“保存”。
出现提示时,选择“是”以启用系统分配的托管标识。
向应用配置授予访问权限
以下步骤介绍如何将App Configuration数据读取者角色分配给App Service。 有关详细步骤,请参阅使用 Azure portal 分配 Azure 角色。
在 Azure portal 中,选择 App Configuration 存储。
选择 Access control (IAM)。
选择“添加”“添加角色分配”。
如果你没有分配角色的权限,则将禁用“添加角色分配”选项。 有关详细信息,请参阅 Azure 内置角色。
在Role选项卡上,选择App Configuration数据读取者角色,然后选择Next。
在成员选项卡中,选择托管标识,然后选择选定成员。
选择你的Azure订阅,在托管标识中选择App Service,然后选择你的App Service名称。
在“审核 + 分配”选项卡上,选择“审核 + 分配”以分配角色。
使用托管标识
添加对
Azure.Identity包的引用:dotnet add package Azure.Identity查找你的应用程序配置存储的终结点。 此 URL 列在 访问密钥 选项卡上,用于 Azure 门户中的存储。
打开 appsettings.json 文件,并添加以下脚本。 将包括尖括号在内的<service_endpoint>替换为您的 App Configuration 存储的 URL。
"AppConfig": { "Endpoint": "<service_endpoint>" }打开 Program.cs 文件,并添加对
Azure.Identity命名空间的引用:using Azure.Identity;若要访问存储在 App Configuration 中的值,请更新
Builder配置以使用AddAzureAppConfiguration()方法。var builder = WebApplication.CreateBuilder(args); builder.Configuration.AddAzureAppConfiguration(options => options.Connect( new Uri(builder.Configuration["AppConfig:Endpoint"]), new ManagedIdentityCredential()));注意事项
如果要使用用户分配的托管标识,请确保在创建 ManagedIdentityCredential 时指定
clientId。new ManagedIdentityCredential("<your_clientId>")如 Azure 资源托管标识的常见问题解答中所述,存在一种用于确定使用哪个托管标识的默认方法。 在这种情况下,Azure标识库强制你指定所需的标识,以避免将来可能出现的运行时问题。 例如,如果添加了新的用户分配的托管标识,或者启用了系统分配的托管标识。 因此,即使只定义了一个用户分配的托管标识,并且没有系统分配的托管标识,也需要指定
clientId。
查找你的应用程序配置存储的终结点。 此 URL 列在 Azure 门户中商店的 Overview 选项卡上。
打开
application.properties,删除 connection-string 属性并将其替换为系统指定标识的终结点:
spring.cloud.azure.appconfiguration.stores[0].endpoint=<service_endpoint>
对于用户分配的标识:
spring.cloud.azure.appconfiguration.stores[0].endpoint=<service_endpoint>
spring.cloud.azure.credential.managed-identity-enabled= true
spring.cloud.azure.credential.client-id= <client_id>
注意事项
有关详细信息,请参阅 Spring Cloud Azure 身份验证。
部署应用程序
使用托管标识时,必须将应用部署到Azure服务。 托管标识不能用于对本地运行的应用进行身份验证。 若要部署在使用 App Configuration 的快速入门中创建并修改为使用托管身份的 ASP.NET Core 应用中的 .NET Core 应用,请按照发布 Web 应用中的指南进行操作。
使用托管标识需要将应用部署到Azure服务。 托管标识不能用于对本地运行的应用进行身份验证。 要部署在 Create a Java Spring app with Azure App Configuration 快速入门中创建并修改为使用托管标识的 Spring 应用,请按照 发布 web 应用 中的指导进行操作。
除了App Service,许多其他Azure服务还支持托管标识。 有关详细信息,请参阅支持Azure资源的托管标识的服务。
清理资源
如果不想继续使用本文中创建的资源,请删除此处创建的资源组以避免产生费用。
重要
删除资源组的操作不可逆。 将永久删除资源组以及其中的所有资源。 请确保不要意外删除错误的资源组或资源。 如果在包含要保留的其他资源的资源组中创建了本文的资源,请从相应的窗格中单独删除每个资源,而不是删除该资源组。
- 登录到 Azure portal,然后选择 Resource groups。
- 在“按名称筛选”框中,输入资源组的名称。
- 在结果列表中,选择资源组名称以查看概述。
- 选择“删除资源组”。
- 系统会要求确认是否删除资源组。 重新键入资源组的名称进行确认,然后选择“删除”。
片刻之后,将会删除该资源组及其所有资源。
后续步骤
在本教程中,你添加了一个Azure托管身份,以优化对应用程序配置的访问,并改进应用的凭据管理。 若要详细了解如何使用App Configuration,请继续阅读Azure CLI示例。