Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите разобраться с правами  [new]
Albert71
Member

Откуда:
Сообщений: 61
Коллеги, уже третий день бьюсь над этим. Подскажите что и как?

Имею следующюю ХП:
CREATE PROCEDURE Procedure_Name 
	@FilePath1 nvarchar(max) = '\\server\ShareName\', 
	@FileName nvarchar(max) = 'ShareFile.txt'
AS
BEGIN

   DECLARE @mysql nvarchar(max)

   SET @mysql = 'SET @doc = (SELECT * FROM 
		OPENROWSET(Bulk '''+@FilePath1+@FileName+''', SINGLE_BLOB) [rowsetresults])'

   EXECUTE sp_executesql @mysql, N'@doc xml OUTPUT', @doc = @doc OUTPUT;

END
Прочитав это:
Glory
...
Динамический запрос ВСЕГДА выполняется с ПРАВАМИ ПОЛЬЗОВАТЕЛЯ, ВЫЗВАВШЕГО ПРОЦЕДУРУ, а не с правами владельца процедуры
...
Делаю выводы, что если я запускаю эту хранимую процедуру, то у меня должны быть права на '\\server\ShareName\ShareFile.txt'. Проверяю в windows-проводнике. Всё открывает и с моей машины и с машины с SQL Server-ом.
В QA на машине, на когторой и установлен SQL Server, процедура выполняется без проблем.
Если выполняю с другой машины, то выдаёт что нет прав на '\\server\ShareName\ShareFile.txt'.
И на одной и на другой машине пользователь один и тот же. Используется windows-авторизация.

Ещё прочёл:
alex2
...
1) xp_cmdshell 'dir [ресурс]\*.*'
и
2) openrowset.

В первом случае, независимо от способа авторизации клиента на сервере, процесс xp_cmdshell 'dir ...' запускается от имени уч. записи сервера и все дальнейшие операции идут от имени этой уч. записи.

Во втором, при Windows-авторизации, сервер пытается "продвинуть" уч. данные подключенного пользователя на "третий" компутер
...

Ещё больше убедился в том что права на доступ к файлу дожны быть у МЕНЯ. Но у МЕНЯ они ЕСТЬ. Почему запущенная ХП из под моего пользователя на машине сервера имеет права на этот файл, а с моей машины нет? В выше приведённом посте что-то про это писалось, но я не уловил смысл.

Разъесните мне пожалуйста как победить?

P.S.
SELECT @@Version
Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86) Feb 9 2007 22:47:07 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
7 сен 09, 10:25    [7624872]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с правами  [new]
aleks2
Guest
Albert71,

Ну дык, включи аудит на файле/папке и изумись.

>>Динамический запрос ВСЕГДА выполняется с ПРАВАМИ ПОЛЬЗОВАТЕЛЯ, ВЫЗВАВШЕГО ПРОЦЕДУРУ, а не с правами владельца процедуры
Это верно... почти всегда. Применительно к самому серверу MS SQL - вопще всегда.

Но вот как, например, SA обратиться к файловой системе Windows? Windows про SA не слыхала.

OPENROWSET(Bulk 
выполняется под учеткой службы MSSQL.
7 сен 09, 10:34    [7624926]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с правами  [new]
Albert71
Member

Откуда:
Сообщений: 61
aleks2
...
Ну дык, включи аудит на файле/папке и изумись.
...
Ну дык, включал и изумлялся. Там вообще авторизация с пустым юзером.

Вы мне лучше скажите как решить данную задачу. А не чему изумляться. Чему изумиться, я и сам найду :-)
7 сен 09, 11:41    [7625445]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с правами  [new]
Glory
Member

Откуда:
Сообщений: 104760
Albert71
aleks2
...
Ну дык, включи аудит на файле/папке и изумись.
...
Ну дык, включал и изумлялся. Там вообще авторизация с пустым юзером.

Вы мне лучше скажите как решить данную задачу. А не чему изумляться. Чему изумиться, я и сам найду :-)

Для начала нужно понять, что права внутри сервера и снаружи - это разные права.
К внешним ресурсам сервер может доступаться только от имени сетевой учетной записи, под которой он запущен.
7 сен 09, 11:44    [7625459]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с правами  [new]
Albert71
Member

