Надати відмову у дозволі на укладання


9

Для ролі db_denycustomerя хочу, щоб тільки код стовпця таблиці клієнтів був ВИБІРНИМ, а жоден з інших. Тому я зробив це:

DENY SELECT ON dbo.customer TO db_denycustomer
GRANT SELECT ON dbo.customer (code) TO db_denycustomer

... і це чудово працює. Класно! Але, чому ?

Що я читав у пов’язаних статтях, це те, що дозволи складаються, але DENYмають перевагу. Навпаки, в моєму випадку здається, що останній "запит" дозволу мав перевагу. Звичайно, якщо я виконую їх у зворотному порядку, останній також DENYприховує стовпчик коду.

Не могли б ви детальніше розглянути це?

Я також включив за замовчуванням db_datawriterі db_datareaderролі для користувача, з яким я тестував.

Відповіді:


10

Це задокументоване поведінка, передбачене для зворотної сумісності. Витяг з документації:

Обережно DENY на рівні таблиці не має переваги над GRANT на рівні стовпця. Ця невідповідність ієрархії дозволів збереглася для зворотної сумісності.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.