迁移应用程序以将无密码连接用于 Azure SQL 数据库

您所在的位置:网站首页 oracle创建用户密码 迁移应用程序以将无密码连接用于 Azure SQL 数据库

迁移应用程序以将无密码连接用于 Azure SQL 数据库

2023-05-07 10:15| 来源: 网络整理| 查看: 265

你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

迁移应用程序以将无密码连接用于 Azure SQL 数据库 项目 05/04/2023

对 Azure SQL 数据库的应用程序请求必须经过身份验证。 尽管有多个选项可用于对 Azure SQL 数据库进行身份验证,但应尽可能优先考虑应用程序中的无密码连接。 使用密码或密钥的传统身份验证方法会产生安全风险和复杂性。 访问 Azure 服务中心的无密码连接,详细了解迁移到无密码连接的优势。 以下教程说明如何迁移现有应用程序,以连接到 Azure SQL 数据库来使用无密码连接,而不是使用用户名和密码解决方案。

配置 Azure SQL 数据库

无密码连接使用 Azure Active Directory (Azure AD) 身份验证连接到 Azure 服务(包括 Azure SQL 数据库)。 使用 Azure AD 身份验证,可以在一个中心位置管理标识,从而简化权限管理。 详细了解如何为 Azure SQL 数据库配置 Azure AD 身份验证:

Azure AD 身份验证概述 配置 Azure AD 身份验证

对于本迁移指南,请确保已将 Azure AD 管理员分配到 Azure SQL 数据库。

导航到逻辑服务器的 Azure Active Directory 页。

选择“设置管理员”。

在 Azure Active Directory 浮出控件菜单中,搜索要分配为管理员的用户。

选择该用户,然后选择“选择”。

配置本地开发环境

无密码连接可以配置为同时适用于本地和 Azure 托管的环境。 在本部分中,你将应用配置以允许单个用户向 Azure SQL Database 进行身份验证,以便进行本地开发。

登录到 Azure

对于本地开发,请确保使用想要用于访问 Azure SQL 数据库的同一 Azure AD 帐户登录。 可以通过常用的开发工具(如 Azure CLI 或 Azure PowerShell)进行身份验证。 可用于进行身份验证的开发工具因语言而异。

Azure CLI Visual Studio Visual Studio Code PowerShell

使用以下命令通过 Azure CLI 登录到 Azure:

az login

选择 Visual Studio 右上角的“登录”按钮。

使用你之前为其分配角色的 Azure AD 帐户登录。

需要安装 Azure CLI 才能通过 Visual Studio Code 使用 DefaultAzureCredential。

在 Visual Studio Code 的主菜单上,导航到“终端”>“新建终端”。

使用以下命令通过 Azure CLI 登录到 Azure:

az login

通过以下命令使用 PowerShell 登录到 Azure:

Connect-AzAccount 创建数据库用户并分配角色

在 Azure SQL 数据库中创建用户。 用户应与用于通过 Visual Studio 或 IntelliJ 等开发工具在本地登录的 Azure 帐户相对应。

在 Azure 门户中,浏览到 SQL 数据库,然后选择“查询编辑器(预览)”。

选择屏幕右侧的“以 身份继续”,使用你的帐户登录到数据库。

在查询编辑器视图中,运行以下 T-SQL 命令:

CREATE USER FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER ; ALTER ROLE db_datawriter ADD MEMBER ; ALTER ROLE db_ddladmin ADD MEMBER ; GO

更新本地连接配置

使用 Microsoft.Data.SqlClient 库或 Entity Framework Core 连接到 Azure SQL 数据库的现有应用程序代码将继续使用无密码连接。 但是,必须更新数据库连接字符串才能使用无密码格式。 例如,以下代码适用于 SQL 身份验证和无密码连接:

