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

Откуда:
Сообщений: 22
Всем доброго времени суток.

Вопрос следующий:

Есть пользователь, есть набор БД на сервере. Нужно определить, к каким БД у пользователя есть доступ на просмотр данных, а к каким нет.

Ну что-то типа если бы было так:

CREATE LOGIN user1 WITH PASSWORD = 'user1';

-- Repeat the following scripts for each necessary DB:

USE db_name 
CREATE USER user1 FOR LOGIN user1
GRANT VIEW DEFINITION TO user1


Но только насколько я понимаю все сложнее. Пользователь может быть owner-ом базы, ему может быть сделан REVOKE и т.д.

Вобщем может кто копал в этом направлении? Или ссылку на статью где-бы это все излагалось в сжатой форме.

Заранее благодарен.
5 янв 16, 17:17    [18644548]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по пользователям и их правам  [new]
o-o
Guest
sys.fn_my_permissions(null, 'database' )
курсором по всем базам, отымперсонэйтив интересующий логин.
5 янв 16, 18:09    [18644753]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по пользователям и их правам  [new]
bobanman
Member

Откуда:
Сообщений: 22
o-o
sys.fn_my_permissions(null, 'database' )
курсором по всем базам, отымперсонэйтив интересующий логин.


Спасибо, похоже на правду, поэкспериментирую. А можно пояснить значение термина отымперсонэйтив ?
5 янв 16, 19:04    [18644935]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по пользователям и их правам  [new]
bobanman
Member

Откуда:
Сообщений: 22
Вот такое решение в итоге нашел.

HAS_PERMS_BY_NAME(dbs.[name], 'DATABASE', 'VIEW DEFINITION')


Если есть разрешение VIEW DEFINITION возвращает 1. Может кому еще пригодится.
11 янв 16, 17:57    [18663708]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по пользователям и их правам  [new]
o-o
Guest
bobanman
Вот такое решение в итоге нашел.

HAS_PERMS_BY_NAME(dbs.[name], 'DATABASE', 'VIEW DEFINITION')


Если есть разрешение VIEW DEFINITION возвращает 1. Может кому еще пригодится.

я фигею, дорогая редакция.
какое же отношение имеет VIEW DEFINITION к просмотру данных???
bobanman
Вопрос следующий:
Есть пользователь, есть набор БД на сервере. Нужно определить, к каким БД у пользователя есть доступ на просмотр данных, а к каким нет.

ау, просмотр данных это SELECT.
и если какому-то юзеру выдать VIEW DEFINITION,
это ему SELECT не прибавит
11 янв 16, 18:17    [18663824]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по пользователям и их правам  [new]
o-o
Guest
bobanman
А можно пояснить значение термина отымперсонэйтив ?

impersonate login:
execute as login = 'this_login';

impersonate user:
execute as user = 'that_user';

create user u without login;
grant view definition to u;

execute as user = 'u';
select *
from sys.fn_my_permissions(null, 'database');

entity_name	subentity_name	permission_name
database		CONNECT
database		VIEW DEFINITION

select *
from dbo.Company;

Msg 229, Level 14, State 5, Line 1
The SELECT permission was denied on the object 'Company', database 'aero', schema 'dbo'.

revert;

grant SELECT to u;

execute as user = 'u';
select *
from sys.fn_my_permissions(null, 'database');

entity_name	subentity_name	permission_name
database		CONNECT
database		SELECT
database		VIEW DEFINITION

select *
from dbo.Company;

ID_comp	name
1	Don_avia  
2	Aeroflot  
3	Dale_avia 
4	air_France
5	British_AW


REVERT;
11 янв 16, 18:22    [18663866]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить