为 SQL Server 的 Azure 扩展配置 Windows 服务帐户和权限

适用范围:SQL Server

本文列出了在为 Azure Arc 启用的 SQL Server 实例使用最低特权时,SQL Server 的 Azure 扩展授予帐户NT Service\SQLServerExtension的权限。使用最低特权配置,扩展仅在 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_failoverMiLinkSqlServerAvailabilityGroups_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 sysadmin 1

1 如果启用了最低权限,则完整的直接转换作还会在直接转换期间向NT Service\SQLServerExtension帐户授予sysadmin角色。 需要此角色才能将分布式可用性组故障转移到 Azure SQL 托管实例。

“监视和直接转换”步骤中,扩展在为托管实例链接迁移选择“取消迁移”选项时授予实时权限。 扩展在取消迁移后撤消权限。

取消托管实例链接迁移的作在取消请求期间获取以下权限:

对象类型 数据库或对象名称 Privilege
Server ALTER ANY AVAILABILITY GROUP
Server ALTER ANY DATABASE
Server sysadmin 1

1 如果启用了最低权限,则取消作还会在取消请求期间向NT Service\SQLServerExtension帐户授予sysadmin角色。 删除分布式可用性组时,需要此角色。

迁移评估

迁移评估(预览版) 默认处于启用状态。

如果禁用该功能,则扩展将撤销以下权限,除非其他已启用的功能需要这些权限:

对象类型 数据库或对象名称 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 如果启用了最小特权,则为
  • 如果禁用了最低权限,则本地系统帐户。

目前,以下功能使用实时权限:

其他权限

  • 服务帐户访问扩展服务的权限,并配置自动恢复。
  • 服务帐户的登录即服务权限。