Под привилегией понимается право пользователя на проведение определенной операции с базой данных. Для получения возможности соединения с сервером баз данных и выполнения важных операций по работе с базами данных пользователь должен иметь соответствующие привилегии. Различают два типа привилегий: системные и объектные.
Системные привилегии предоставляют пользователю возможность выполнять системные операции определенного вида. В Oracle имеется около ста системных привилегий. В качестве примера приведем следующие системные привилегии:
q ALTER DATABASE (изменить базу данных) – разрешает изменять физическую структуру и доступность системы баз данных;
q CREATE SESSION (установить сеанс) – разрешает устанавливать соединение с сервером баз данных и сеанс связи с базой данных;
q CREATE TABLE (создать таблицу) – разрешает создавать таблицы по собственной (пользовательской) схеме;
q CREATE ANY TABLE (создать любую таблицу) – разрешает создавать таблицы по любой схеме;
q EXECUTE ANY PROCEDURE (выполнить любую процедуру) – разрешает выполнить любую хранимую процедуру, хранимую функцию или модульный компонент базы данных.
При назначении системных привилегий пользователям ввиду их большого влияния на безопасность системы баз данных в целом нужно учитывать следующее:
q любой пользователь базы данных должен иметь системную привилегию CREATE SESSION (установить сеанс);
q разработчикам баз данных должны быть назначены системные привилегии, позволяющие создавать и изменять различные объекты для клиентских приложений баз данных, например такие как CREATE TABLE (создать таблицу), ALTER TABLE (изменить таблицу) и CREATE VIEW (создать представление);
q системная привилегия ALTER DATABASE (изменить базу данных) должна назначаться только администратору базы данных.
В целом при назначении привилегий можно руководствоваться одним простым правилом: любому пользователю или разработчику должно быть назначено минимально необходимое число привилегий, позволяющее весь объем стоящих перед ним задач.
Объектные привилегии предоставляют пользователю возможность выполнять операции определенного вида с конкретным объектом базы данных, например, таким как таблица или представление. Для примера приведем следующие объектные привилегии:
q SELECT (выбрать) для заданного представления VW позволяет пользователю задавать запросы к этому представлению;
q INSERT (вставить) для заданной таблицы TB позволяет выполнять вставку новых строк в эту таблицу;
q EXECUTE (выполнить) для указанного объектного типа ADDR_TYPE позволяет применять этот тип при создании других объектов базы данных и вызывать его методы.
При назначении объектных привилегий пользователям также следует исходить из принципа предоставления минимально необходимого набора привилегий для обеспечения ему возможности выполнения всех требуемых действий при работе с базой данных..
Предоставление и отмена пользователю системной или объектной привилегии можно выполнить с помощью SQL-операторов GRANT (предоставить) и REVOKE (отменить) соответственно. Сделать это может администратор или лицо, наделенное соответствующими полномочиями. Так, предоставление системной привилегии может выполнить только пользователь с правами администратора. Предоставить объектную привилегию для действий с объектом базы данных может пользователь, владеющий этим объектом или обладающий правами администратора на предоставление привилегий другим пользователям.