Защита в Oracle.ppt
- Количество слайдов: 17
Тема: Защита в Oracle Вопросы: 1. Аутентификация пользователей 2. Использование привилегий 3. Использование ролей 4. Контроль за работой БД
Аутентификация и управление доступом к БД Учет имен пользователей. Для обеспечения контроля доступа к работе с базой данных Oracle каждому пользователю назначается имя (username). Создание имени пользователя CREATE USER языка SQL. Аутентификация пользователей. Суть аутентификации заключается в подтверждении достоверности имени пользователя.
Аутентификация пользователей В Oracle аутентификация может выполняться тремя способами: • по паролю; • с помощью операционной системы; • с помощью внешней службы защиты (внешняя аутентификация). Аутентификация по паролю выполняется средствами Oracle. При запуске приложения пользователь должен ввести имя и соответствующий этому имени пароль. На основе пароля Oracle определяет подлинность запроса на соединение с помощью информации из учетных сведений пользователя, хранимых в базе данных.
Аутентификация пользователей Аутентификация с помощью операционной системы. Выполняется с помощью операционной системы, управляющей работой компьютера с сервером баз данных. При запуске приложение передает СУБД Oracle учетные сведения пользователей от операционной системы. Применяется при размещении сервера баз данных на хост-машине и работе пользователей с помощью терминалов, непосредственно соединенных с ней.
Аутентификация пользователей Аутентификация с помощью внешней сетевой службы выполняется для подтверждения подлинности глобального имени пользователя (global username). При запуске приложения и выдаче запроса на соединение Oracle проверяет его подлинность с помощью информации о пользователе, предоставляемой внешней службой защиты. В составе СУБД Oracle имеется собственный сервер защиты Oracle Security Server. Используется в сетях с недостаточно высоким уровнем защищенности при необходимости доступа к нескольким базам данных Oracle.
Управление доступом к БД Осуществляется путем блокирования (lock) и разблокирования (unlock) учетных сведений пользователей. Может выполняться в следующих случаях: • при временном отсутствии пользователя; • при увольнении пользователя и необходимости сохранить применяемые им объекты; • при необходимости сохранить сведения, играющие роль схемы для объектов приложения БД; • при истечении срока действия пароля пользователя; при нескольких последовательных попытках неудачного соединения.
Управление привилегиями Под привилегией понимается право пользователя на проведение определенной операции с базой данных. Для получения возможности соединения с сервером баз данных и выполнения важных операций по работе с базами данных пользователь должен иметь соответствующие привилегии. Различают два типа привилегий: системные и объектные. Системные привилегии предоставляют пользователю возможность выполнять системные операции определенного вида. В Oracle имеется около ста системных привилегий. Например: • ALTER DATABASE (изменить базу данных) – разрешает изменять физическую структуру и доступность системы баз данных;
Управление привилегиями Примеры системных привилегий: • CREATE SESSION (установить сеанс) – разрешает устанавливать соединение с сервером баз данных и сеанс связи с базой данных; • CREATE TABLE (создать таблицу) – разрешает создавать таблицы по собственной (пользовательской) схеме; • CREATE ANY TABLE (создать любую таблицу) – разрешает создавать таблицы по любой схеме; • EXECUTE ANY PROCEDURE (выполнить любую процедуру) – разрешает выполнить любую хранимую процедуру, хранимую функцию или модульный компонент базы данных.
Управление привилегиями Правила для системных привилегий: • любой пользователь базы данных должен иметь системную привилегию CREATE SESSION (установить сеанс); • разработчикам баз данных должны быть назначены системные привилегии, позволяющие создавать и изменять различные объекты для клиентских приложений баз данных, например такие как CREATE TABLE (создать таблицу), ALTER TABLE (изменить таблицу) и CREATE VIEW (создать представление); • системная привилегия ALTER DATABASE (изменить базу данных) должна назначаться только администратору базы данных.
Управление привилегиями В целом при назначении привилегий можно руководствоваться одним правилом: любому пользователю или разработчику должно быть назначено минимально необходимое число привилегий, позволяющее весь объем стоящих перед ним задач. Объектные привилегии предоставляют пользователю возможность выполнять операции определенного вида с конкретным объектом базы данных, например, таким как таблица или представление. Например: • SELECT (выбрать) для заданного представления VW позволяет пользователю задавать запросы к этому представлению; • INSERT (вставить) для заданной таблицы TB позволяет выполнять вставку новых строк в эту таблицу;
Управление привилегиями • EXECUTE (выполнить) для указанного объектного типа ADDR_TYPE позволяет применять этот тип при создании других объектов базы данных и вызывать его методы. При назначении объектных привилегий пользователям также следует исходить из принципа предоставления минимально необходимого набора привилегий для обеспечения ему возможности выполнения всех требуемых действий при работе с базой данных. . Предоставление и отмена пользователю системной или объектной привилегии можно выполнить с помощью SQL-операторов GRANT (предоставить) и REVOKE (отменить) соответственно.
Управление ролями Роль представляет собой совокупность системных и объектных привилегий, предоставляемых пользователям и другим ролям. При разработке приложения можно создать роль, которая содержит набор привилегий, необходимых для работы с приложением. В результате пользователь, которому будет предоставлена эта роль, получит право запускать это приложение, работать с базой данных и выполнять требуемые действия. К стандартным относятся следующие роли: • CONNECT – назначается пользователям и позволяет устанавливать соединение с БД, создавать таблицы, представления, синонимы, последовательности, связи и кластеры данных по соответствующей схеме;
Управление ролями К стандартным относятся следующие роли: • RESOURCE – назначается разработчикам приложений и позволяет создавать, таблицы, последовательности, кластеры данных, процедуры, функции, модули, триггеры и объектные типы по соответствующей схеме; • DBA – назначается администраторам, включает все системные привилегии и позволяет выполнять любые операции с БД. Обладающий этой ролью пользователь может предоставлять любые системные привилегии другим пользователям и ролям; • SELECT_CATALOG_ROLE – позволяет выполнять запросы к представлениям словаря данных администратора;
Управление ролями Пример. Создание роли и предоставление пользователям. 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 khomon, ivanov
Контроль за работой БД Контроль за работой баз данных, или аудит, может потребоваться для сбора статистики за действиями пользователей системы. Аудит может быть полезен для обнаружения нарушений защиты базы данных. При выполнении аудита происходит дополнительное расходование ресурсов. В связи с этим перед выполнением аудита целесообразно настроить его параметры в соответствии с целями аудита, так чтобы сократить непроизводительное расходование системных ресурсов.
Контроль за работой БД Варианты проведения аудита: • аудит конкретных операторов SQL с привязкой или без привязки к конкретным объектам; аудит применения системных привилегий; • для каждого назначенного параметра аудита генерация записи аудита для случаев успешного, неуспешного или любого выполнения контролируемых операторов; • установление параметров аудита для всех или для отдельных пользователей базы данных; • генерация записи аудита при каждом выполнении контролируемого оператора или один раз в течение сеанса.
Контроль за работой БД Пример. Задание параметров проведения аудита. Пусть требуется задать проведение аудита с фиксацией все успешных попыток применения системной привилегии CREATE ANY TABLE пользователями SERG и JOHN, при этом нужно генерировать запись аудита всякий раз при выполнении условий проведений аудита. Возможное решение имеет вид: AUDIT CREATE ANY TABLE BY serg, john BY ACCESS WHENEVER SUCCESSFUL;