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

Откуда: Ульск
Сообщений: 618
Сообщений: 33
Рейтинг сообщений: 2
Репутация: 2 (Новичок)
Определение прав пользоваеля
Подскажите пожайлуста, как определить права у пользователя?
Такая ситуация, есть таблица TABLE, есть поля col1, col2, col3.
Как определить есть ли у пользователя право на чтение каких либо полей таблицы и вывести те поля, на которые есть право чтения?
26 авг 09, 13:47    [7581872]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Вы ничего не сказали о версии сервера. Начиная с 2005, есть удобная функция fn_my_permissions.
26 авг 09, 13:49    [7581890]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
virus_system
Member

Откуда: Ульск
Сообщений: 618
pkarklin
Вы ничего не сказали о версии сервера. Начиная с 2005, есть удобная функция fn_my_permissions.


версии две 2000 и 2005 - нужна универсальная функция.
26 авг 09, 13:54    [7581912]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
sp_helpuser +sp_helprole ?
-------------------------------------
Jedem Das Seine
26 авг 09, 13:55    [7581918]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
virus_system
Member

Откуда: Ульск
Сообщений: 618
Maxx
sp_helpuser +sp_helprole ?
-------------------------------------
Jedem Das Seine



Что мне дают эти две процедуры?
26 авг 09, 13:59    [7581943]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
ну как минимум члетсво ролях +персональніе права по юзверю
вторая права погрупе если в нее входит пользователь
-------------------------------------
Jedem Das Seine
26 авг 09, 14:00    [7581953]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
Glory
Member

Откуда:
Сообщений: 104760
virus_system
pkarklin
Вы ничего не сказали о версии сервера. Начиная с 2005, есть удобная функция fn_my_permissions.


версии две 2000 и 2005 - нужна универсальная функция.

PERMISSIONS() - Returns a value containing a bitmap that indicates the statement, object, or column permissions of the current user.
26 авг 09, 14:06    [7582000]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
virus_system
Member

Откуда: Ульск
Сообщений: 618
Maxx
ну как минимум члетсво ролях +персональніе права по юзверю
вторая права погрупе если в нее входит пользователь
-------------------------------------
Jedem Das Seine


ЗАдам вопрос по-другому. Как мне определить с помощью этих процедур, имеет ли пользователь доступ к таблице TABLE или нет?
26 авг 09, 14:09    [7582018]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
Glory
Member

Откуда:
Сообщений: 104760
И еще sp_helprotect. Но это только для явно назначенных прав
26 авг 09, 14:11    [7582030]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
да віполнить и посмотреть на результат как минимум :)
а вариант Glory все таки елегатней будет описание
-------------------------------------
Jedem Das Seine
26 авг 09, 14:13    [7582041]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Glory
И еще sp_helprotect. Но это только для явно назначенных прав


точно, вылетело из головы
26 авг 09, 14:14    [7582050]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
virus_system
Member

Откуда: Ульск
Сообщений: 618
спс, разобрался. Можно тогда сразу след вопрос.

Вот есть функция permissions,
есть таблица TABLE (col1, col2, col3, col4).

Как мне вывести таблицу если у пользователя нет доступа SELECT на col4 (это к примеру, а доступа может не быть на любой другой столбец, или даже на все)
26 авг 09, 14:39    [7582201]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
Glory
Member

Откуда:
Сообщений: 104760
virus_system
спс, разобрался. Можно тогда сразу след вопрос.

Вот есть функция permissions,
есть таблица TABLE (col1, col2, col3, col4).

Как мне вывести таблицу если у пользователя нет доступа SELECT на col4 (это к примеру, а доступа может не быть на любой другой столбец, или даже на все)

Т.е. как получить права, которых у вас нет ? Ответ - никак
26 авг 09, 14:43    [7582226]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
virus_system
Member

Откуда: Ульск
Сообщений: 618
Glory, ты не понял.

Приведу вообще узкий пример.
Есть пользователь USER
у него нет прав на селект к столбцу col4 в таблице table1(col1,col2,col3,col4)

если этот пользователь попытаеться выполнить запрос select* from table1, то ему скуель выдаст ошибку.

