Мониторинг с минимальным уровнем привилегий

Все рабочие процессы (обнаружения, правила, мониторы и действия) в этом пакете управления привязаны к профилям запуска от имени.

Чтобы включить мониторинг с минимальным уровнем привилегий, требуется предоставить соответствующие разрешения учетным записям запуска от имени и привязать эти учетные записи к соответствующим профилям запуска от имени.

Примечание

Монитор числа виртуальных файлов журнала (VLF) не поддерживает мониторинг с низким уровнем привилегий в SQL Server 2012 и 2014.

Мониторинг с использованием агента

В этом разделе объясняется, как настроить мониторинг с минимальным уровнем привилегий с использованием агента.

В Active Directory

  1. В Active Directory создайте следующих пользователей домена для доступа к целевым экземплярам SQL Server с минимальным уровнем привилегий:

    • SQLTaskAction
    • SQLDiscovery
    • SQLMonitor
  2. Создайте группу домена с именем SQLMPLowPriv и добавьте следующих пользователей домена в эту группу:

    • SQLDiscovery
    • SQLMonitor
  3. Добавьте группу SQLMPLowPriv в группу безопасности Active Directory Контроллеры домена только для чтения.

На агентах

  1. Предоставьте пользователю SQLTaskAction и группе SQLMPLowPriv разрешение на чтение в разделе реестра: HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server

  2. На каждом отслеживаемом экземпляре предоставьте группе SQLMPLowPriv разрешение на чтение в разделе реестра: HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\[InstanceID]\MSSQLServer\Parameters

  3. Добавьте пользователей SQLTaskAction и SQLMonitor в локальную группу безопасности Active Directory Читатели журналов событий.

  4. Предоставьте разрешения Выполнение методов, Включение учетной записи, Удаленное включение и Чтение параметров безопасности пользователю SQLTaskAction и пользователям SQLMPLowPriv для следующих пространств имен WMI с помощью элемента управления WMI:

    • ROOT
    • ROOT\CIMV2
    • ROOT\DEFAULT
    • ROOT\Microsoft\SqlServer\ComputerManagement11 (при наличии)
    • ROOT\Microsoft\SqlServer\ComputerManagement12 (при наличии)
    • ROOT\Microsoft\SqlServer\ComputerManagement13 (при наличии)
    • ROOT\Microsoft\SqlServer\ComputerManagement14 (при наличии)
    • ROOT\Microsoft\SqlServer\ComputerManagement15 (при наличии)
    • ROOT\Microsoft\SqlServer\ComputerManagement16 (при наличии)
  5. Настройте локальную политику безопасности Разрешить локальный вход в систему, чтобы разрешить пользователю SQLTaskAction и пользователям группы домена SQLMPLowPriv локальный вход.

    Примечание

    Если вы используете версии System Center Operations Manager 2012 R2 или 2016, выполните описанные выше действия, чтобы предоставить разрешение Разрешить локальный вход для учетных записей запуска от имени. Подробнее.

  6. Настройте локальную политику безопасности Вход в качестве службы , чтобы разрешить пользователю SQLTaskAction и пользователям группы домена SQLMPLowPriv выполнять вход в качестве службы.

    Примечание

    Если вы используете версии System Center Operations Manager 2019 и более поздних версий, выполните описанные выше действия, чтобы предоставить разрешение вход в качестве службы для учетных записей запуска от имени. Подробнее.

  7. В свойствах Microsoft Monitoring Agent для выбранной группы управления задайте учетную запись Local System для выполнения действий агента.

Дополнительные действия для экземпляров SQL Server в кластере

  1. Выполните описанные выше действия для каждого узла кластера.

  2. Предоставьте SQLMPLowPriv и SQLTaskAction разрешения DCOM Удаленный запуск и Удаленная активация с помощью DCOMCNFG.

  3. Включите службу удаленного управления Windows в Брандмауэре Windows.

  4. Предоставьте группе SQLMPLowPrivПолный доступ к кластеру с помощью диспетчера отказоустойчивости кластеров.

  5. Предоставьте разрешения Выполнение методов, Включение учетной записи, Удаленное включение и Чтение параметров безопасности пользователю SQLTaskAction и пользователям SQLMPLowPriv для пространства имен WMI root\MSCluster с помощью элемента управления WMI.

