Особенности защиты баз данных IBM DB2 и Oracle, страница 3

·  CREATETABLE (создать таблицу) – разрешает создавать таблицы по собственной (пользовательской) схеме;

·  CREATEANYTABLE (создать любую таблицу) – разрешает создавать таблицы по любой схеме;

·  EXECUTEANYPROCEDURE (выполнить любую процедуру) – разрешает выполнить любую хранимую процедуру, функцию или модульный компонент БД.

Всего в СУБД Oracle существует около ста системных привилегий.

При назначении системных привилегий пользователям ввиду их большого влияния на безопасность СБД нужно учитывать следующее:

·  любой пользователь БД должен иметь системную привилегию CREATESESSION (установить сеанс);

·  разработчикам БД должны быть назначены системные привилегии, позволяющие создавать и изменять различные объекты для клиентских приложений баз данных, например, такие как CREATETABLE (создать таблицу), ALTERTABLE (изменить таблицу) и CREATEVIEW (создать представление);

·  системная привилегия ALTERDATABASE (изменить БД) должна назначаться только администратору БД.

Объектные привилегии предоставляют пользователю возможность выполнять операции определенного вида с конкретным объектом БД, таким как таблица или представление. К числу объектных привилегий относятся: SELECT, INSERT, UPDATE, DELETE, EXECUTE и т. п.

При назначении привилегий любого вида следует исходить из принципа предоставления минимально необходимого набора привилегий для обеспечения пользователю возможности выполнения всех требуемых действий при работе с БД.

Предоставление и отмену системной или объектной привилегии можно выполнить с помощью SQL-операторов GRANT (предоставить) и REVOKE (отменить) соответственно. Сделать это может администратор или лицо, наделенное соответствующими полномочиями. Так, предоставление системной привилегии может выполнить только пользователь с правами администратора. Предоставить объектную привилегию для действий с объектом базы данных может  пользователь, владеющий этим объектом или обладающий правами администратора на предоставление привилегий другим пользователям.

Для задания одинакового набора привилегий множеству пользователей в Oracle используются роли. Имеется набор стандартных ролей, которые появляются в СУБД по умолчанию, после установки. Стандартные роли в Oracle не являются фиксированными: в случае необходимости можно изменять эти роли (т. е. переопределять их привилегии) и даже удалять их. К числу стандартных ролей относятся:

·  CONNECT – назначается пользователям и позволяет устанавливать соединение с БД, создавать таблицы, представления, синонимы, последовательности, связи и кластеры данных по соответствующей схеме;

·  RESOURCE – назначается разработчикам приложений и позволяет создавать таблицы, последовательности, кластеры данных, процедуры, функции, модули, триггеры и объектные типы по соответствующей схеме;

·  DBA – назначается администраторам, включает все системные привилегии и позволяет выполнять любые операции с базами данных. Обладающий этой ролью пользователь может предоставлять любые системные привилегии другим пользователям и ролям;

·  SELECT_CATALOG_ROLE – позволяет выполнять запросы к представлениям словаря данных администратора; 

·  DELETE_CATALOG_ROLE – позволяет удалять записи из журнала аудита  БД;

·  EXECUTE_CATALOG_ROLE – позволяет выполнять модули утилиты DBMS;

·  EXP_FULL_DATABASE, IMP_FULL_DATABASE – позволяют соответственно экспортировать и импортировать информацию из БД.

Допускается создание пользовательских ролей. Включение пользователя в роль осуществляется при помощи оператора GRANT. Пример создания роли и включение в нее пользователя показан ниже.

CREATE ROLE payment

GRANT SELECT, INSERT, UPDATE, DELETE ON  goods.company

     TO payment

GRANT SELECT, INSERT, UPDATE, DELETE ON  goods.price

     TO payment

GRANT payment

    TO ivanov

Запись GRANT payment TO ivanov есть не что иное, как команда «включить пользователя ivanov в роль payment». Нетрудно видеть, что команда DENY позволяет исключить пользователя из роли. Поэтому роли в Oracle – это по сути дела именованные наборы привилегий доступа.