powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Права доступа к master..xp_cmdshell
8 сообщений из 8, страница 1 из 1
Права доступа к master..xp_cmdshell
    #32022335
DennisL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне необходимо посылать сообщения от одних пользователей другим из сохраненных продцедур, для этого я использую master..xp_cmdshell. Но для того чтобы пользователь мог послать сообщение необходимо присвоить ему права Execute не только на продцедуру из которой идет посылка сообщения, но и на xp_cmdshell ... что нехотелось бы делать из соображений безопасности ...
Как можно обойти это ограничение ?
...
Рейтинг: 0 / 0
Права доступа к master..xp_cmdshell
    #32022338
dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не требуется моментальной передачи сообщения, а надо просто послать уведомление, пусть и с некоторой задержкой, записывайте из процедуры сообщения в некоторую табличку. И сделайте Job который булет с определенной периодичностью (например раз в минуту) рассылать эти сообщения (владельцем джоба сделайте админа). Правда будет некоторая задержка, и доп. нагрузка на сервер...
...
Рейтинг: 0 / 0
Права доступа к master..xp_cmdshell
    #32022342
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чтобы пользователь мог послать сообщение необходимо присвоить ему права Execute не только на продцедуру из которой идет посылка сообщения, но и на xp_cmdshell ... что нехотелось бы делать из соображений безопасности

BOL - Transact-SQL Reference - SET - System Stored Procedures - xp_sqlagent_proxy_account
" SQL Server Agent proxy accounts allow SQL Server users who do not belong to the sysadmin fixed server role to execute xp_cmdshell and own SQL Server Agent jobs. The administrators can assign appropriate security permissions to the proxy account to control the ability of these jobs to access resources in the network.

When a SQL Server user executes a command prompt command using xp_cmdshell, the command must execute in the security context of a Windows account. If the SQL Server user is a member of the sysadmin fixed server role, SQL Server executes the command prompt command using the Windows account under which the SQL Server service is running. If the SQL Server user executing xp_cmdshell is not a member of the sysadmin fixed server role, SQL Server executes the command using the Windows account specified as the SQL Server Agent proxy account . If no SQL Server Agent proxy account has been set, the user gets an error.

Syntax
xp_sqlagent_proxy_account
{ N'GET' |
N'SET', N'agent_domain_name', N'agent_username', N'agent_password'
}
"
NB!
- При использовании xp_sqlagent_proxy_account проверка заданной учетной записи не производиться
- Все параметры чувствительны к регистру

Эту же операцию можно проделать в EM - Managament - SQL Server Agent - Properties - Job System - секция Non-SysAdmin job step proxy account
...
Рейтинг: 0 / 0
Права доступа к master..xp_cmdshell
    #32022389
DennisL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я правильно понял что :
я создаю SQL Server Agent proxy account и затем присваюваю пользователям права execute на xp_cmdshell, но они будут запускать эти команды не с администратороского account а с SQL Server proxy account (которому можно обрезать все права на сервере ...)
Либо пользователям не надо права execute на xp_cmdshell ?
...
Рейтинг: 0 / 0
Права доступа к master..xp_cmdshell
    #32022399
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вы хотите, чтобы пользователь сам запускал xp_cmdshell, то конечно ему нужны соответсвующие права.
Либо можно создать свою процедуру(с владельцем dbo), которая будет запускать xp_cmdshell с уже нужными параметрами и только с ними и разрешить пользователю запускать эту процедуру. Тогда явные права на xp_cmdshell пользователю не нужны.

Но и в том и другом случае права для запущенной через xp_cmdshell программы будут определяться SQLServerAgentproxyaccount - ом (если пользователь не sysadmin)
...
Рейтинг: 0 / 0
Права доступа к master..xp_cmdshell
    #32022407
DenisL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, все понятно !
...
Рейтинг: 0 / 0
Права доступа к master..xp_cmdshell
    #32022515
DennisL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все понятно но всеравно не работает !!!

Попробую описать ситуацию (может я что то упустил ...) :

1. В базе данных пользователей есть sp net_send_message она при необходимости вызываеться из других sp когда надо посылать сообщение, у пользователей есть права на все необходимые sp и на net_send_message

2. У пользователей нет не каких прав на master базу данных ...

3. В качестве account-а для SQL Server Agent proxy указан SQLAgentcmdexec account ктороый был создан автоматически при инсталяции SQL Server-а (может в этом и проблемма ?)

При выполнении пользователями sp содержащих net_send_message ошибки не происходит но и сообщения не посылаються ... У меня сообщения посылаються (т.к. я dbo)

в чем может быть проблемма ?
...
Рейтинг: 0 / 0
Права доступа к master..xp_cmdshell
    #32022546
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1.
При выполнении пользователями sp содержащих net_send_message ошибки не происходит но и сообщения не посылаються
Что возвращает xp_cmdshell ?

2. У SQLAgentcmdexec имеются достоточные права внешнуюю программу ?

3. Попробуйте использовать какую-нибудь другую локальную или доменную учетную запись. В качестве эксперимента можго попробовать и учетную запись локального администратора
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Права доступа к master..xp_cmdshell
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]