На экземплярах SQL Server

  1. Откройте среду SQL Server Management Studio и подключитесь к экземпляру ядра СУБД SQL Server.

  2. В SQL Server Management Studio для каждого экземпляра ядра СУБД SQL Server, работающего на отслеживаемом сервере, используйте следующий скрипт SQL, чтобы создать и задать конфигурацию минимальных привилегий для учетной записи домена SQLMPLowPriv:

    USE [master];
    SET NOCOUNT ON;
    /*The domain account that System Center Operations Manager will use
    to access the SQL Server instance*/
    DECLARE @accountname sysname = 'SQLMPLowPriv';
    /*In some cases, administrators change the 'sa' account default name.
    This will retrieve the name of the account associated to princicpal_id = 1*/
    DECLARE @sa_name sysname = 'sa';
    SELECT @sa_name = [name] FROM sys.server_principals WHERE principal_id = 1
    /*Create the server role with authorization to the account associated to principal id = 1.
    Create the role only if it does not already exist*/
    DECLARE @createSrvRoleCommand nvarchar(200);
    SET @createSrvRoleCommand = 'IF NOT EXISTS (SELECT 1 FROM sys.server_principals
        WHERE [name] = ''SCOM_SQLMPLowPriv'') BEGIN
        CREATE SERVER ROLE [SCOM_SQLMPLowPriv] AUTHORIZATION [' + @sa_name + ']; END'
    EXEC(@createSrvRoleCommand);
    GRANT VIEW ANY DATABASE TO [SCOM_SQLMPLowPriv];
    GRANT VIEW ANY DEFINITION TO [SCOM_SQLMPLowPriv];
    GRANT VIEW SERVER STATE TO [SCOM_SQLMPLowPriv];
    DECLARE @createLoginCommand nvarchar(200);
    SET @createLoginCommand = 'IF NOT EXISTS (SELECT 1 FROM sys.server_principals
        WHERE [name] = '''+ @accountname +''') BEGIN
        CREATE LOGIN '+ QUOTENAME(@accountname) +' FROM WINDOWS WITH DEFAULT_DATABASE=[master]; END'
    EXEC(@createLoginCommand);
    -- Add the login to the user-defined server role
    DECLARE @addServerMemberCommand nvarchar(200);
    SET @addServerMemberCommand = 'ALTER SERVER ROLE [SCOM_SQLMPLowPriv] ADD MEMBER '
    + QUOTENAME(@accountname) + ';'
    EXEC(@addServerMemberCommand);
    -- Add the login and database role to each database
    DECLARE @createDatabaseUserAndRole nvarchar(max);
    SET @createDatabaseUserAndRole = '';
    SELECT @createDatabaseUserAndRole = @createDatabaseUserAndRole + ' USE ' + QUOTENAME(db.name) + ';
        IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE [name] = '''+ @accountname +''') BEGIN
        CREATE USER ' + QUOTENAME(@accountname) + ' FOR LOGIN ' + QUOTENAME(@accountname) + '; END;
        IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE [name] = ''SCOM_SQLMPLowPriv'') BEGIN
        CREATE ROLE [SCOM_SQLMPLowPriv] AUTHORIZATION [dbo]; END;
        ALTER ROLE [SCOM_SQLMPLowPriv] ADD MEMBER ' + QUOTENAME(@accountname) + ';'
    FROM sys.databases db
        LEFT JOIN sys.dm_hadr_availability_replica_states hadrstate ON
            db.replica_id = hadrstate.replica_id
    WHERE db.database_id <> 2
        AND db.user_access = 0
        AND db.state = 0
        AND db.is_read_only = 0
        AND (hadrstate.role = 1 or hadrstate.role is null);
    EXEC(@createDatabaseUserAndRole);
    -- Add database specific permissions to database role
    USE [master];
    GRANT EXECUTE ON sys.xp_readerrorlog TO [SCOM_SQLMPLowPriv];
    GRANT EXECUTE ON sys.xp_instance_regread TO [SCOM_SQLMPLowPriv];
    USE [msdb];
    GRANT SELECT ON [dbo].[sysjobschedules] TO [SCOM_SQLMPLowPriv];
    GRANT SELECT ON [dbo].[sysschedules] TO [SCOM_SQLMPLowPriv];
    GRANT SELECT ON [dbo].[syscategories] TO [SCOM_SQLMPLowPriv];
    GRANT SELECT ON [dbo].[sysjobs_view] TO [SCOM_SQLMPLowPriv];
    GRANT SELECT ON [dbo].[sysjobactivity] TO [SCOM_SQLMPLowPriv];
    GRANT SELECT ON [dbo].[sysjobhistory] TO [SCOM_SQLMPLowPriv];
    GRANT SELECT ON [dbo].[syssessions] TO [SCOM_SQLMPLowPriv];
    GRANT SELECT ON [dbo].[log_shipping_primary_databases] TO [SCOM_SQLMPLowPriv];
    GRANT SELECT ON [dbo].[log_shipping_secondary_databases] TO [SCOM_SQLMPLowPriv];
    GRANT SELECT ON [dbo].[log_shipping_monitor_history_detail] TO [SCOM_SQLMPLowPriv];
    GRANT SELECT ON [dbo].[log_shipping_monitor_secondary] TO [SCOM_SQLMPLowPriv];
    GRANT SELECT ON [dbo].[log_shipping_monitor_primary] TO [SCOM_SQLMPLowPriv];
    GRANT EXECUTE ON [dbo].[sp_help_job] TO [SCOM_SQLMPLowPriv];
    GRANT EXECUTE ON [dbo].[agent_datetime] TO [SCOM_SQLMPLowPriv];
    GRANT EXECUTE ON [dbo].[SQLAGENT_SUSER_SNAME] TO [SCOM_SQLMPLowPriv];
    ALTER ROLE [SQLAgentReaderRole] ADD MEMBER [SCOM_SQLMPLowPriv];
    

