Grant, надання дозволу на схему (transact-sql)

Дозвіл на роботу зі схемою, яка може бути надано. Можливі дозволу наведені нижче.

ON SCHEMA. схема_name

Схема, на роботу з якою надається дозвіл. Кваліфікатор області «::» є необхідним.

Учасник, якому надається дозвіл, може бути одним з наступних:

  • користувач бази даних
  • роль бази даних
  • роль додатка
  • користувач бази даних, зіставлений імені входу Windows
  • користувач бази даних, зіставлений групі Windows
  • користувач бази даних, зіставлений сертифікатом
  • користувач бази даних, зіставлений асиметричному ключу
  • користувач бази даних, що не зіставлений сервера-учаснику.
GRANT OPTION

Показує, що учасникові буде надано можливість надавати зазначений дозвіл іншим учасникам.

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

  • користувач бази даних
  • роль бази даних
  • роль додатка
  • користувач бази даних, зіставлений імені входу Windows
  • користувач бази даних, зіставлений групі Windows
  • користувач бази даних, зіставлений сертифікату
  • користувач бази даних, зіставлений асиметричному ключу
  • користувач бази даних, що не зіставлений сервера-учаснику.

Поєднання дозволів ALTER і REFERENCE в деяких випадках може дозволити переглядати дані або виконувати несанкціоновані функції. Наприклад: Користувач з дозволом ALTER на таблицю і дозволом REFERENCE на функцію може створювати обчислюваний стовпець на основі функції і в результаті - виконувати її. В цьому випадку користувачеві також потрібен дозвіл SELECT на обчислюваний стовпець.

Схема є об'єктом, що захищається рівня бази даних, що містяться в базі даних, яка є материнською по відношенню до нього в ієрархії дозволів. Нижче перераховані найбільш специфічні і обмежені дозволу (разом з найбільш загальними дозволами, з яких вони випливають), які можуть бути надані для схеми.

Міститься в дозволі схеми

Міститься в дозволі бази даних

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

Наприклад, ця проблема може виникнути в наступних сценаріях. Передбачається, що у користувача U1 є дозвіл ALTER на схему S1. Користувачеві U1 заборонений доступ до об'єкта таблиці T1 в схемі S2. Схеми S1 і S2 належать одному і тому ж власнику.

У користувача U1 є дозволу CREATE PROCEDURE на базу даних і EXECUTE на схему S1. Тому користувач U1 може створити збережену процедуру, а потім отримати доступ до забороненого об'єкта T1 з цієї збереженої процедури.

У користувача U1 є дозволу CREATE SYNONYM на базу даних і SELECT на схему S1. Тому користувач U1 може створити в схемі S1 синонім для забороненого об'єкта T1, а потім отримати доступ до цього об'єкта за допомогою синоніма.

У користувача U1 є дозволу CREATE VIEW на базу даних і SELECT на схему S1. Тому користувач U1 може створити в схемі S1 уявлення для запиту даних з забороненого об'єкта T1, а потім отримати доступ до цього об'єкта за допомогою уявлення.

Об'єкт, що надає дозвіл (або учасник, вказаний параметром AS), повинен мати або сам дозвіл, виданий за допомогою GRANT OPTION, або дозвіл вищого рівня, з якого випливає що надається дозвіл.

Якщо використовується параметр AS, вступають в силу такі додаткові вимоги.

Необхідно додаткове дозвіл

Користувач бази даних

Дозвіл IMPERSONATE, пов'язане з користувачем, членство в фіксованою ролі db_securityadmin бази даних, членство в фіксованою ролі db_owner бази даних або членство в фіксованою серверної ролі sysadmin.

Користувач бази даних, зіставлений імені входу Windows

Дозвіл IMPERSONATE, пов'язане з користувачем, членство в фіксованою ролі db_securityadmin бази даних, членство в фіксованою ролі db_owner бази даних або членство в фіксованою серверної ролі sysadmin.

Користувач бази даних, зіставлений групі Windows

Членство в групі Windows, членство в фіксованою ролі db_securityadmin бази даних, членство в фіксованою ролі db_owner бази даних або членство в фіксованою серверної ролі sysadmin.

Користувач бази даних, зіставлений сертифікату

Членство в фіксованою ролі db_securityadmin бази даних, членство в фіксованою ролі db_owner бази даних або членство в фіксованою серверної ролі sysadmin.

Користувач бази даних, зіставлений асиметричному ключу

Членство в фіксованою ролі db_securityadmin бази даних, членство в фіксованою ролі db_owner бази даних або членство в фіксованою серверної ролі sysadmin.

Користувач бази даних, що не зіставлений ні одного сервера-учаснику

Дозвіл IMPERSONATE, пов'язане з користувачем, членство в фіксованою ролі db_securityadmin бази даних, членство в фіксованою ролі db_owner бази даних або членство в фіксованою серверної ролі sysadmin.

Роль бази даних

Дозвіл ALTER, пов'язане з роллю, членство в фіксованою ролі db_securityadmin бази даних, членство в фіксованою ролі db_owner бази даних або членство в фіксованою серверної ролі sysadmin.

Дозвіл ALTER, пов'язане з роллю, членство в фіксованою ролі db_securityadmin бази даних, членство в фіксованою ролі db_owner бази даних або членство в фіксованою серверної ролі sysadmin.

Власники об'єктів можуть надавати дозволи на роботу з об'єктами, якими вони володіють. Учасники, які мають дозвіл CONTROL, пов'язане з об'єктом, що захищається, можуть надавати дозволи на роботу з цим об'єктом.

Суті, отримали дозвіл CONTROL SERVER, такі як елементи фіксованої серверної ролі sysadmin. можуть надавати будь-які дозволи на роботу з будь-якими захищаються об'єктами сервера. Суті, отримали дозвіл CONTROL, пов'язане з базою даних, такі як елементи фіксованої ролі db_owner бази даних, можуть надавати будь-які дозволи на роботу з будь-якими захищаються об'єктами в базі даних. Власники дозволу CONTROL, пов'язаного зі схемою, можуть надавати будь-які дозволи на роботу з будь-якими об'єктами, що містяться в даній схемі.

Схожі статті