适用范围: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_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 |
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如果启用了最小特权,则为 - 如果禁用了最低权限,则本地系统帐户。
目前,以下功能使用实时权限:
- 使用托管实例链接迁移选项时进行数据库迁移。
其他权限
- 服务帐户访问扩展服务的权限,并配置自动恢复。
- 服务帐户的登录即服务权限。