В общих ресурсах SMB

  1. Предоставьте разрешения на общий доступ, открыв диалоговое окно свойств общего доступа для общего ресурса, на котором размещаются файлы данных SQL Server или файлы журнала транзакций SQL Server.

  2. Предоставьте разрешение на ЧтениеSQLMPLowPriv.

  3. Предоставьте разрешения NTFS, открыв диалоговое окно свойств для общей папки и перейдя на вкладку Безопасность.

  4. Предоставьте разрешение на ЧтениеSQLMPLowPriv.

Дополнительные шаги для задач на агентах

Для выполнения некоторых дополнительных задач System Center Operations Manager требуются повышенные права доступа на компьютере агента и/или в базе данных.

Выполните следующие действия на компьютере агента или в базе данных только в том случае, если необходимо разрешить оператору консоли System Center Operations Manager выполнять действия по устранению проблем:

  1. Если задача связана с запуском или остановкой службы NT (например, службы ядра СУБД, службы агента SQL Server, службы полнотекстового поиска SQL, служб Integration Services), то на компьютере агента назначьте пользователю SQLTaskAction разрешение на запуск или остановку службы NT. При этом устанавливается дескриптор безопасности службы. Дополнительные сведения см. в разделе Sc sdset.

    Считывает существующие привилегии для данной службы с помощью sc sdshow и предоставляет дополнительные привилегии пользователю SQLTaskAction .

    Например, предположим, что результаты выполнения команды sdshow для службы SQL Server выглядят следующим образом:

    *D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)*
    

    В этом случае следующая команда предоставит пользователю SQLTaskAction достаточные разрешения для запуска и остановки службы SQL Server. Замените "SQLServerServiceName" и "SID for SQLTaskAction" соответствующими значениями, оставив все содержимое команды в одной строке.

    *sc sdset SQLServerServiceName D:(A;;GRRPWP;;;SID for SQLTaskAction)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)*
    
  2. В SQL Server Management Studio для каждого экземпляра ядра СУБД SQL Server, запущенного на отслеживаемом сервере, создайте имя входа для SQLTaskAction:

    USE [msdb];
    CREATE USER [SQLTaskAction] FOR LOGIN [SQLTaskAction];
    
  3. Предоставьте роль базы данных db_owner каждой базе данных, если задача связана с выполнением проверок баз данных:

    • Проверка каталога (DBCC)
    • Проверка базы данных (DBCC)
    • Проверка диска (DBCC) (вызывает DBCC CHECKALLOC)
    USE [yourdatabase];
    ALTER ROLE [db_owner] ADD MEMBER [SQLTaskAction];
    
  4. Предоставьте разрешение ALTER ANY DATABASE имени входа SQLTaskAction для запуска задачи, если задача связана с изменением состояния базы данных:

    • Перевод базы данных в режим «вне сети»
    • Перевод базы данных в режим «в сети»
    • Перевод базы данных в аварийное состояние
    USE [master];
    GRANT ALTER ANY DATABASE TO [SQLTaskAction];
    

