Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Новое на сайте
Новое

Инструкция CREATE ROLE советы и хитрости программирования

Главная проблема работы с ролями состоит в том, что администратор базы данных иногда определяет избыточные допуски — отдельно для роли и отдельно для пользователя. Если вам когда-нибудь понадобится в подобной ситуации запретить доступ пользователя к ресурсу, вам скорее всего придется отключать допуски командой REVOKE дважды. Сначала нужно отключить пользователя от роли, а затем отключить привилегии, указанные на уровне пользователя.


DB2

Не поддерживается.

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

  • Создать группу в операционной системе.
  • Назначить или отменить допуски для данной группы.
  • Добавлять пользователей в группу на уровне операционной системы.
  • Платформа DB2 позволяет связывать группы операционной системы со специальными административными ролями на уровне экземпляра, используя конфигурационные параметры sysadmgroup, sysctrlgroup и sysmaintgroup.


    MySQL

    Не поддерживается.


    Oracle

    Хотя в стандарте ANSI в настоящее время нет инструкции ALTER ROLE, в Oracle есть поддержка этой инструкции. Платформа Oracle поддерживает концепцию ролей, но ее реализация в Oracle очень отличается от стандарта ANSI SQL.

    {CREATE | ALTER} ROLE role_name [NOT IDENTIFIED | IDENTIFIED {BY password | EXTERNALLY | GLOBALLY | USING package_name}]

    Где:

    CREATE | ALTER ROLE имя_роли

    Определяется имя создаваемой роли или уже существующей роли при ее изменении.

    NOT IDENTIFIED

    Объявляется, что для прохождения авторизации в базе данных роли не требуется пароль. Этот параметр установлен по умолчанию.

    IDENTIFIED

    Объявляется, что пользователь, которому назначена роль, должен пройти аутентификацию, используя метод, определенный до создания роли при помощи команды SET ROLE, где:

    BY пароль

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

    EXTERNALLY

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

    GLOBALLY

    Создается глобальная роль, аутентификацию которой производит корпоративная служба каталогов (enterprise directory service), например каталог LDAP.

    USING имя_пакета

    Создается роль приложения (application role), которую можно применять только посредством приложения, использующего пакет PL/SQL с именем имя_пакета. Если схема не указана, платформа предполагает, что пакет находится в вашей схеме.

    В Oracle сначала создается роль, а потом ей предоставляются привилегии и допуски с помощью команды GRANT, как обычному пользователю. Если пользователи хотят получить допуски, предоставляемые ролью, которая защищена паролем, им нужно использовать команду SET ROLE. Если роль защищена паролем, то пользователь, который хочет получить доступ, должен указать этот пароль в команде SET ROLE.

    В Oracle предлагается несколько готовых ролей. Во всех версиях Oracle доступны роли CONNECT DBA и RESOURCE. Более новыми ролями, используемыми в операциях экспорта и импорта, являются EXPFULLJDA ТА В A SE и IMPFULLJDA ТА BASE. В описании инструкции GRANT приводится более детальное обсуждение всех готовых ролей, имеющихся в Oracle.

    В следующем примере для определения новой роли в Oracle используется инструкция CREATE, с помощью команды GRANT ей назначаются привилегии, с помощью инструкции ALTER ROLE назначается пароль, и роль присваивается двум пользователям.

    CREATE ROLE boss;
    GRANT ALL ON employee TO boss;

    GRANT CREATE SESSION,
    CREATE DATABASE LINK TO boss;

    ALTER ROLE boss IDENTIFIED BY le_grande_fromage;

    GRANT boss TO emily, jake;


    PostgreSQL

    Хотя платформа PostgreSQL не поддерживает команду CREATE ROLE, в ней предлагаются почти идентичные возможности в специфической инструкции, называющейся CREATE GROUP. Для изменения существующих групп в PostgreSQL также есть инструкция ALTER GROUP. В PostgreSQL группа и роль идентичны.

    {CREATE | ALTER} GROUP имя
    [[WITH] {SYSID int | USER имя_пользователя [, …]}] [{DROP | ADD} имя_пользователя [, …]}

    Где:

    {CREATE | ALTER} GROUP имя

    Создается новая группа (то есть роль) или изменяется существующая. Параметр имя определяет имя создаваемой или изменяемой группы.

    WITH {SYSID int | USER имя_пользователя [, …]}

    Явным образом присваивает новой группе ID группы (предложение SYSID) или назначает группу существующим пользователям, перечисленным в указанном списке. Если предложение опущено, PostgreSQL создаст группу с ID равным самому большому ID плюс единица (начиная с 1). Предложение WITH используется только в инструкции CREATE GROUP.

    {DROP | ADD} имя_пользователя

    Удаляет пользователей из группы или добавляет их в нее. Используется только в инструкции ALTER GROUP.

    Чтобы удалить ненужную группу, используйте предложение DROP GROUP.


    SQL Server

    Microsoft SQL Server не поддерживает команду CREATE ROLE, но имеет аналогичную возможность, реализуемую системной записанной процедурой sp_add_role.

    Источник