string connectionString = app.Configuration.GetConnectionString("AZURE_SQL_CONNECTIONSTRING")!; using var conn = new SqlConnection(connectionString); conn.Open(); var command = new SqlCommand("SELECT * FROM Persons", conn); using SqlDataReader reader = command.ExecuteReader();

若要更新引用的连接字符串 (AZURE_SQL_CONNECTIONSTRING) 以使用无密码连接字符串格式:

找到连接字符串。 对于使用 .NET 应用程序的本地开发,这通常存储在以下位置之一:

项目的 appsettings.json 配置文件。 Visual Studio 项目的 launchsettings.json 配置文件。 本地系统或容器环境变量。

将连接字符串值替换为以下无密码格式。 将 和 占位符更新为你自己的值:

"Server=tcp:.database.windows.net,1433;Initial Catalog=; Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Authentication=\"Active Directory Default\";" 测试应用程序

在本地运行应用,并验证与 Azure SQL 数据库的连接是否按预期工作。 请记住,对 Azure 用户和角色的更改通过 Azure 环境传播可能需要几分钟的时间。 应用程序现在配置为在本地运行,开发人员无需管理应用程序本身的机密。

配置 Azure 托管环境

将应用配置为在本地使用无密码连接后,相同的代码可以在应用部署到 Azure 后向 Azure SQL 数据库进行身份验证。 以下各部分介绍了如何配置已部署的应用程序,以使用托管标识连接到 Azure SQL 数据库。 托管标识在 Azure Active Directory (Azure AD) 中提供了自动托管标识,供应用程序在连接到支持 Azure AD 身份验证的资源时使用。 详细了解托管标识:

无密码概述 托管标识最佳做法 创建托管标识

使用 Azure 门户或 Azure CLI 创建用户分配的托管标识。 应用程序将使用该标识向其他服务进行身份验证。

Azure 门户 Azure CLI 在 Azure 门户顶部搜索“托管标识”。 选择“托管标识”结果。 选择“托管标识”概述页面顶部的“+ 创建”。 在“基本信息”选项卡上,输入下列值: “订阅”:选择所需的订阅。 “资源组”:选择所需的资源组。 区域:选择你所在位置附近的区域。 “名称”:输入标识的可识别名称,例如“MigrationIdentity”。 在页面底部选择“查看 + 创建”。 验证检查完成后,选择“创建”。 Azure 将创建新的用户分配的标识。

创建资源后,选择“转到资源”以查看托管标识的详细信息。

使用 az identity create 命令创建用户分配的托管标识:

az identity create --name MigrationIdentity --resource-group 将托管标识与 Web 应用相关联

将 Web 应用配置为使用自己创建的用户分配的托管标识。

Azure 门户 Azure CLI 服务连接器

在 Azure 门户中完成以下步骤,从而将用户分配的托管标识与应用相关联。 这些步骤同样也适用于以下 Azure 服务:

Azure Spring Apps Azure Container Apps Azure 虚拟机 Azure Kubernetes 服务 导航到 Web 应用的概述页面。

从左侧导航菜单中,选择“标识”。

在“标识”页面上,切换到“用户分配的”选项卡。

选择“+ 添加”,打开“添加用户分配的托管标识”浮出控件。

选择之前用于创建标识的订阅。

按名称搜索“MigrationIdentity”,并从搜索结果中选择该标识。

选择“添加”,以将该标识与应用相关联。

使用以下 Azure CLI 命令将标识与应用相关联:

使用 az identity show 命令检索创建的托管标识的 ID。 复制输出值以在下一步中使用。

az identity show --name MigrationIdentity -g --query id Azure 应用服务 Azure Spring Apps Azure Container Apps Azure 虚拟机 Azure Kubernetes 服务

可以使用 az webapp identity assign 命令将托管标识分配给 Azure 应用服务实例。

az webapp identity assign \ --resource-group \ --name --identities

可以使用 az spring app identity assign 命令将托管标识分配给 Azure Spring Apps 实例。

az spring app identity assign \ --resource-group \ --name \ --service --user-assigned

你可以使用 az vm identity assign 命令将托管标识分配给虚拟机。

az containerapp identity assign \ --resource-group \ --name --user-assigned

可以使用 az vm identity assign 命令将托管标识分配给虚拟机。

az vm identity assign \ --resource-group \ --name --identities

可以使用 az aks update 命令将托管标识分配给 Azure Kubernetes 服务 (AKS) 实例。

az aks update \ --resource-group \ --name \ --enable-managed-identity \ --assign-identity \ --assign-kubelet-identity

可以使用 Azure CLI 通过服务连接器在 Azure 计算托管环境和目标服务之间创建连接。 该服务连接器 CLI 命令会自动将适当的角色分配给标识。 可以在概述页上详细了解服务连接器以及支持哪些方案。

使用 az identity show 命令检索创建的托管标识的客户端 ID。 复制该值供以后使用。

az identity show --name MigrationIdentity --resource-group --query clientId

使用相应的 CLI 命令建立服务连接:

Azure 应用服务 Azure Spring Apps Azure Container Apps

如果使用的是某个 Azure 应用服务,请使用 az webapp connection 命令:

az webapp connection create storage-blob \ --resource-group \ --name \ --target-resource-group \ --account \ --user-identity "client-id=" "subs-id="

如果使用的是 Azure Spring Apps,请使用 az spring-cloud connection 命令:

az spring-cloud connection create storage-blob \ --resource-group \ --service \ --app \ --deployment \ --target-resource-group \ --account \ --user-identity "client-id=" "subs-id="

如果使用的是 Azure 容器应用,请使用 az containerapp connection 命令:

az containerapp connection create storage-blob \ --resource-group \ --name \ --target-resource-group \ --account \ --user-identity "client-id=" "subs-id=" 为标识创建数据库用户并分配角色

创建一个映射回用户分配的托管标识的 SQL 数据库用户。 向用户分配必要的 SQL 角色,允许应用读取、写入和修改数据库的数据和架构。

在 Azure 门户中,浏览到 SQL 数据库,然后选择“查询编辑器(预览)”。

选择屏幕右侧的“以 身份继续”,使用你的帐户登录到数据库。

在查询编辑器视图中,运行以下 T-SQL 命令:

CREATE USER FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER ; ALTER ROLE db_datawriter ADD MEMBER ; ALTER ROLE db_ddladmin ADD MEMBER ; GO

重要

在企业生产环境中分配数据库用户角色时请务必谨慎。 在这些情况下,应用不应使用单个提升的标识执行所有操作。 尝试为特定任务配置具有特定权限的多个标识,实现最低特权原则。

若要详细了解如何配置数据库角色和安全性,可以阅读以下资源:

教程:保护 Azure SQL 数据库中的数据库 授权数据库访问 SQL 数据库 更新连接字符串

更新 Azure 应用配置以使用无密码连接字符串格式。 连接字符串通常作为环境变量存储在应用托管环境中。 以下说明侧重于应用服务,但其他 Azure 托管服务提供类似的配置。

导航到应用服务实例的配置页,找到 Azure SQL 数据库连接字符串。

选择编辑图标,更新连接字符串值以匹配以下格式。 使用你自己服务的值更改 和 占位符。

"Server=tcp:.database.windows.net,1433;Initial Catalog=; Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Authentication=\"Active Directory Default\";"

保存更改并重启应用程序(如果应用程序未自动执行此操作)。

测试应用程序

测试应用,以确保一切正常。 所有更改可能需要花费几分钟的时间才能通过 Azure 环境传播。

后续步骤

本教程介绍了如何将应用程序迁移到无密码连接。

可以阅读以下资源,更深入地了解本文中讨论的概念:

无密码概述 托管标识最佳做法 教程:保护 Azure SQL 数据库中的数据库 授权数据库访问 SQL 数据库


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3