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

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

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

2023-06-09 13:28| 来源: 网络整理| 查看: 265

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

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

应用程序对 Azure SQL 数据库发出的请求必须经过身份验证。 尽管可以使用多个选项向 Azure SQL 数据库进行身份验证,但应该尽可能地在应用程序中优先使用无密码连接。 使用密码或密钥的传统身份验证方法会产生安全风险和复杂性。 访问 Azure 服务中心的无密码连接,详细了解迁移到无密码连接的优势。 以下教程说明如何迁移现有 Python 应用程序,以连接到 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 数据库中创建一个用户。 用户应对应于你在登录到 Azure 部分中用于在本地登录的 Azure 帐户。

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

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

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

CREATE USER [user@domain] FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [user@domain]; ALTER ROLE db_datawriter ADD MEMBER [user@domain]; ALTER ROLE db_ddladmin ADD MEMBER [user@domain]; GO

运行这些命令会将 SQL DB 参与者角色分配给指定的帐户。 此角色允许标识读取、写入和修改数据库的数据和架构。 有关分配的角色的详细信息,请参阅固定数据库角色。

更新本地连接配置

使用 Python SQL 驱动程序 - pyodbc 连接到 Azure SQL 数据库的现有应用程序代码继续使用无密码连接,但略有更改。 例如,在本地运行时和部署到 Azure 应用服务时,以下代码同时适用于 SQL 身份验证和无密码连接。

connection_string = os.environ["AZURE_SQL_CONNECTIONSTRING"] def get_all(): with get_conn() as conn: cursor = conn.cursor() cursor.execute("SELECT * FROM Persons") # Do something with the data return def get_conn(): credential = identity.DefaultAzureCredential(exclude_interactive_browser_credential=False) token_bytes = credential.get_token("https://database.windows.net/.default").token.encode("UTF-16-LE") token_struct = struct.pack(f'


【本文地址】


今日新闻


推荐新闻


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