Откуда:
Сообщений: 61
Glory
...
Для начала нужно понять, что права внутри сервера и снаружи - это разные права.
...
Так. Понял.
Теперь объясните мне пожалуйста, почему запуская ХП из QA, запущенного на сервере, доступ к сетевому ресурсу есть. А из того же QA, но уже на другой машине (хотя и в том и в другом случае Windows-пользователь один и тот же), доступа уже нет?
7 сен 09, 11:58    [7625570]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с правами  [new]
Glory
Member

Откуда:
Сообщений: 104760
Albert71
Glory
...
Для начала нужно понять, что права внутри сервера и снаружи - это разные права.
...
Так. Понял.
Теперь объясните мне пожалуйста, почему запуская ХП из QA, запущенного на сервере, доступ к сетевому ресурсу есть. А из того же QA, но уже на другой машине (хотя и в том и в другом случае Windows-пользователь один и тот же), доступа уже нет?

Потому что авторизация у вас windows.

If a user uses a SQL Server login, the security profile of the SQL Server process account is used.

In contrast, if a SQL Server user logs on by using Windows Authentication, the user can read only those files that can be accessed by the user account, regardless of the security profile of the SQL Server process.

Про делегирование авторизации нужно читать

BOL Importing Bulk Data by Using BULK INSERT or OPENROWSET(BULK...) - Security Considerations
7 сен 09, 12:05    [7625632]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с правами  [new]
aleks2
Guest
Albert71,

Патамушта
в первом случае 2-е машины и приложение, работающее на первой, может непосредственно авторизоваться на второй ибо обладает знанием ПАРОЛЯ, а
во втором 3-и машины и для авторизации надо "передать" уч. данные (ПАРОЛЬ) через машину с SQL-сервером (что есть делегирование, т.е. 3-я машина должна на слово поверить второй, что приложение с 1-й авторизовано), а предать ПАРОЛЬ явно низзя, ибо охеренная дыра в безопасности. Делегирование - тонкий процесс - его надо включать и настраивать.
7 сен 09, 12:07    [7625648]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с правами  [new]
Albert71
Member

Откуда:
Сообщений: 61
aleks2 и Glory, спасибо вам большое за ликбез.

Теперпь вы мне просто скажите, можно ли решить поставленную задачу?
И если можно, то как именно?
7 сен 09, 12:32    [7625869]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с правами  [new]
Glory
Member

Откуда:
Сообщений: 104760
Albert71
aleks2 и Glory, спасибо вам большое за ликбез.

Теперпь вы мне просто скажите, можно ли решить поставленную задачу?
И если можно, то как именно?

А была поставлена задача ?
Или задача состоит в том, что кто-угодно должен загружать файлы на сервер с сетевых ресурсов ?
7 сен 09, 12:34    [7625883]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с правами  [new]
Albert71
Member

Откуда:
Сообщений: 61
Glory
Или задача состоит в том, что кто-угодно должен загружать файлы на сервер с сетевых ресурсов ?
Да.
7 сен 09, 12:44    [7625958]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с правами  [new]
Glory
Member

Откуда:
Сообщений: 104760
Albert71
Glory
Или задача состоит в том, что кто-угодно должен загружать файлы на сервер с сетевых ресурсов ?
Да.

Ну тогда вперед - настраивать security account delegation
7 сен 09, 12:45    [7625969]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с правами  [new]
Albert71
Member

Откуда:
Сообщений: 61
Glory
Albert71
Glory
Или задача состоит в том, что кто-угодно должен загружать файлы на сервер с сетевых ресурсов ?
Да.

Ну тогда вперед - настраивать security account delegation
Ну хватит меня уже мучать :-)
Скажите, где хоть это security account delegation настраивать?
7 сен 09, 12:56    [7626056]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с правами  [new]
Glory
Member

Откуда:
Сообщений: 104760
Albert71
Glory
Albert71
Glory
Или задача состоит в том, что кто-угодно должен загружать файлы на сервер с сетевых ресурсов ?
Да.

Ну тогда вперед - настраивать security account delegation
Ну хватит меня уже мучать :-)
Скажите, где хоть это security account delegation настраивать?

"security account delegation" - это не кнопка где-нибудь в SMS
Это комплекс действий, которые нужно выполнить на сервере и в домене
7 сен 09, 13:00    [7626093]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с правами  [new]
Albert71
Member

Откуда:
Сообщений: 61
А иным (более простым) способ это решить можно?
7 сен 09, 13:31    [7626358]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить