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

Откуда:
Сообщений: 365
Есть CLR функция импорта данных из DBF файла (прямое чтение из файла).
Если запустить процедуру из MS Studio вручную - под какими правами будет доступ к файлу - под моими или под учеткой сервера.
24 окт 13, 14:16    [15026580]     Ответить | Цитировать Сообщить модератору
 Re: Под чьими права идет доступ к файлу в процедуре и Job'e  [new]
philips
Member

Откуда:
Сообщений: 365
Поясняю проблему.
Я импортирую ряд данных из DBF (это данные зарплаты). Когда они попадают в SQL то права на просмотр решаются средствами SQL согласно ролей.
На файловом сервере доступ также регламентирован учетками пользователей.
Но если импортировать данные то учетка SQL должна видеть эти файлы.
Т.е. все кто работает (разработчики) на этом сервеве могут при большом желании получить доступ к данным (импортировать) эти данные, что нежелательно ???
Есть ли другое решение ограничивающее доступ к файлам?
24 окт 13, 15:06    [15026981]     Ответить | Цитировать Сообщить модератору
 Re: Под чьими права идет доступ к файлу в процедуре и Job'e  [new]
Glory
Member

Откуда:
Сообщений: 104760
philips
Т.е. все кто работает (разработчики) на этом сервеве могут при большом желании получить доступ к данным (импортировать) эти данные, что нежелательно ???

А как разработчики могут запустить вашу clr, не имея прав на ее запуск ?
24 окт 13, 15:08    [15026998]     Ответить | Цитировать Сообщить модератору
 Re: Под чьими права идет доступ к файлу в процедуре и Job'e  [new]
Glory
Member

Откуда:
Сообщений: 104760
philips
од какими правами будет доступ к файлу - под моими или под учеткой сервера.

BOL - Impersonation and CLR Integration Security
24 окт 13, 15:10    [15027009]     Ответить | Цитировать Сообщить модератору
 Re: Под чьими права идет доступ к файлу в процедуре и Job'e  [new]
philips
Member

Откуда:
Сообщений: 365
Это общая CLR импорт из DBF (аналог OLE DB которое не любит главный программист) - т.е. ей могут пользоваться все.
Самая смешное что до этого сервер запускался под учеткой сисадмина - он видел все и это проблема была замаскирована.
Теперь это отдельная учетка и доступ надо прописывать отдельно - вот проблема и вскрылась.
24 окт 13, 15:14    [15027034]     Ответить | Цитировать Сообщить модератору
 Re: Под чьими права идет доступ к файлу в процедуре и Job'e  [new]
Glory
Member

Откуда:
Сообщений: 104760
philips
Это общая CLR импорт из DBF (аналог OLE DB которое не любит главный программист) - т.е. ей могут пользоваться все.

Если вы всем разрешили запуск, откуда тогда вопрос "все могут при большом желании получить доступ к данным" ?
24 окт 13, 15:15    [15027050]     Ответить | Цитировать Сообщить модератору
 Re: Под чьими права идет доступ к файлу в процедуре и Job'e  [new]
philips
Member

Откуда:
Сообщений: 365
Просто я наивно полагал что доступ к внешнему файлу идет под правами запустившего процедуру
24 окт 13, 15:18    [15027070]     Ответить | Цитировать Сообщить модератору
 Re: Под чьими права идет доступ к файлу в процедуре и Job'e  [new]
Glory
Member

Откуда:
Сообщений: 104760
philips
Просто я наивно полагал что доступ к внешнему файлу идет под правами запустившего процедуру

А почитать хелп ?
24 окт 13, 15:20    [15027082]     Ответить | Цитировать Сообщить модератору
 Re: Под чьими права идет доступ к файлу в процедуре и Job'e  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5133
Это вам не oracle. Тут разве что можно сделать execute as owner, и то не всегда прав хватит.
24 окт 13, 15:23    [15027102]     Ответить | Цитировать Сообщить модератору
 Re: Под чьими права идет доступ к файлу в процедуре и Job'e  [new]
philips
Member

Откуда:
Сообщений: 365
Честно прочитал хелп и ничего непонял - неверно знаний не хватает .
Как сделать чтобы CLR читало файл с правами вызвавшего фунцию либо user либо SQL Agent.
24 окт 13, 15:29    [15027135]     Ответить | Цитировать Сообщить модератору
 Re: Под чьими права идет доступ к файлу в процедуре и Job'e  [new]
Glory
Member