В System Center Operations Manager

  1. Импортируйте пакет управления SQL Server.

  2. Создайте следующие учетные записи запуска от имени в Windows:

    • SQLTaskAction
    • SQLDiscovery
    • SQLMonitor
  3. В консоли System Center Operations Manager настройте профили запуска от имени следующим образом:

    • Настройте профиль запуска от имени Задача Microsoft SQL Server, чтобы использовать учетную запись запуска от имени SQLTaskAction.
    • Настройте профиль запуска от имени Обнаружение Microsoft SQL Server, чтобы использовать учетную запись запуска от имени SQLDiscovery.
    • Настройте профиль запуска от имени Мониторинг Microsoft SQL Server, чтобы использовать учетную запись запуска от имени SQLMonitor.

Чтобы избежать проблем с мониторингом SQL Server, учетные записи запуска от имени SQLTaskAction, SQLDiscovery и SQLMonitor должны использоваться для управления целевым объектом как объектом Компьютер Windows.

Безагентный мониторинг

[Применимо к SQL Server в Windows и Linux]

В этом разделе объясняется, как настроить мониторинг с минимальным уровнем привилегий без использования агента.

На экземплярах SQL Server

  1. Откройте среду SQL Server Management Studio и подключитесь к экземпляру ядра СУБД SQL Server.

  2. В SQL Server Management Studio для каждого экземпляра ядра СУБД SQL Server, работающего на отслеживаемом сервере, используйте следующий скрипт SQL, чтобы создать и задать конфигурацию минимальных привилегий для учетной записи SQLMPLowPriv с аутентификацией SQL Server:

    USE [master];
    SET NOCOUNT ON;
    /*The user account with SQL Server authentication that System Center Operations Manager
    will use to access the SQL Server instance*/
    DECLARE @accountname sysname = 'SQLMPLowPriv';
    /*In some cases, administrators change the 'sa' account default name.
    This will retrieve the name of the account associated to princicpal_id = 1*/
    DECLARE @sa_name sysname = 'sa';
    SELECT @sa_name = [name] FROM sys.server_principals WHERE principal_id = 1
    /*Create the server role with authorization to the account associated to principal id = 1.
    Create the role only if it does not already exist*/
    DECLARE @createSrvRoleCommand nvarchar(200);
    SET @createSrvRoleCommand = 'IF NOT EXISTS (SELECT 1 FROM sys.server_principals
       WHERE [name] = ''SCOM_SQLMPLowPriv'') BEGIN
       CREATE SERVER ROLE [SCOM_SQLMPLowPriv] AUTHORIZATION [' + @sa_name + ']; END'
    EXEC(@createSrvRoleCommand);
    GRANT VIEW ANY DATABASE TO [SCOM_SQLMPLowPriv];
    GRANT VIEW ANY DEFINITION TO [SCOM_SQLMPLowPriv];
    GRANT VIEW SERVER STATE TO [SCOM_SQLMPLowPriv];
    DECLARE @createLoginCommand nvarchar(200);
    /*Create the login with SQL Server authentication using the password,
    and replace it with your value below*/
    SET @createLoginCommand = 'IF NOT EXISTS (SELECT 1 FROM sys.server_principals
       WHERE [name] = '''+ @accountname +''') BEGIN
       CREATE LOGIN '+ QUOTENAME(@accountname) +' WITH PASSWORD=N'''', DEFAULT_DATABASE=[master]; END'
    EXEC(@createLoginCommand);
    -- Add the login to the user-defined server role
    DECLARE @addServerMemberCommand nvarchar(200);
    SET @addServerMemberCommand = 'ALTER SERVER ROLE [SCOM_SQLMPLowPriv] ADD MEMBER '
    + QUOTENAME(@accountname) + ';'
    EXEC(@addServerMemberCommand);
    -- Add the login and database role to each database
    DECLARE @createDatabaseUserAndRole nvarchar(max);
    SET @createDatabaseUserAndRole = '';
    SELECT @createDatabaseUserAndRole = @createDatabaseUserAndRole + ' USE ' + QUOTENAME(db.name) + ';
       IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE [name] = '''+ @accountname +''') BEGIN
       CREATE USER ' + QUOTENAME(@accountname) + ' FOR LOGIN ' + QUOTENAME(@accountname) + '; END;
       IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE [name] = ''SCOM_SQLMPLowPriv'') BEGIN
       CREATE ROLE [SCOM_SQLMPLowPriv] AUTHORIZATION [dbo]; END;
       ALTER ROLE [SCOM_SQLMPLowPriv] ADD MEMBER ' + QUOTENAME(@accountname) + ';'
    FROM sys.databases db
       LEFT JOIN sys.dm_hadr_availability_replica_states hadrstate ON
           db.replica_id = hadrstate.replica_id
    WHERE db.database_id <> 2
       AND db.user_access = 0
       AND db.state = 0
       AND db.is_read_only = 0
       AND (hadrstate.role = 1 or hadrstate.role is null);
    EXEC(@createDatabaseUserAndRole);
    -- Add database specific permissions to database role
    USE [master];
    GRANT EXECUTE ON sys.xp_readerrorlog TO [SCOM_SQLMPLowPriv];
    GRANT EXECUTE ON sys.xp_instance_regread TO [SCOM_SQLMPLowPriv];
    USE [msdb];
    GRANT SELECT ON [dbo].[sysjobschedules] TO [SCOM_SQLMPLowPriv];
    GRANT SELECT ON [dbo].[sysschedules] TO [SCOM_SQLMPLowPriv];
    GRANT SELECT ON [dbo].[syscategories] TO [SCOM_SQLMPLowPriv];
    GRANT SELECT ON [dbo].[sysjobs_view] TO [SCOM_SQLMPLowPriv];
    GRANT SELECT ON [dbo].[sysjobactivity] TO [SCOM_SQLMPLowPriv];
    GRANT SELECT ON [dbo].[sysjobhistory] TO [SCOM_SQLMPLowPriv];
    GRANT SELECT ON [dbo].[syssessions] TO [SCOM_SQLMPLowPriv];
    GRANT SELECT ON [dbo].[log_shipping_primary_databases] TO [SCOM_SQLMPLowPriv];
    GRANT SELECT ON [dbo].[log_shipping_secondary_databases] TO [SCOM_SQLMPLowPriv];
    GRANT SELECT ON [dbo].[log_shipping_monitor_history_detail] TO [SCOM_SQLMPLowPriv];
    GRANT SELECT ON [dbo].[log_shipping_monitor_secondary] TO [SCOM_SQLMPLowPriv];
    GRANT SELECT ON [dbo].[log_shipping_monitor_primary] TO [SCOM_SQLMPLowPriv];
    GRANT EXECUTE ON [dbo].[sp_help_job] TO [SCOM_SQLMPLowPriv];
    GRANT EXECUTE ON [dbo].[agent_datetime] TO [SCOM_SQLMPLowPriv];
    GRANT EXECUTE ON [dbo].[SQLAGENT_SUSER_SNAME] TO [SCOM_SQLMPLowPriv];
    ALTER ROLE [SQLAgentReaderRole] ADD MEMBER [SCOM_SQLMPLowPriv];
    

Для выполнения некоторых дополнительных задач System Center Operations Manager требуются повышенные права доступа на компьютере агента и/или в базе данных.

Выполните следующие действия только в том случае, если необходимо разрешить оператору консоли System Center Operations Manager выполнять действия по устранению проблем на этом целевом объекте:

  1. В SQL Server Management Studio для каждого экземпляра ядра СУБД SQL Server, запущенного на отслеживаемом сервере, создайте имя входа для SQLTaskAction:

    USE [msdb];
    CREATE USER [SQLTaskAction] FOR LOGIN [SQLTaskAction];
    
  2. Предоставьте роль базы данных db_owner каждой базе данных, если задача связана с выполнением проверок баз данных:

    • Проверка каталога (DBCC)
    • Проверка базы данных (DBCC)
    • Проверка диска (DBCC) (вызывает DBCC CHECKALLOC)
    USE [yourdatabase];
    ALTER ROLE [db_owner] ADD MEMBER [SQLTaskAction];
    
  3. Предоставьте разрешение ALTER ANY DATABASE имени входа SQLTaskAction для запуска задачи, если задача связана с изменением состояния базы данных:

    • Перевод базы данных в режим «вне сети»
    • Перевод базы данных в режим «в сети»
    • Перевод базы данных в аварийное состояние
    USE [master];
    GRANT ALTER ANY DATABASE TO [SQLTaskAction];
    

Использование мастера добавления объекта мониторинга

Чтобы настроить безагентный мониторинг с минимальным уровнем привилегий с помощью мастера добавления объекта мониторинга, выполните действия, описанные в разделе Настройка режима безагентного мониторинга, но со следующими изменениями:

  1. В окне Мастер добавления мониторинга выберите Добавить экземпляры.

  2. В окне Добавление экземпляров выберите общую учетную запись запуска от имени с соответствующим именем входа SQL с низким уровнем привилегий и укажите источники данных и (или) строки подключения.

    Пример:

    • 172.31.2.133;MachineName="W12BOX-839";InstanceName="MSSQLSERVER";Platform="Windows"
    • 172.31.2.133,50626;MachineName="W12BOX-839";InstanceName="SQLEXPRESS";Platform="Windows"
    • 172.17.5.115;MachineName="ubuntu";InstanceName="MSSQLSERVER";Platform="Linux"

    Также можно создать новую учетную запись запуска от имени. Для этого в окне Добавление экземпляров выберите Создать, введите новое имя для учетной записи запуска от имени и укажите учетные данные для доступа к SQL Server, которые вы хотите отслеживать.

    Снимок экрана: учетная запись запуска от имени.

    После установки подключения можно просматривать и изменять свойства добавленного экземпляра.

    Снимок экрана: свойства экземпляра.

Смешанный мониторинг

Чтобы настроить смешанный мониторинг с минимальным уровнем привилегий, выполните действия, описанные в разделе Мониторинг с использованием агента, и сделайте следующее:

Управление удаленным доступом к WMI

Чтобы настроить безопасность для конфигураций с учетными записями с минимальным уровнем привилегий, выполните следующие действия на каждом сервере мониторинга, находящемся в смешанном режиме:

  1. Запустите консоль mmc.exe и добавьте следующие оснастки:

    • Службы компонентов
    • Элемент управления WMI (для локального компьютера)
  2. Разверните узел Службы компонентов, щелкните правой кнопкой мыши узел Мой компьютер и выберите пункт Свойства.

    Снимок экрана: открытие свойств.

  3. Откройте вкладку Безопасность COM.

  4. В разделе Разрешения на запуск и активацию выберите Изменить ограничения.

    Снимок экрана: ограничения редактирования.

  5. Предоставьте учетной записи удаленного компьютера следующие разрешения:

    • Удаленный запуск
    • Удаленная активация

    Снимок экрана: активация разрешений.

  6. Перейдите в оснастку Элемент управления WMI и откройте ее свойства.

  7. Откройте вкладку Безопасность и выберите следующие пространства имен:

    • ROOT\CIMV2
    • ROOT\Microsoft\SqlServer
    • ROOT\Microsoft\SqlServer\ComputerManagement11 (при наличии)
    • ROOT\Microsoft\SqlServer\ComputerManagement12 (при наличии)
    • ROOT\Microsoft\SqlServer\ComputerManagement13 (при наличии)
    • ROOT\Microsoft\SqlServer\ComputerManagement14 (при наличии)
    • ROOT\Microsoft\SqlServer\ComputerManagement15 (при наличии)
    • ROOT\Microsoft\SqlServer\ComputerManagement16 (при наличии)
  8. Выберите Безопасность.

  9. Предоставьте целевому компьютеру следующие разрешения:

    • Включить учетную запись
    • Включить удаленно

    Снимок экрана: разрешения безопасности.

  10. Выберите Дополнительно.

  11. Выберите целевую учетную запись и нажмите кнопку Изменить.

  12. В раскрывающемся списке Применяется к выберите Только это пространство имен.

  13. В разделе Разрешения установите следующие флажки:

    • Включить учетную запись
    • Включить удаленно

    Снимок экрана: настройка разрешений CIMV.

Предоставление разрешений службы

Чтобы получить сведения о службах, предоставьте необходимые разрешения, выполнив приведенные ниже действия:

  1. Откройте консоль PowerShell.

  2. Выполните следующую команду, чтобы получить идентификатор безопасности пользователя Spotlight.

    function GetSidByName($userName){
    $objUser = New-Object System.Security.Principal.NTAccount($userName)
    $strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
    return $strSID.Value
    }
    GetSidByName 'domainName\userName'
    

    Замените domainName\userName на имя домена и имя пользователя для учетной записи пользователя Spotlight.

    Снимок экрана замены пользователя spotlite.

  3. В командной строке Windows выполните следующую команду, чтобы получить текущий SDDL для диспетчера служб:

    sc sdshow scmanager > file.txt
    

    SDDL сохраняется в файл file.txt и выглядит следующим образом:

    D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD).
    
  4. Измените строку SDDL, скопировав раздел SDDL, который заканчивается на IU (интерактивные пользователи).

    Этот раздел заключен в круглые скобки (т. е. A;;CCLCRPRC;;;IU). Вставьте это предложение непосредственно после скопированного предложения.

    Замените строку IU идентификатором безопасности пользователя Spotlight в следующем тексте.

    Новый SDDL выглядит примерно так:

    D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU) (A;;CCLCRPRC;;;S-1-5-21-214A909598-1293495619-13Z157935-75714)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA) S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)
    
  5. Задайте учетные данные безопасности для доступа к диспетчеру управления службами с помощью команды sdset .

    sc sdset scmanager "D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)(A;;CCLCRPRC;;;S-1-5-21-214A909598-1293495619-13Z157935-75714)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)"
    
  6. Задайте права для SQL Server, агента SQL и служб SQL Full-text Filter Daemon Launcher с помощью программы командной строки SubInACL для идентификатора безопасности пользователя Spotlight.

    Запустите программу со следующими параметрами:

    subinacl.exe /service mssqlserver /GRANT= S-1-5-21-214A909598-1293495619-13Z157935-75714=LQSEI
    
    subinacl.exe /service sqlserveragent /GRANT= S-1-5-21-214A909598-1293495619-13Z157935-75714=LQSEI
    
    subinacl.exe /service mssqlfdlauncher /GRANT= S-1-5-21-214A909598-1293495619-13Z157935-75714=LQSEI
    

    Снимок экрана: выполнение subinacl.

    Следующие права можно прочитать следующим образом:

    • L: считывание управляющих параметров
    • Q: запрос конфигурации службы
    • S: запрос состояния службы
    • E: перечисление зависимых служб
    • I: опрос службы
  7. Задайте права для ClusSvc (служба кластеров) с помощью программы командной строки SubInACL для идентификатора безопасности пользователя Spotlight .

    Запустите программу со следующими параметрами:

    subinacl.exe /service clussvc /GRANT= S-1-5-21-214A909598-1293495619-13Z157935-75714=LQSEI
    

Управление удаленным доступом к реестру

Создайте раздел реестра для управления удаленным доступом к реестру.

Чтобы создать ключ, выполните следующие действия:

  1. Откройте редактор реестра и найдите следующий раздел. HKLM\SYSTEM\CurrentControlSet\Control

  2. В меню Правка выберите Добавить ключ и введите следующие значения:

    • Имя раздела: SecurePipeServers
    • Класс: REG_SZ
  3. Найдите следующий ключ. HKLM\SYSTEM\CurrentControlSet\Control\SecurePipeServers

  4. В меню Правка выберите Добавить ключ и введите следующие значения:

    • Имя раздела: winreg
    • Класс: REG_SZ
  5. Откройте следующий раздел: HKLM\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg

  6. В меню Правка выберите Добавить ключ и введите следующие значения:

    • Имя значения: Description
    • Тип данных: REG_SZ
    • Строка: Registry Server
  7. Откройте следующий раздел: HKLM\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg

  8. Щелкните правой кнопкой мыши winreg, выберите Разрешения и измените текущие разрешения или добавьте пользователей или группы, которым вы хотите предоставить доступ.

  9. Закройте редактор реестра и перезагрузите Windows.