2013-07-24 1 views
2

Я в настоящее время с помощью SQL Server 2012, и у меня есть вопрос, касающийся доступа кросс-схемы с различными правами доступа:Возможна ли возможность просмотра кросс-схем с различными правами доступа?

Допустим, у меня есть две схемы: UserSchema и TableSchema.

TableSchema содержит 2 таблиц, и эта схема доступен пользователем администратора только для чтения, обновления и т.д.

UserSchema должен быть доступен пользователям с Select-правами (или как бы вы назвали бы права на чтение). Эта схема содержит представление, которое должно выбрать данные из двух таблиц в TableSchema.

Моя идея состоит в том, что пользователи UserSchema должны иметь доступ только к UserSchema, но не иметь доступа к TableSchema. Будет ли это работать? Или запрос на просмотр не работает из-за отсутствия доступа к чтению данных непосредственно из таблиц? Есть ли хорошее решение, чтобы обойти это, или я должен забыть эту идею и дать пользователям возможность читать доступ к TableSchema?

Ответ на главный вопрос, вероятно, очевиден, но я, кажется, нахожу несколько разных ответов при попытке Google, поэтому это более или менее вопрос «да» или «нет» для подтверждения или опровержения идеи.

+0

Я уверен, что вам нужно либо предоставить разрешения на «все таблицы», то есть те, которые используются в представлениях и представлениях. Или вы можете использовать хранимые процедуры и изменить их контексты выполнения, чтобы обойти это. –

ответ

3

До тех пор, пока владелец каждой из схем будет таким же, этот подход будет работать нормально, поскольку цепочка владения не сломана.

Смотрите следующую ссылку для получения более подробной информации:

Ownership Chains

Например, это будет работать:

  • UsersSchema Владелец ДБО

  • TableSchema Владелец ДБО

  • User1 гранта выбрать разрешение на UsersSchema, отрицающая выберите разрешение на TableSchema

  • view1 живет в UsersSchema (селекция из Table1)

  • Table1 живет в TableSchema

user1 делает выбор * from UsersSchema.view1 - SQL server проверяет, имеет ли пользователь user1 разрешения на просмотр, который он делает, все хорошо

SQL-сервер затем проверяет, кому принадлежит представление, dbo SQL-сервер затем проверяет, кому принадлежит таблица, из которой требуется представление данных, а также dbo (поскольку dbo владеет обеими схемами) Поскольку цепочка прав собственности не повреждена, сервер SQL теперь не будет проверять, какие разрешения user1 имеют на таблице1 и данные возвращаются, даже если вы отказываетесь от выбора пользователя1 в таблице1 или TableSchema.

user1 все равно будет отказано в доступе к таблице1, если он попытается напрямую обратиться к таблице1.

+0

Отличный, только то, что мне нужно. Спасибо за ответ :) –

 Смежные вопросы

  • Нет связанных вопросов^_^