Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Deny vs Grant.  [new]
QuestionRights
Guest
Из документации: "A table-level DENY does not take precedence over a column-level GRANT". Что означает эта фраза? На моём сервере
deny select on Table1 to Role1 
grant select(A) on Table1 to User1

приводит к "The SELECT permission was denied" при попытке
select A from Table1
21 апр 16, 15:39    [19089126]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
Glory
Member

Откуда:
Сообщений: 104751
QuestionRights
Из документации: "A table-level DENY does not take precedence over a column-level GRANT".

Источник укажите ?

QuestionRights
На моём сервере

И какой версии ваш сервер ?
21 апр 16, 15:45    [19089167]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
QuestionRights
Guest
Glory
Источник укажите ?


MSDN, Arguments, column, Caution

Glory
И какой версии ваш сервер ?


Microsoft SQL Server 2008 10.0.1600.22
21 апр 16, 15:50    [19089212]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
QuestionRights,

Если был DENY, а потом добавили GRANT column, то колонку можно выбрать, а все - нет
21 апр 16, 16:04    [19089287]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
QuestionRights
Guest
TaPaK, так в том то и дело, что на моём сервере не позволяет выбрать колонку. Причём сейчас проверил и на 2012-ом, тоже не позволяет.
21 апр 16, 16:14    [19089349]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
QuestionRights,

значить запрет на роль выше гранта на пользователя, дайте гране на поле роли :)
21 апр 16, 16:21    [19089397]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
QuestionRights
Guest
TaPaK
QuestionRights,

значить запрет на роль выше гранта на пользователя, дайте гране на поле роли :)


deny select on Table1 to User1 
grant select(A) on Table1 to Role1


Тот же эффект, что и раньше.
21 апр 16, 16:25    [19089423]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
QuestionRights,

а дать роль-роль или пользователь-пользователь вы не пробуете? к чему вообще вопрос?
21 апр 16, 16:28    [19089440]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
QuestionRights
Guest
TaPaK
QuestionRights,

а дать роль-роль или пользователь-пользователь вы не пробуете?


В случаях роль-роль и пользователь-пользователь grant и deny просто перезаписывают друг друга. Столбцы тут не причём. Например,
deny select on Table1 to User1 
grant select on Table1 to User1

даст grant.

TaPaK
к чему вообще вопрос?


Я считаю, что наблюдаемое поведение логично. То есть deny должен перекрывать grant на столбец. В документации утверждается обратное. Я хочу быть уверен, что мой deny не будет перекрыт.
21 апр 16, 16:39    [19089512]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
QuestionRights,

deny select on Table1 to User1 
grant select on Table1 to User1

где здесь грант на колонку?

Я считаю, что наблюдаемое поведение логично. То есть deny должен перекрывать grant на столбец. В документации утверждается обратное. Я хочу быть уверен, что мой deny не будет перекрыт.

обсудите это с теми кто может давать доступы на вашем сервере
21 апр 16, 16:42    [19089533]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
QuestionRights
Guest
TaPaK

deny select on Table1 to User1 
grant select on Table1 to User1

где здесь грант на колонку?



Здесь нет гранта на колонку. Если дадите grant на колонку - grant будет. Но этот случай не имеет отношения к написанному в документации, так как и обычный grant без колонок перевесит deny для этого случая.
21 апр 16, 16:49    [19089569]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
QuestionRights,

автор
Но этот случай не имеет отношения к написанному в документации, так как и обычный grant без колонок перевесит deny для этого случая.

вы точно прочитали, то что привели в теме?
21 апр 16, 16:51    [19089586]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
QuestionRights
В документации утверждается обратное.
Если вы натолкнулись на поведение, противоречащее документации:
1. Установите последний SP и проверьте еще раз, т.к. у вас голый релиз.
2. Приводите полное репро, а не две непонятные инструкции, да еще с синтаксическими ошибками.
21 апр 16, 16:51    [19089588]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
invm,

да всё у него нормально, скучно судя по всему :)

DENY SELECT ON _a TO User1
GRANT SELECT ON _a(Id) TO User1

SELECT Id FROM _a даст
SELECT * FROM _a не даст
21 апр 16, 16:53    [19089609]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
QuestionRights
Guest
invm
QuestionRights
В документации утверждается обратное.
Если вы натолкнулись на поведение, противоречащее документации:
1. Установите последний SP и проверьте еще раз, т.к. у вас голый релиз.
2. Приводите полное репро, а не две непонятные инструкции, да еще с синтаксическими ошибками.


Полное репро:

create login Login1 with password = 'Login1'
create user User1 for login Login1 
create role Role1 
exec sp_addrolemember Role1, User1

create table Table1 (A int, B int)
insert into Table1 (A, B) values (1, 1)

deny select on Table1 to Role1 
grant select(A) on Table1 to User1

--deny select on Table1 to User1 
--grant select(A) on Table1 to Role1

execute as user = 'User1'
	select A from Table1 -- "The SELECT permission was denied".
revert

drop table Table1
drop user User1
drop role Role1
drop login Login1


Для Microsoft SQL Server 2012 (11.0.2218.0) наблюдается тот же эффект.
21 апр 16, 16:58    [19089646]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
QuestionRights,

автор
deny select on Table1 to Role1
grant select(A) on Table1 to User1

упорный...
21 апр 16, 16:59    [19089657]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
QuestionRights
Guest
TaPaK, я ответил на Ваше предложение. На мой взгляд Ваш случай не относится к написанному. Если имелось в виду то, что говорите Вы, то почему было написано "A table-level DENY does not take precedence over a column-level GRANT", а не "A DENY does not always take precedence over a GRANT". Колонки для Вашего случая не требуются, table-level GRANT перекрывает table-level DENY.
21 апр 16, 17:03    [19089688]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
QuestionRights
TaPaK, я ответил на Ваше предложение. На мой взгляд Ваш случай не относится к написанному. Если имелось в виду то, что говорите Вы, то почему было написано "A table-level DENY does not take precedence over a column-level GRANT", а не "A DENY does not always take precedence over a GRANT". Колонки для Вашего случая не требуются, table-level GRANT перекрывает table-level DENY.

table-level DENY column-level GRANT
21 апр 16, 17:06    [19089701]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
QuestionRights,

+
use tempdb;
go

create user u1 without login;
go

create table dbo.t (a int, b int);
go

/*
1. grant
2. deny
*/
grant select on dbo.t(a) to u1;
deny select on dbo.t to u1;
go

execute as user = 'u1';
select * from sys.fn_my_permissions('dbo.t', 'object');
revert;
go

revoke select on dbo.t(a) to u1;
revoke select on dbo.t to u1;
go

/*
1. deny
2. grant
*/
deny select on dbo.t to u1;
grant select on dbo.t(a) to u1;
go

execute as user = 'u1';
select * from sys.fn_my_permissions('dbo.t', 'object');
revert;
go

drop table dbo.t;
drop user u1;
go
21 апр 16, 17:09    [19089725]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
у него DENY на роль
21 апр 16, 17:10    [19089736]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Konst_One,

у него вообще может быть цело стадо тараканов, но к чему это при обсуждении ремарки из мсдн?
21 апр 16, 17:13    [19089753]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
TaPaK
Konst_One,

у него вообще может быть цело стадо тараканов, но к чему это при обсуждении ремарки из мсдн?


ремарка тут не при делах, ТС зря за неё цепляется.
21 апр 16, 17:14    [19089762]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Konst_One
TaPaK
Konst_One,

у него вообще может быть цело стадо тараканов, но к чему это при обсуждении ремарки из мсдн?


ремарка тут не при делах, ТС зря за неё цепляется.

тогда вопроса вообще никто не знает :)
21 апр 16, 17:16    [19089775]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
QuestionRights
Guest
Если рассмотреть мой случай с юзером и ролью, то ремарка не выполняется.

Если рассмотреть случай TaPaK, то ремарка бессмысленна, так как и "A table-level DENY does not take precedence over a column-level GRANT" (ремарка) и "A table-level DENY does not take precedence over a table-level GRANT" (чего нет в ремарке, но также выполняется для случая TaPaK).
21 апр 16, 17:18    [19089784]     Ответить | Цитировать Сообщить модератору
 Re: Deny vs Grant.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
QuestionRights
Если рассмотреть мой случай с юзером и ролью, то ремарка не выполняется.

Если рассмотреть случай TaPaK, то ремарка бессмысленна, так как и "A table-level DENY does not take precedence over a column-level GRANT" (ремарка) и "A table-level DENY does not take precedence over a table-level GRANT" (чего нет в ремарке, но также выполняется для случая TaPaK).

мммм DENY-GRANT-DENY даст неожиданно DENY :)
21 апр 16, 17:20    [19089800]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить