Определение привилегий доступа к ресурсам БД и операций с ними

Функция

Определение оператора предоставления пользователю привилегий доступа к ресурсам БД и операций с ними.

Спецификация
   
< привилегия на обработку данных >::=
GRANT {ALL [PRIVILEGES] |
{SELECT | INSERT | DELETE | UPDATE | ALTER | INDEX | REFERENCES}[, …]}
ON [TABLE] [имя схемы.]{имя таблицы|имя представления|имя синонима}
TO {PUBLIC|{имя пользователя|имя роли}[, …]}
< привилегия на доступ к ресурсам БД >::=
GRANT {CONNECT | RESOURCE | DBA | BACKUP} [, …]
TO имя пользователя[, …]
[IDENTIFIED BY тип идентификации[, …]]
< тип идентификации >::=
пароль | SYSTEM | PROTOCOL | LDAP | KRB
Синтаксические правила
  1. < Имя таблицы > должно задавать базовую таблицу.

  2. Опция ALL равнозначна списку, включающему все привилегии для < имени таблицы > (< имени представления >): ALL=SELECT+INSERT+DELETE+UPDATE+ALTER+INDEX+REFERENCES.

    Например,
    GRANT SELECT, index ON Auto TO PUBLIC;
    GRANT all ON Auto TO "Иванов";
  3. Если вместо списка пользователей указано PUBLIC, то всем пользователям (существующим и будущим) будут предоставлены определенные данным оператором права на указанную таблицу.

    grant all on auto to public;
  4. Вторая форма оператора GRANT предназначена для определения новых пользователей с указанием их категорий либо изменения категорий существующих пользователей.

    grant connect to USER1, "Иванов", "Nik" identified by 'hgt66#', '6sыф_()', '123';
  5. Конструкция IDENTIFIED BY SYSTEM устанавливает для пользователя режим встроенной аутентификации операционной системой (см. пункт «Создание пользователя»).

  6. Конструкция IDENTIFIED BY PROTOCOL устанавливает для пользователя режим встроенной аутентификации по имени пользователя, зарегистрированного в ОС (см. пункт «Создание пользователя»).

    grant connect to USER1, USER2 identified by PROTOCOL;
  7. Конструкция IDENTIFIED BY LDAP предоставляет указанную привилегию пользователю, аутентификация которого выполняется через LDAP-сервер (см. пункт «Создание пользователя»).

    grant connect to USER1, USER2 identified by LDAP;
  8. Конструкция IDENTIFIED BY KRB предоставляет указанную привилегию пользователю, идентификация и аутентификация которого выполняется через KRB-сервер (см. пункт «Создание пользователя»).

    grant connect to USER1, USER2 identified by KRB;
  9. Количество пользователей и < типов идентификации > может быть разным. При этом количество пользователей должно быть не меньше количества < типов идентификации >. Соответствие < пользователь >–< тип идентификации > производится слева направо. Пользователи, оставшиеся без соответствующих им < типов идентификации >, получат «пустой» пароль (18 пробелов).

    GRANT RESOURCE TO User_1,User_2 IDENTIFIED BY 'Hi_Life';
    (у пользователя User_2 будет пустой пароль)
  10. Длина < символьного литерала >, задающего < пароль >, должна быть не более 18 символов.

  11. Привилегии могут предоставляться только владельцем указанной таблицы/представления/синонима.

    Примечание

    Привилегия, назначенная синониму таблицы или представления, будет унаследована соответствующей таблицей или представлением и не будет удалена при удалении синонима.

  12. Нельзя назначить привилегии самому себе.

  13. Вводить нового пользователя (с определением < категории пользователя >) может только администратор БД (категория DBA).

  14. Привилегия REFERENCES, данная пользователем U1 пользователю U2 на таблицу U1.T1, разрешает пользователю U2 создавать ссылки (REFERENCES) на эту таблицу, при этом пользователь U2 должен иметь категорию как минимум RESOURCE.

  15. Для удаления ссылок привилегия REFERENCES не требуется.

  16. Привилегия BACKUP разрешает пользователю БД оперативное архивирование БД или её отдельных объектов.