ВОПРОС! КАК сформировать этот запрос.
запрос типа select col1, col2, col3 from table1 - не предлогать, так как я заведомо не знаю какой столбец "недоступен"
26 авг 09, 14:54    [7582275]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
ну берете метаданніе таблиці,и проверяете.... только вот помоему ві изобретаете велосипед на котором ездить все равно будет не удобно.
-------------------------------------
Jedem Das Seine
26 авг 09, 14:56    [7582293]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
Glory
Member

Откуда:
Сообщений: 104760
virus_system
Glory, ты не понял.

Приведу вообще узкий пример.
Есть пользователь USER
у него нет прав на селект к столбцу col4 в таблице table1(col1,col2,col3,col4)

если этот пользователь попытаеться выполнить запрос select* from table1, то ему скуель выдаст ошибку.

ВОПРОС! КАК сформировать этот запрос.
запрос типа select col1, col2, col3 from table1 - не предлогать, так как я заведомо не знаю какой столбец "недоступен"

Т.е. вы хотите, чтобы север сам заменял select* на список тех полей, на которые у текущего пользователя есть права ?
26 авг 09, 14:56    [7582294]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
DENIS_CHEL
Member

Откуда:
Сообщений: 23097
Когда говорят “так как я заведомо не знаю”, то в ответ обычно слышат “используйте динамический SQL”…

PS ответ Glory был абсолютно верным))) ЗЫ офтоп…
26 авг 09, 14:58    [7582314]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
virus_system
Member

Откуда: Ульск
Сообщений: 618
Glory, вот я испрашиваю, как это возможно сделать?
26 авг 09, 15:01    [7582340]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
Glory
Member

Откуда:
Сообщений: 104760
virus_system
Glory, вот я испрашиваю, как это возможно сделать?

Так "сделать самому" или "чтоб сервер делал" ?
26 авг 09, 15:02    [7582349]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
virus_system
Member

Откуда: Ульск
Сообщений: 618
Glory, то бишь самом, как я понимаю, это типа select col1, col2 from table?

А если у меня оч много пользователей и у многих свои права доступа на то или иное поле таблицы - что на каждого рисовать свой запрос?
26 авг 09, 15:08    [7582391]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
Glory
Member

Откуда:
Сообщений: 104760
virus_system
Glory, то бишь самом, как я понимаю, это типа select col1, col2 from table?

А если у меня оч много пользователей и у многих свои права доступа на то или иное поле таблицы - что на каждого рисовать свой запрос?

В чем у вас конкретная проблема с "рисованием" такого запроса ?
26 авг 09, 15:09    [7582403]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
virus_system
Member

Откуда: Ульск
Сообщений: 618
проблемв в том, что есть программулька, в нее входит user, жмет чудо-кнопку и ему выводится ента табличка.
Вот и представь есть до фига пользователей и мне при нажатии это кнопки в событии рисовать что то типа

if (user = ivanov) select col1 from t1
if use=ptrov select col2 from t1
и т.д.
??????
26 авг 09, 15:18    [7582459]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
Glory
Member

Откуда:
Сообщений: 104760
virus_system
проблемв в том, что есть программулька, в нее входит user, жмет чудо-кнопку и ему выводится ента табличка.
Вот и представь есть до фига пользователей и мне при нажатии это кнопки в событии рисовать что то типа

if (user = ivanov) select col1 from t1
if use=ptrov select col2 from t1
и т.д.
??????

Ну раз вы придумали такую схему данных, то придется "рисовать"
26 авг 09, 16:35    [7583008]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
virus_system
Member

Откуда: Ульск
Сообщений: 618
Если кому то интересно, то я нашел фугкцию (правда для sql2005 и выше) - fn_my_permissions. Она возвращает список разрешений на защищенный объект.

Вот например запрос выдает список всех полей таблички, еоторые доступны данному пользователю для чтения...
select *
from fn_my_permissions('tABonent', 'OBJECT')
where permission_name = 'SELECT'
and subentity_name <> ''
27 авг 09, 08:25    [7584704]     Ответить | Цитировать Сообщить модератору
 Re: Определение прав пользоваеля  [new]
virus_system
Member

Откуда: Ульск
Сообщений: 618
Glory,
Так что не надо писать большую кучу запросов - можно написать один универсальный...
27 авг 09, 08:26    [7584705]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить