Язык управления данными (DCL) для разрешений базы данных
В Язык управления данными является подмножеством языка структурированных запросов. Администраторы баз данных используют DCL для настройки безопасного доступа к реляционным базам данных. Он дополняет Язык определения данных, который добавляет и удаляет объекты базы данных, а Язык обработки данных, который извлекает, вставляет и изменяет содержимое базы данных.
DCL - самый простой из подмножеств SQL, поскольку он состоит всего из трех команд: GRANT, REVOKE и DENY. В совокупности эти три команды предоставляют администраторам гибкость в настройке и удалении разрешений для базы данных на выборочной основе.
Добавление разрешений с помощью команды GRANT
Команда GRANT добавляет новые разрешения пользователю базы данных. Он имеет очень простой синтаксис, определяемый следующим образом:
GRANT [привилегия]
ВКЛ [объект]
К [пользователю]
[С ОПЦИЕЙ ПРЕДОСТАВЛЕНИЯ]
Вот краткое изложение каждого из параметров, которые вы можете указать с помощью этой команды:
-
Привилегия - может быть либо ключевое слово ALL (для предоставления широкого спектра разрешений), либо конкретное разрешение базы данных или набор разрешений. Примеры включают CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE и CREATE VIEW.
- Объект - может быть любой объект базы данных. Допустимые параметры привилегий зависят от типа объекта базы данных, который вы включаете в это предложение. Обычно объектом является база данных, функция, хранимая процедура, таблица или представление.
- Пользователь - может быть любой пользователь базы данных. Вы также можете заменить роль пользователя в этом пункте, если хотите использовать безопасность базы данных на основе ролей.
- Если вы добавите необязательный С ОПЦИЕЙ ГРАНТА в конце команды GRANT, вы не только предоставляете указанному пользователю права определены в операторе SQL, но также дают пользователю разрешение на дальнейшее предоставление тех же разрешения на Другие пользователи базы данных. По этой причине используйте это предложение с осторожностью.
Например, предположим, что вы хотите предоставить пользователю Джо возможность извлекать информацию из работник стол в база данных называется HR. Используйте следующую команду SQL:
ВЫБОР ГРАНТА
ON HR. Сотрудники
Джо.
Джо может получать информацию из таблицы сотрудников. Однако он не сможет предоставить другим пользователям разрешение на получение информации из этой таблицы, поскольку сценарий DCL не включал предложение WITH GRANT OPTION.
Отмена доступа к базе данных
Команда REVOKE удаляет доступ к базе данных у пользователя, которому ранее был предоставлен такой доступ. Синтаксис этой команды определяется следующим образом:
ОТЗЫВАТЬ [ПРЕДОСТАВИТЬ ВАРИАНТ] [разрешение]
ВКЛ [объект]
ОТ [пользователя]
[КАСКАД]
Вот краткое изложение параметров команды REVOKE:
- Разрешение - указывает права доступа к базе данных, которые необходимо удалить у идентифицированного пользователя. Команда отменяет утверждения GRANT и DENY, ранее сделанные для указанного разрешения.
- Объект - может быть любой объект базы данных. Допустимые параметры привилегий зависят от типа объекта базы данных, который вы включаете в это предложение. Обычно объектом может быть база данных, функция, хранимая процедура, таблица или представление.
- Пользователь - может быть любой пользователь базы данных. Вы также можете заменить роль пользователя в этом пункте, если хотите использовать безопасность базы данных на основе ролей.
- В ВАРИАНТ ГРАНТА ДЛЯ Предложение лишает указанного пользователя возможности предоставлять указанное разрешение другим пользователям. Если вы включите ВАРИАНТ ГРАНТА ДЛЯ предложения в инструкции REVOKE, основное разрешение не отменяется. Этот пункт отменяет только право предоставления.
- В КАСКАД опция также отменяет указанное разрешение у всех пользователей, которым указанный пользователь предоставил разрешение.
Следующая команда отменяет разрешение, предоставленное Джо в предыдущем примере:
ОТМЕНИТЬ ВЫБОР
ON HR. Сотрудники
ОТ Джо.
Явный отказ в доступе к базе данных
Команда DENY явно запрещает пользователю получить определенное разрешение. Эта функция полезна, когда пользователь является членом роли или группы, которой предоставлено разрешение, и вы хотите предотвратить наследование разрешения этим отдельным пользователем, создав исключение. Синтаксис этой команды следующий:
ОТКАЗАТЬ [разрешение]
ВКЛ [объект]
К [пользователю]
Параметры команды DENY идентичны параметрам, используемым для команды GRANT. Например, если вы хотите, чтобы Мэтью никогда не получил возможность удалять информацию из таблицы сотрудников, введите следующую команду:
ОТКАЗАТЬ УДАЛИТЬ
ON HR. Сотрудники
К Мэтью.