适用范围:SQL Server
本文列出了在为 NT Service\SQLServerExtension使用最低特权时,SQL Server 的 Azure 扩展授予帐户的权限。使用最低特权配置,扩展仅在 Azure 门户中启用功能时授予必要的权限。
Note
              NT Authority\System 必须有权修改列出的目录和注册表项的权限。 此访问权限是必需的,以便 NT Authority\System 可以授予对最低特权模式的 NT Service\SqlServerExtension 帐户所需的访问权限。
Overview
将 SQL Server 连接到启用了 最低权限 的 Azure Arc 时,Azure Arc 扩展会授予其服务帐户, NT SERVICE\SQLServerExtension仅授予启用该功能时每个功能所需的权限。 如果禁用该功能,扩展会自动删除这些权限。 如果某个功能处于非活动状态,则扩展不会授予该功能的任何权限。
不支持手动设置代理帐户的权限。
Note
目前,默认情况下不会应用最低特权配置。
具有扩展版本或更高版本 1.1.2859.223 的现有服务器最终将应用最低特权配置。 此扩展于 2024 年 11 月发布。 若要防止自动应用最低特权,请阻止扩展升级。1.1.2859.223
“按功能分配的 SQL 特权”部分说明了扩展在启用以下功能时授予的权限:
目录权限
| 目录路径 | 所需的权限 | Details | Feature | 
|---|---|---|---|
| <SystemDrive>\Packages\Plugins\Microsoft.AzureData.WindowsAgent.SQLServer | 完全控制 | 与扩展相关的 DLL 和 EXE 文件。 | Default | 
| C:\Packages\Plugins\Microsoft.AzureData.WindowsAgent.SqlServer\<extension_version>\RuntimeSettings | 完全控制 | 扩展设置文件。 | Default | 
| C:\Packages\Plugins\Microsoft.AzureData.WindowsAgent.SqlServer\<extension_version>\status | 完全控制 | 扩展状态文件。 | Default | 
| C:\ProgramData\GuestConfig\extension_logs\Microsoft.AzureData.WindowsAgent.SqlServer | 完全控制 | 扩展日志文件。 | Default | 
| C:\Packages\Plugins\Microsoft.AzureData.WindowsAgent.SqlServer\<extension_version>\status\HeartBeat.Json | 完全控制 | 扩展检测信号文件。 | Default | 
| %ProgramFiles%\Sql Server Extension | 完全控制 | 扩展服务文件。 | Default | 
| <SystemDrive>\Windows\system32\extensionUpload | 完全控制 | 需要写入计费所需的使用情况文件。 | Default | 
| <SystemDrive>\Windows\system32\ExtensionHandler.log | 完全控制 | 扩展创建的预日志文件夹。 | Default | 
| <ProgramData>\AzureConnectedMachineAgent\Config | Read | Arc 配置文件目录。 | Default | 
| C:\Windows\System32\config\systemprofile\AppData\Local\Microsoft SQL Server Extension Agent | 完全控制 | 需要编写评估报告和状态。 | Default | 
| SQL 日志目录(如注册表中的设置) 1 : C:\Program Files\Microsoft SQL Server\MSSQL<base_version>.<instance_name>\MSSQL\log | Read | 从 SQL 日志中提取 SQL vCore 信息所必需的。 | Default | 
| SQL 备份目录(如注册表中的设置) 1 : C:\Program Files\Microsoft SQL Server\MSSQL<base_version>.<instance_name>\MSSQL\Backup | ReadAndExecute/Write /Delete | 备份所需的 | 备份 | 
1 有关详细信息,请参阅 文件位置和注册表映射。
注册表权限
基键: HKEY_LOCAL_MACHINE
| 注册表项 | 必需的权限 | Details | Feature | 
|---|---|---|---|
| SOFTWARE\Microsoft\Microsoft SQL Server | Read | 读取 SQL Server 属性,例如 installedInstances。 | Default | 
| SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceRegistryName>\MSSQLSERVER | 完全控制 | Microsoft Entra ID 和 Purview。 | Microsoft Entra ID Purview | 
| SOFTWARE\Microsoft\SystemCertificates | 完全控制 | Microsoft Entra ID 是必需的。 | Microsoft Entra ID | 
| SYSTEM\CurrentControlSet\Services | Read | SQL Server 帐户名称。 | Default | 
| SOFTWARE\Microsoft\AzureDefender\SQL | Read | Azure Defender 状态和上次更新时间。 | Default | 
| SOFTWARE\Microsoft\SqlServerExtension | 完全控制 | 扩展相关值。 | Default | 
| SOFTWARE\Policies\Microsoft\Windows | 读取和写入 | 通过扩展启用自动 Windows 更新。 | 自动更新 | 
组权限
              NT Service\SQLServerExtension 已添加到混合代理扩展应用程序。 这使 Azure 实例元数据服务(IMDS)握手能够检索与 Azure 数据平面服务(例如数据处理服务(DPS)通信所需的计算机资源托管标识令牌,以及用于计费使用情况、扩展日志和监视仪表板数据收集的遥测终结点。
SQL 权限
添加帐户 NT Service\SQLServerExtension :
- 作为对计算机上当前存在的所有实例的 SQL 登录名
- 作为每个数据库中的用户
扩展还会在启用功能时向实例和数据库对象授予权限。
Note
最低权限取决于已启用的功能。 扩展在不再需要权限时更新权限。 启用功能时,它会授予必要的权限。
              NT Service\SQLServerExtension 帐户权限详细信息
| 注册表路径 | 许可 | 如果帐户遭到入侵, NT Service\SQLServerExtension则权限的相关风险 | 
|---|---|---|
| SOFTWARE\Microsoft\Microsoft SQL Server | Read | 扩展可以查看安装了哪些 SQL Server 版本。 | 
| SOFTWARE\Microsoft\Microsoft SQL Server\\MSSQLSERVER | 完全控制 | 仅当启用 Microsoft Entra 身份验证或 Purview 时才需要。 扩展可以修改 SQL Server 配置。 | 
| SOFTWARE\Microsoft\SystemCertificates | 完全控制 | 仅当启用Microsoft Entra 身份验证时才需要。 扩展可以替换受信任的根证书颁发机构。 | 
| SYSTEM\CurrentControlSet\Services | Read | 扩展可以查看服务帐户名称。 | 
| SOFTWARE\Microsoft\AzureDefender\SQL | Read | 扩展可以了解Microsoft Defender 状态和更新时间。 | 
| SOFTWARE\Microsoft\SqlServerExtension | 完全控制 | 扩展可能会更改扩展设置。 | 
| SOFTWARE\Policies\Microsoft\Windows | 读取和写入 | 仅当启用 自动更新 时才需要。 扩展可能会更改 Windows 更新策略并禁用 Device Guard,后者控制代码完整性和基于虚拟化的安全性,由于缺少修补程序而扩展暴露。 | 
按功能排序的 SQL 特权
下表列出了控制 Azure 扩展 for SQL Server 授予的权限的功能的默认行为:
| Feature | 默认行为 | 
|---|---|
| 默认扩展权限 | 默认启用 | 
| 自动备份 | 默认已禁用 | 
| 可用性组 | 默认启用 | 
| 最佳做法评估 | 默认已禁用 | 
| 数据库迁移(预览版) | 默认启用 | 
| 迁移评估 | 默认启用 | 
| 时间点还原 | 默认已禁用 | 
| Purview | 默认已禁用 | 
默认扩展权限
以下默认权限是适用于 SQL Server 的 Azure 扩展提供的基本功能级别的最低要求,必须应用:
| 对象类型 | 数据库或对象名称 | Privilege | 
|---|---|---|
| Database | master | VIEW DATABASE STATE | 
| Database | msdb | ALTER ANY SCHEMA | 
| Database | msdb | CREATE TABLE | 
| Database | msdb | CREATE TYPE | 
| Database | msdb | DB DATA READER | 
| Database | msdb | DB DATA WRITER | 
| Database | msdb | EXECUTE | 
| Database | msdb | SELECT dbo.backupfile | 
| Database | msdb | SELECT dbo.backupmediaset | 
| Database | msdb | SELECT dbo.backupmediafamily | 
| Database | msdb | SELECT dbo.backupset | 
| Database | msdb | SELECT dbo.syscategories | 
| Database | msdb | SELECT dbo.sysjobactivity | 
| Database | msdb | SELECT dbo.sysjobhistory | 
| Database | msdb | SELECT dbo.sysjobs | 
| Database | msdb | SELECT dbo.sysjobsteps | 
| Database | msdb | SELECT dbo.syssessions | 
| Database | msdb | SELECT dbo.sysoperators | 
| Database | msdb | SELECT dbo.suspectpages | 
| Server | CONNECT ANY DATABASE | |
| Server | CONNECT SQL | |
| Server | VIEW ANY DATABASE | |
| Server | VIEW ANY DEFINITION | |
| Server | VIEW SERVER STATE | 
自动备份
默认情况下禁用自动备份。 该扩展将备份权限授予已启用自动备份的任何数据库。 启用备份功能还会启用 时间点还原 功能,因此还授予创建数据库的权限。
如果启用这些功能,扩展会自动授予以下权限:
| 对象类型 | 数据库或对象名称 | Privilege | 
|---|---|---|
| Database | 所有数据库 | DB BACKUP OPERATOR | 
| Server | CREATE ANY DATABASE | |
| Server | master | DB CREATOR | 
可用性组
              默认情况下,可用性组 发现和管理功能(例如故障转移)处于启用状态,但可以通过功能标志禁用它们 AvailabilityGroupDiscovery 。
如果启用该功能,扩展会自动授予以下权限:
| 对象类型 | 数据库或对象名称 | Privilege | 
|---|---|---|
| Server | ALTER ANY AVAILABILITY GROUP | |
| Server | VIEW ANY DEFINITION | 
最佳做法评估
最佳做法评估默认处于禁用状态。
如果启用该功能,扩展会自动授予以下权限:
| 对象类型 | 数据库或对象名称 | Privilege | 
|---|---|---|
| Database | master | SELECT | 
| Database | master | VIEW DATABASE STATE | 
| Database | msdb | SELECT | 
| Server | VIEW ANY DATABASE | |
| Server | VIEW ANY DEFINITION | |
| Server | VIEW SERVER STATE | |
| StoredProcedure | EnumErrorLogsSP | EXECUTE | 
| StoredProcedure | ReadErrorLogsSP | EXECUTE | 
数据库迁移
默认启用 数据库迁移(预览版) 功能,并且仅需要 默认扩展权限中列出的权限,但执行特定迁移作时,数据库迁移(预览)功能使用的一些权限将被授予 实时权限 。
以下作需要扩展实时授予的其他权限:
Note
在迁移过程中,具有 SqlServerAvailabilityGroups_CreateManagedInstanceLinkAzure 中的用户 SqlServerAvailabilityGroups_failoverMiLink和 SqlServerAvailabilityGroups_deleteMiLink 权限可以在 数据库迁移(预览版) 页上执行作,以提升扩展使用的帐户的 SQL Server 权限,包括 sysadmin 角色。
创建托管实例链接迁移
在迁移数据步骤中,扩展会在托管实例链接迁移的“查看 + 创建”选项卡上选择“开始数据迁移”时授予实时权限。 服务帐户需要提升的权限才能配置分布式可用性组。 创建分布式可用性组后,它会撤销权限,并且 Azure 门户中可见的部署处于已完成状态。 如果另一个迁移同时运行,则在创建最后一个分布式可用性组之前,该扩展不会撤销权限。
创建托管实例链接迁移的作在创建请求期间获取以下权限:
| 对象类型 | 数据库或对象名称 | Privilege | 
|---|---|---|
| Server | CREATE AVAILABILITY GROUP | |
| Server | ALTER ANY AVAILABILITY GROUP | |
| Server | ALTER ANY DATABASE | |
| Server | CREATE ENDPOINT | |
| Server | ALTER ANY ENDPOINT | |
| Server | CREATE CERTIFICATE | |
| Database | master | IMPERSONATE ON USER::[dbo] | 
完成托管实例链接迁移的直接转换
在“监视和直接转换”步骤中,扩展在为托管实例链接迁移选择“完整直接转换”选项时授予实时权限。 扩展在直接转换完成后撤消权限。
完成托管实例链接迁移直接转换的作在完成请求期间获取以下权限:
| 对象类型 | 数据库或对象名称 | Privilege | 
|---|---|---|
| Server | CREATE AVAILABILITY GROUP | |
| Server | ALTER ANY AVAILABILITY GROUP | |
| Server | ALTER ANY DATABASE | |
| Server | sysadmin1 | 
              1 如果启用了最低权限,则完整的直接转换作还会在直接转换期间向sysadmin帐户授予NT Service\SQLServerExtension角色。 需要此角色才能将分布式可用性组故障转移到 Azure SQL 托管实例。
取消托管实例链接迁移
在“监视和直接转换”步骤中,扩展在为托管实例链接迁移选择“取消迁移”选项时授予实时权限。 扩展在取消迁移后撤消权限。
取消托管实例链接迁移的作在取消请求期间获取以下权限:
| 对象类型 | 数据库或对象名称 | Privilege | 
|---|---|---|
| Server | ALTER ANY AVAILABILITY GROUP | |
| Server | ALTER ANY DATABASE | |
| Server | sysadmin1 | 
              1 如果启用了最低权限,则取消作还会在取消请求期间向sysadmin帐户授予NT Service\SQLServerExtension角色。 删除分布式可用性组时,需要此角色。
迁移评估
迁移评估(预览版) 默认处于启用状态。
如果禁用该功能,则扩展将撤销以下权限,除非其他已启用的功能需要这些权限:
| 对象类型 | 数据库或对象名称 | Privilege | 
|---|---|---|
| Database | 所有数据库 | SELECT sys.sqlexpressiondependencies | 
| Database | msdb | EXECUTE dbo.agentdatetime | 
| Database | msdb | SELECT dbo.syscategories | 
| Database | msdb | SELECT dbo.sysjobhistory | 
| Database | msdb | SELECT dbo.sysjobs | 
| Database | msdb | SELECT dbo.sysjobsteps | 
| Database | msdb | SELECT dbo.sysmailaccount | 
| Database | msdb | SELECT dbo.sysmailprofile | 
| Database | msdb | SELECT dbo.sysmailprofileaccount | 
| Database | msdb | SELECT dbo.syssubsystems | 
Purview
默认情况下,Purview 功能处于禁用状态。
如果启用该功能,扩展会自动授予以下权限:
| 对象类型 | 数据库或对象名称 | Privilege | 
|---|---|---|
| Database | 所有数据库 | EXECUTE | 
| Database | 所有数据库 | SELECT | 
| Server | CONNECT ANY DATABASE | |
| Server | VIEW ANY DATABASE | 
实时 SQL 权限
某些 SQL 权限仅在需要执行特定作时分配,并在需要权限的作完成后立即撤销。 如果吊销无法执行,则每 50 分钟运行一次后台清理作业会自动撤销已过时的权限。
将实时权限分配给服务帐户:
- 
              NT Service\SQLServerExtension如果启用了最小特权,则为
- 如果禁用了最低权限,则本地系统帐户。
目前,以下功能使用实时权限:
- 使用托管实例链接迁移选项时进行数据库迁移。
其他权限
- 服务帐户访问扩展服务的权限,并配置自动恢复。
- 服务帐户的登录即服务权限。