SQL Server - надання дозволів всій схемі та об’єкту?


25

Я дуже зелений, коли мова йде про світ управління дозволами баз даних у SQL Sever.

Тримаємо приклад простим.

Скажімо, обліковий запис "адміністратор" є власником схем A, B і C.

Існує ще один обліковий запис 'minion', на який ви хочете мати повні права (оновити / видалити / вставити / вибрати / змінити) на будь-який об’єкт (таблицю / подання), створений за схемами A, B і C.

Чи можливо це? Або вам доведеться виконувати заяву про грант щоразу, коли ви додаєте таблицю / подання за цими схемами? (здається мені трохи дурним).

Відповіді:


36

Ви можете GRANTсхематизувати дозволи, ефективні для всього існуючого та всього, що буде існувати в цій схемі.

Дозволи на схему надання грантів

GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>;

Крім того, якщо ви хочете відхилити дозволи на певний об'єкт у межах цієї схеми, ви можете це зробити.

Заборона дозволу на об’єкт

DENY INSERT ON OBJECT::<schema>.<object> TO <user>;

1
Також використовуйте квадратні дужки, якщо схема або ім’я користувача мають спеціальні символи. наприклад.... SCHEMA :: [schema] TO [company-name/joshua.duxbury]
Джошуа Дюксбері

Не працює в Azure, будь-яка ідея чому? (команди працюють, але SSMS з'являється і каже "ви не власник Db. бла-бла-бла. Ви, можливо, не зможете зберегти таблицю" і, звичайно, не можете (зробив Грант ВСЕ в базі даних (показує дозволу «бази даних», «<ім'я БД>», TheUserId «Create Table» і state_desc з «ГРАНТУ») чи є якась -небудь інша магія, яка необхідна Або Azure використовуватися тільки по ПТЕ?
Traderhut Гра

13

Щоб трохи спростити далі, ви можете використовувати ролі, щоб виконувати ту роботу, яку шукаєте.

Як тільки ви призначите дозволи ролі, ви можете просто додати користувачів до ролі. Таким чином, вам не потрібно керувати дозволами для окремих користувачів. Користувачі успадковують дозволи, надані ролі.

Нижче наведено приклад для початку роботи:

 -- Create the database role
CREATE ROLE TableSelector AUTHORIZATION [dbo]
GO
 ---- Grant access rights to a specific schema in the database
GRANT 
      SELECT, INSERT, UPDATE, DELETE, ALTER 

ON SCHEMA::dbo
      TO TableSelector 
GO

-- Add an existing user to the new role created 
EXEC sp_addrolemember 'TableSelector', 'MyDBUser'
GO

-- Revoke access rights on a schema from a role 
DENY ALTER  -- you can customize here ...
ON SCHEMA::dbo
      TO TableSelector 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.