你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
为 Azure-SSIS 集成运行时启用 Microsoft Entra 身份验证
适用于: Azure 数据工厂 Azure Synapse Analytics(预览版)
提示
试用 Microsoft Fabric 中的数据工厂,这是一种适用于企业的一站式分析解决方案。 Microsoft Fabric 涵盖从数据移动到数据科学、实时分析、商业智能和报告的所有内容。 了解如何免费开始新的试用!
本文介绍如何实现使用 Azure 数据工厂 (ADF) 或 Azure Synapse 的指定系统/用户分配的托管标识进行 Microsoft Entra 身份验证,并使用该验证代替传统的身份验证方法(如 SQL 身份验证)以执行以下操作:
创建 Azure-SSIS Integration Runtime (IR),而该运行时会代表你在 Azure SQL 数据库服务器/托管实例中预配 SSIS 目录数据库 (SSISDB)。
在 Azure-SSIS IR 上运行 SSIS 包时连接到各种 Azure 资源。
有关 ADF 的托管标识的详细信息,请参阅数据工厂和 Azure Synapse 的托管标识。
注意
在此场景中,只能在预配和后续启动 Azure-SSIS IR 过程中使用 ADF 的指定系统/用户分配的托管标识进行 Microsoft Entra 身份验证,而 Azure-SSIS IR 可以预配并连接到 SSISDB。 在 SSIS 包的执行过程中,Azure-SSIS IR 仍通过使用在 SSISDB 预配期间创建的完全托管帐户(AzureIntegrationServiceDbo 和 AzureIntegrationServiceWorker)进行 SQL 身份验证来连接到 SSISDB 以提取包。
若要使用 连接管理器用户分配的托管标识 功能(例如 OLEDB 连接管理器),需要使用与连接管理器中使用的相同用户分配的托管标识来预配 SSIS IR。
如果已使用 SQL 身份验证创建了 Azure SSIS IR,则此时不能通过 PowerShell 将其重新配置为使用 Microsoft Entra 身份验证,但你可以通过 Azure 门户/ADF 应用执行此操作。
注意
建议使用 Azure Az PowerShell 模块与 Azure 交互。 若要开始,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az。
在 Azure SQL 数据库上启用 Microsoft Entra 身份验证
Azure SQL 数据库支持使用 Microsoft Entra 用户创建数据库。 首先,需要创建一个 Microsoft Entra 组,并将 ADF 的指定系统/用户分配的托管标识作为成员。 接下来,需要将 Microsoft Entra 用户设置为 Azure SQL 数据库服务器的 Active Directory 管理员,然后使用该用户在 SQL Server Management Studio (SSMS) 上连接到该服务器。 最后,需要创建一个代表 Microsoft Entra 组的内含用户,以便 Azure-SSIS IR 可以使用 ADF 的指定系统/用户分配的托管标识代表你创建 SSISDB。
创建一个 Microsoft Entra 组,并将 ADF 的指定系统/用户分配的托管标识作为成员
可以使用现有的 Microsoft Entra 组,或使用 Azure AD PowerShell 创建新组。
安装 Azure AD PowerShell 模块。
使用
Connect-AzureAD
登录,运行以下 cmdlet 来创建组,并将该组保存在变量中:$Group = New-AzureADGroup -DisplayName "SSISIrGroup" ` -MailEnabled $false ` -SecurityEnabled $true ` -MailNickName "NotSet"
注意
自 2024 年 3 月 30 日起,Azure AD 和 MSOnline PowerShell 模块已弃用。 若要了解详细信息,请阅读有关弃用的更新。 在此日期之后,对这些模块的支持仅限于到 Microsoft Graph PowerShell SDK 的迁移帮助和安全性修复。 弃用的模块将持续运行至 2025 年 3 月 30 日。
我们建议迁移到 Microsoft Graph PowerShell,以便与 Microsoft Entra ID(以前称为 Azure AD)进行交互。 有关常见迁移问题,请参阅迁移常见问题解答。 注意:2024 年 6 月 30 日之后,MSOnline 版本 1.0.x 可能会遇到中断。
结果如以下示例所示,此示例还显示变量值:
$Group ObjectId DisplayName Description -------- ----------- ----------- 6de75f3c-8b2f-4bf4-b9f8-78cc60a18050 SSISIrGroup
将 ADF 的指定系统/用户分配的托管标识添加到组中。 可以按照数据工厂或 Azure Synapse 的托管标识一文中的说明操作,获取 ADF 的指定系统/用户分配的托管标识的对象 ID(例如 765ad4ab-XXXX-XXXX-XXXX-51ed985819dc,但不要将应用程序 ID 用于此目的)。
Add-AzureAdGroupMember -ObjectId $Group.ObjectId -RefObjectId 765ad4ab-XXXX-XXXX-XXXX-51ed985819dc
之后还可以检查组成员身份。
Get-AzureAdGroupMember -ObjectId $Group.ObjectId
在 Azure SQL 数据库上配置 Microsoft Entra 身份验证
可以使用以下步骤为 Azure SQL 数据库配置和管理 Microsoft Entra 身份验证:
在 Azure 门户中,从左侧导航栏中选择“所有服务”->“SQL 服务器”。
选择要使用 Microsoft Entra 身份验证配置的 Azure SQL 数据库服务器。
在边栏选项卡的“设置”部分中,选择“Active Directory 管理员”。
在命令栏中,选择“设置管理员”。
选择要设为服务器管理员的 Microsoft Entra 用户帐户,然后选择“选择”。
在命令栏中,选择“保存”。
在 Azure SQL 数据库中创建代表 Microsoft Entra 组的内含用户
有关此后续步骤,需要使用 SSMS。
启动 SSMS。
在“连接到服务器”对话框的“服务器名称”字段中,输入服务器名称 。
在“身份验证”字段中,选择“Active Directory - 支持 MFA 的通用方法”(还可以使用其他两种 Active Directory 身份验证类型,请参阅为 Azure SQL 数据库配置和管理 Microsoft Entra 身份验证)。
在“用户名”字段中,输入已设为服务器管理员的 Microsoft Entra 帐户的名称,例如 testuser@xxxonline.com。
选择“连接”并完成登录过程。
在“对象资源管理器”中,展开“数据库”->“系统数据库”文件夹。
右键单击 master 数据库并选择“新建查询” 。
在查询窗口中,输入以下 T-SQL 命令,然后在工具栏中选择“执行”。
CREATE USER [SSISIrGroup] FROM EXTERNAL PROVIDER
命令应会成功完成,并创建内含用户来表示组。
清除查询窗口,输入以下 T-SQL 命令,然后在工具栏中选择“执行”。
ALTER ROLE dbmanager ADD MEMBER [SSISIrGroup]
命令应会成功完成,并授予该内含用户创建数据库的权限 (SSISDB)。
如果 SSISDB 是使用 SQL 身份验证创建的,并且你想要改为对 Azure-SSIS IR 使用 Microsoft Entra 身份验证来访问它,请首先确保上述向主数据库授予权限的步骤已成功完成。 然后,右键单击 SSISDB 数据库并选择“新建查询” 。
在查询窗口中,输入以下 T-SQL 命令,然后在工具栏中选择“执行”。
CREATE USER [SSISIrGroup] FROM EXTERNAL PROVIDER
命令应会成功完成,并创建内含用户来表示组。
清除查询窗口,输入以下 T-SQL 命令,然后在工具栏中选择“执行”。
ALTER ROLE db_owner ADD MEMBER [SSISIrGroup]
命令应会成功完成,并授予该内含用户访问 SSISDB 的权限。
在 Azure SQL 托管实例上启用 Microsoft Entra 身份验证
Azure SQL 托管实例支持直接使用 ADF 的指定系统/用户分配的托管标识创建数据库。 无需将 ADF 的指定系统/用户分配的托管标识加入 Microsoft Entra 组,也无需在 Azure SQL 托管实例中创建代表该组的内含用户。
在 Azure SQL 托管实例上配置 Microsoft Entra 身份验证
按照为 Azure SQL 托管实例预配 Microsoft Entra 管理员中的步骤操作。
将 ADF 或 Azure Synapse 的指定系统/用户分配的托管标识添加为 Azure SQL 托管实例中的用户
有关此后续步骤,需要使用 SSMS。
启动 SSMS。
使用 SQL Server 帐户(即 sysadmin)连接到 Azure SQL 托管实例。 这是一个临时限制,在 Azure SQL 托管实例上的 Microsoft Entra 服务器主体(登录名)支持正式推出后就会解除。 如果尝试使用 Microsoft Entra 管理员帐户创建登录名,将会看到以下错误:消息 15247,级别 16,状态 1,行 1 用户无权执行此操作。
在“对象资源管理器”中,展开“数据库”->“系统数据库”文件夹。
右键单击 master 数据库并选择“新建查询” 。
在查询窗口中,执行以下 T-SQL 脚本,将 ADF 的指定系统/用户分配的托管标识添加为用户。
CREATE LOGIN [{your managed identity name}] FROM EXTERNAL PROVIDER ALTER SERVER ROLE [dbcreator] ADD MEMBER [{your managed identity name}] ALTER SERVER ROLE [securityadmin] ADD MEMBER [{your managed identity name}]
如果将系统托管标识用于 ADF,则托管标识名称应为 ADF 名称。 如果将用户分配的托管标识用于 ADF,则托管标识名称应为指定的用户分配的托管标识名称。
命令应会成功完成,并授予 ADF 的指定系统/用户分配的托管标识创建数据库 (SSISDB) 的权限。
如果 SSISDB 是使用 SQL 身份验证创建的,并且你想要改为对 Azure-SSIS IR 使用 Microsoft Entra 身份验证来访问它,请首先确保上述向主数据库授予权限的步骤已成功完成。 然后,右键单击 SSISDB 数据库并选择“新建查询” 。
在查询窗口中,输入以下 T-SQL 命令,然后在工具栏中选择“执行”。
CREATE USER [{your managed identity name}] FOR LOGIN [{your managed identity name}] WITH DEFAULT_SCHEMA = dbo ALTER ROLE db_owner ADD MEMBER [{your managed identity name}]
该命令应会成功完成,并授予 ADF 的指定系统/用户分配的托管标识访问 SSISDB 的权限。
在 Azure 门户/ADF 应用中预配 Azure-SSIS IR
在 Azure 门户/ADF 应用中预配 Azure-SSIS IR 时,在“部署设置”页上,选择“创建由 Azure SQL 数据库服务器/托管实例承载的 SSIS 目录 (SSISDB) 来存储项目/包/环境/执行日志”复选框,然后选中“使用数据工厂的系统托管标识进行 Microsoft Entra 身份验证”或“使用数据工厂的用户分配的托管标识进行 Microsoft Entra 身份验证”复选框,为 Azure-SSIS IR 选择使用 Microsoft Entra 身份验证方法来访问承载 SSISDB 的数据库服务器。
有关详细信息,请参阅在 ADF 中创建 Azure-SSIS IR。
通过 PowerShell 预配 Azure-SSIS IR
若要通过 PowerShell 预配 Azure-SSIS IR,请执行以下操作:
安装 Azure PowerShell 模块。
在脚本中,不要设置
CatalogAdminCredential
参数。 例如:Set-AzDataFactoryV2IntegrationRuntime -ResourceGroupName $ResourceGroupName ` -DataFactoryName $DataFactoryName ` -Name $AzureSSISName ` -Description $AzureSSISDescription ` -Type Managed ` -Location $AzureSSISLocation ` -NodeSize $AzureSSISNodeSize ` -NodeCount $AzureSSISNodeNumber ` -Edition $AzureSSISEdition ` -MaxParallelExecutionsPerNode $AzureSSISMaxParallelExecutionsPerNode ` -CatalogServerEndpoint $SSISDBServerEndpoint ` -CatalogPricingTier $SSISDBPricingTier Start-AzDataFactoryV2IntegrationRuntime -ResourceGroupName $ResourceGroupName ` -DataFactoryName $DataFactoryName ` -Name $AzureSSISName
使用 ADF 的指定系统/用户分配的托管标识进行 Microsoft Entra 身份验证以运行 SSIS 包
在 Azure-SSIS IR 上运行 SSIS 包时,可以使用 ADF 的指定系统/用户分配的托管标识进行 Microsoft Entra 身份验证,以连接到各种 Azure 资源。 当前,支持在以下连接管理器上使用 ADF 的指定系统/用户分配的托管标识进行 Microsoft Entra 身份验证。