Запретить разрешение на чтение можно обойти с видом? - PullRequest
1 голос
/ 05 ноября 2010

Считайте, что пользователю отказано в доступе к таблице финансовых секретов:

SELECT * FROM Transactions
SELECT permission denied on object 'Transactions'

Нет проблем:

CREATE VIEW dbo.Transactions2 AS SELECT * FROM Transactions
Command(s) completed succesfully.

SELECT * FROM Transactions2
(84,387,982 row(s) affected)

Предполагается ли, что пользователи смогут обходить deny разрешения для таблицы, используя псевдоним таблицы?

Редактировать: Соус: alt text

Ответы [ 2 ]

3 голосов
/ 05 ноября 2010

Это работает как рекламируется

Это называется " цепочка владения "

  • dbo владеет таблицей и представлением / функцией / хранимым процессом
  • таблица ссылок вида / функции / хранимой процедуры
  • права доступа к таблице не проверены вообще (для GRANT, DENY и т. Д.)

Если вы не хотите, чтобы кто-то видел столбец / таблицу, не включайте его в процедуру представления / функции / хранимой. Или добавьте логику / объединения для проверки прав доступа в соответствии с используемой моделью.

Предыдущие ответы: один , два

Это было в SQL Server и Sybase, ну, в общем-то, давно.

1 голос
/ 05 ноября 2010

Разве это не часть намерения просмотров в первую очередь?Чтобы включить видимость определенной, конкретной информации из таблиц, когда у пользователя нет других прав доступа к базовой таблице (или таблицам)?

Похоже, проблема в том, что у данного пользователя есть права на создание представления.во-первых.

Например, скажем, вы хотели раскрыть неконфиденциальную информацию в этой таблице;Вы можете сделать это с целью, которая ограничивает результаты только тем, что вы хотели видеть.

...