Что такое SQL Server Proxy Account Principals и зачем они нужны
SQL Server Proxy Account Principals — это механизм безопасности, позволяющий выполнять задания агента SQL Server от имени учетных записей с минимальными привилегиями. Это ключевой элемент для:
- Соблюдения принципа наименьших прав доступа
- Безопасного выполнения задач (например, скриптов PowerShell или CMD)
- Изоляции потенциальных угроз безопасности
- Управления доступом к сетевым ресурсам
Без proxy-учетных записей задания выполнялись бы под учетной записью службы агента SQL Server, что создает серьезные риски уязвимости.
Ключевые компоненты Proxy Account Principals
Для понимания работы механизма необходимо разобрать три элемента:
- Учетные данные (Credentials): Хранят аутентификационные данные Windows в SQL Server
- Proxy Account: Связывает учетные данные с подсистемами (например, PowerShell, SSIS)
- Principal: Роли или пользователи, которым разрешено использовать прокси
Пошаговая настройка Proxy Account в SQL Server
Шаг 1: Создание учетных данных
В SQL Server Management Studio (SSMS):CREATE CREDENTIAL MyProxyCred WITH IDENTITY = 'DomainUser', SECRET = 'Password';
Шаг 2: Создание прокси-учетной записиEXEC msdb.dbo.sp_add_proxy @proxy_name = 'PowerShellProxy', @credential_name = 'MyProxyCred', @enabled = 1;
Шаг 3: Назначение подсистемEXEC msdb.dbo.sp_grant_proxy_to_subsystem @proxy_name = 'PowerShellProxy', @subsystem_id = 3; -- 3 = PowerShell
Шаг 4: Предоставление прав доступа principalEXEC msdb.dbo.sp_grant_login_to_proxy @proxy_name = 'PowerShellProxy', @fixed_server_role = 'sysadmin';
Управление безопасностью и разрешениями
Критичные аспекты безопасности proxy-учетных записей:
- Используйте отдельные учетные записи Windows для каждого прокси
- Ограничивайте доступ к подсистемам (только необходимые)
- Регулярно аудитируйте назначенные права через системное представление
sysproxylogin
- Отключайте неиспользуемые прокси (
sp_update_proxy
)
Практические примеры использования
Сценарий 1: Безопасный доступ к файловым ресурсам
Proxy Account с доступом к конкретной сетевой папке позволяет скриптам агента читать/записывать файлы без прав службы SQL Server.
Сценарий 2: Вызов веб-сервисов
Прокси с аутентификацией в Active Directory для безопасных HTTP-запросов через задания агента.
FAQ: Частые вопросы о SQL Server Proxy Account
Q: Можно ли использовать один прокси для нескольких подсистем?
A: Да, через повторный вызов sp_grant_proxy_to_subsystem
для разных ID подсистем.
Q: Как просмотреть существующие proxy-учетные записи?
A: Запрос: SELECT * FROM msdb.dbo.sysproxies;
Q: Что делать при ошибке “The proxy is not active”?
A: Проверить состояние через sp_help_proxy
и включить прокси: EXEC sp_update_proxy @proxy_name = 'Name', @enabled = 1;
Q: Совместимы ли прокси с Azure SQL?
A: Нет, механизм доступен только в локальных и Managed Instance средаx.
Заключение
Proxy Account Principals в SQL Server — незаменимый инструмент для баланса между функциональностью и безопасностью. Правильная настройка позволяет изолировать привилегии, минимизировать поверхность атаки и соответствовать стандартам compliance. Регулярный аудит назначенных прав и мониторинг использования прокси через системные представления (sysproxies
, sysproxylogin
) должны стать частью рутинных процедур администрирования.