为 Azure-SSIS 集成运行时启用 Microsoft Entra 身份验证
适用于:Azure 数据工厂
Azure Synapse Analytics(预览版)
本文介绍如何实现使用 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 用户创建数据库。 首先,需要创建一个 Microsoft Entra 组,并将 ADF 的指定系统/用户分配的托管标识作为成员。 接下来,需要将 Microsoft Entra 用户设置为 Azure SQL 数据库服务器的 Active Directory 管理员,然后使用该用户在 SQL Server Management Studio (SSMS) 上连接到该服务器。 最后,需要创建一个代表 Microsoft Entra 组的内含用户,以便 Azure-SSIS IR 可以使用 ADF 的指定系统/用户分配的托管标识代表你创建 SSISDB。
可以使用现有的 Microsoft Entra 组,或使用 Azure AD PowerShell 创建新组。
安装 Azure AD PowerShell 模块。
使用
Connect-AzureAD -AzureEnvironmentName AzureChinaCloud
登录,运行以下 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(例如 aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb,但不要将应用程序 ID 用于此目的)。
Add-AzureAdGroupMember -ObjectId $Group.ObjectId -RefObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
之后还可以检查组成员身份。
Get-AzureAdGroupMember -ObjectId $Group.ObjectId
可以使用以下步骤为 Azure SQL 数据库配置和管理 Microsoft Entra 身份验证:
在 Azure 门户中,从左侧导航栏中选择“所有服务”->“SQL 服务器”。
选择要使用 Microsoft Entra 身份验证配置的 Azure SQL 数据库服务器。
在边栏选项卡的“设置”部分中,选择“Active Directory 管理员”。
在命令栏中,选择“设置管理员”。
选择要设为服务器管理员的 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 托管实例支持直接使用 ADF 的指定系统/用户分配的托管标识创建数据库。 无需将 ADF 的指定系统/用户分配的托管标识加入 Microsoft Entra 组,也无需在 Azure SQL 托管实例中创建代表该组的内含用户。
按照为 Azure SQL 托管实例预配 Microsoft Entra 管理员中的步骤操作。
有关此后续步骤,需要使用 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 SQL 数据库服务器/托管实例承载的 SSIS 目录 (SSISDB) 来存储项目/包/环境/执行日志”复选框,然后选中“使用数据工厂的系统托管标识进行 Microsoft Entra 身份验证”或“使用数据工厂的用户分配的托管标识进行 Microsoft Entra 身份验证”复选框,为 Azure-SSIS IR 选择使用 Microsoft Entra 身份验证方法来访问承载 SSISDB 的数据库服务器。
有关详细信息,请参阅在 ADF 中创建 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
在 Azure-SSIS IR 上运行 SSIS 包时,可以使用 ADF 的指定系统/用户分配的托管标识进行 Microsoft Entra 身份验证,以连接到各种 Azure 资源。 当前,支持在以下连接管理器上使用 ADF 的指定系统/用户分配的托管标识进行 Microsoft Entra 身份验证。