Откуда:
Сообщений: 104760
philips
Честно прочитал хелп и ничего непоня

Что именно прочитал и что именно не понял ?
24 окт 13, 15:30    [15027140]     Ответить | Цитировать Сообщить модератору
 Re: Под чьими права идет доступ к файлу в процедуре и Job'e  [new]
philips
Member

Откуда:
Сообщений: 365
Честно сказать ничего.
Самое главное это надо прописывать где то с коде СLR (C#) или при вызове фунцкции T-SQL.
24 окт 13, 15:35    [15027174]     Ответить | Цитировать Сообщить модератору
 Re: Под чьими права идет доступ к файлу в процедуре и Job'e  [new]
Glory
Member

Откуда:
Сообщений: 104760
philips
Честно сказать ничего.

Я вам указал на статью из хелпа
24 окт 13, 15:36    [15027185]     Ответить | Цитировать Сообщить модератору
 Re: Под чьими права идет доступ к файлу в процедуре и Job'e  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5133
http://technet.microsoft.com/ru-ru/library/ms345106.aspx
на русском, может понятнее будет
24 окт 13, 15:42    [15027220]     Ответить | Цитировать Сообщить модератору
 Re: Под чьими права идет доступ к файлу в процедуре и Job'e  [new]
philips
Member

Откуда:
Сообщений: 365
У меня сборка UNSAFE.
В Help прочитал

Доступ к внешним ресурсам

Если сборка с определяемыми пользователем типами (UDT), хранимыми процедурами или конструкциями другого типа зарегистрирована с набором разрешений SAFE, то управляемый код, который выполняется в конструкции, не способен получить доступ к внешним ресурсам. Но если задан набор разрешений EXTERNAL_ACCESS или UNSAFE и в управляемом коде предпринимается попытка получить доступ к внешним ресурсам, то в SQL Server применяются следующие правила.


Контекст выполнения соответствует имени входа Windows, контекст выполнения является исходным вызывающим объектом, а к вызывающему объекту применяется олицетворение.
	

При доступе используется контекст безопасности вызывающего объекта, а не учетная запись службы.
 


А по простому - мне что выполнить процедуру AS CALLED или это надо делать как то по другому
24 окт 13, 16:01    [15027342]     Ответить | Цитировать Сообщить модератору
 Re: Под чьими права идет доступ к файлу в процедуре и Job'e  [new]
philips
Member

Откуда:
Сообщений: 365
Проще говоря,
как (если возможно) в UNSAFE сборке обратится к внешнему файлу от имени определенного пользователя (не от имени SQL Server'a )
24 окт 13, 16:43    [15027625]     Ответить | Цитировать Сообщить модератору
 Re: Под чьими права идет доступ к файлу в процедуре и Job'e  [new]
Jaffar
Member

Откуда:
Сообщений: 633
Очевидно что манипуляции в ОС, включая доступ к файлу, выполняются под ОС_учеткой под которой запущен sql сервер.
Если кто-то не имеет прямого доступа через ОС к файлам, но вы боитесь что этот кто-то просмотрит этот файл используя
права ОС_учетки sql сервер`а.
Если так то ничего не помешает пользователю используя SSMS выполнить просто обращение к файлу с выводом его содержимого минуя вашу процедуру.
Что-то вроде:

exec xp_cmdshell 'type \\server_ZP\123\ZP.dbf'


Можно забрать доступ у ОС_учетки sql сервера на папки с файлами, а в процедуру в качестве параметров передавать log, pass ОС_учетки которая имеет право на файлы.
В самой процедуре - производить доступ к файлу под введенными log/pass.
Кто их знает - тот и может.
Но это возможно если фактически загрузка происходит по требованию пользователя, а не автоматом.
Более того в общем случае sql_учетка никак не связана с ОС_учеткой, которая скорее всего и имеет права на чтение файла з/п.
Типа клиентская часть запрашивает ввод log/pass ОС_учетки и передает их далее.

как-то так.
25 окт 13, 08:40    [15029591]     Ответить | Цитировать Сообщить модератору
 Re: Под чьими права идет доступ к файлу в процедуре и Job'e  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
philips
Проще говоря,
как (если возможно) в UNSAFE сборке обратится к внешнему файлу от имени определенного пользователя (не от имени SQL Server'a )
Чтобы обратиться к файлу от имени определенного пользователя нужно в этого определенного пользователя имперсонироваться. Как это должно быть сделано описано в статье, на которую вам указывал Glory.
25 окт 13, 09:43    [15029780]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить