Инструменты пользователя

Инструменты сайта


examination:bd:question50

Вопрос №50. Обеспечение безопасности БД. Предоставление привилегий

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

Средства , которые позволяют управлять доступом пользователей к ресурсам баз данных:

  • Управление работой пользователей и аутентификация
  • Управление привилегиями
  • Ограничение использования ресурсов баз данных
  • Работа с паролями пользователей
  • Аудит баз данных

* Средства описаны на примере СУБД Oracle!!!(думаю, они применимы для большинства других СУБД)

Управление работой пользователей

Первой линией защиты от нежелательного проникновения в базы данных является управление доступом к системе. Чтобы пользователь мог соединиться с базой данных , он должен иметь в ней имя (username). Создавать имена пользователей можно при помощи SQL-команды CREATE USER.

Аутентификация пользователей

Необходимо точно указать, как СУБД следует опознавать (аутентифи­цировать) использование новых учетных сведений (account) для каждого пользователя базы данных. Когда кто-то пытается соединиться с базой данных при помощи некоторого имени пользователя, СУБД определяет, имеет ли право человек, употребивший данное имя, использовать эти учетные сведения. Опознавать пользователей СУБД может по паре логин-пароль.

Работа с привилегиями

Пользователи системы баз данных не могут соединяться с сервером баз данных или выполнять какие-либо существенные действия, если они не имеют привилегий (privileges) на проведение определенных операций с базами данных. Например, пользователь базы данных не может:

· Соединяться с базой данных, не имея системной привилегии CREATE SESSION (установить сеанс)

· Создавать таблицы в соответствующей схеме, не имея системной привилегии CREATE TABLE (создать таблицу)

· Удалять строки из какой-либо таблицы другой схемы, не имея объектной привилегии DELETE (удалить) для этой таблицы

Типы привилегий

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

Системные привилегии

Системная привилегия (system privilege) - это мощная привилегия, которая предоставляет пользователю возможность выполнять системную операцию определенного вида. Для примера ниже приведены некоторые из почти ста системных привилегий:

· С помощью системной привилегии CREATE SESSION (установить сеанс) пользователь может соединяться с сервером баз данных и устанавливать сеанс связи с базой данных.

· С помощью системной привилегии CREATE TABLE (создать таблицу) пользователь может создавать таблицы в своей собственной схеме.

· С помощью системной привилегии CREATE ANY TABLE (создать любую таблицу) пользователь может создавать таблицы в любой схеме базы данных.

· С помощью системной привилегии CREATE ANY TYPE (создать любой тип) пользователь может создавать типы и тела соответствующих типов в любой схеме базы данных.

· С помощью системной привилегии SELECT ANY TABLE (выбрать любую таблицу) пользователь может обращаться с запросами к любой таблице базы данных.

· С помощью системной привилегии EXECUTE ANY PROCEDURE (выполнить любую процедуру) пользователь может выполнять любую хранимую процедуру, хранимую функцию или модульный компонент базы данных.

· С помощью системной привилегии EXECUTE ANY TYPE (выполнить любой тип) пользователь может ссылаться на методы любого типа базы данных, а также выполнять их.

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

· Администратор базы данных является единственным пользователем, который должен иметь мощную системную привилегию ALTER DATABASE (изменить базу данных), позволяющую изменять физическую структуру и доступность системы баз данных.

· Разработчикам, как правило, необходимо несколько системных привилегий для построения схем баз данных, обеспечивающих работу приложений клиентов. В числе этих системных привилегий CREATE TABLE (создать таблицу), CREATE VIEW (создать представление) и CREATE TYPE (создать тип).

· Каждый пользователь системы обычно имеет системную привилегию CREATE SESSION (установить сеанс), которая разрешает пользователю соединяться с сервером баз данных.

На первый взгляд может показаться, что огромным числом системных привилегий управлять крайне трудно. Однако каждая системная привиле­гия предоставляет право на выполнение только конкретной операции с базой данных, поэтому достаточно просто назначить каждому пользователю привилегии, необходимые ему для выполнения своих функций, - не больше и не меньше.

Объектные привилегии

Объектная привилегия (object privilege) предоставляет пользователю возможность выполнять операцию определенного вида с конкретным объектом базы данных, например с таблицей, с представлением или с хранимой процедурой. Например:

· С помощью объектной привилегии SELECT (выбрать) для представления CUST пользователь может обращаться с запросами к этому представлению и считывать необходимую информацию.

· С помощью объектной привилегии INSERT (ввести) для таблицы CUSTOMERS пользователь может вводить в нее новые строки.

· С помощью привилегии EXECUTE (выполнить) для объектного типа PART_TYPE пользователь может применять этот тип при создании других объектов базы данных и выполнять методы этого типа.

В этих примерах приведены лишь, немногие из объектных привилегий для таблиц, представлений, последовательностей, процедур, функций, модулей, объектных типов и каталогов файлов сервера. В зависимости от способа разработки приложения, пользователям могут потребоваться различные объектные привилегии для базовых объектов, с которыми работает данное приложение. Например, для работы с обычным приложением по вводу заказов пользователям могут быть необходимы привилегии SELECT, INSERT, UPDATE и DELETE для таблиц CUSTOMERS, ORDERS и ITEMS, а также привилегии SELECT и UPDATE для таблицы PARTS. Каждая объектная привилегия разрешает выполнение только конкретной операции, поэтому с помощью привилегий можно установить полный контроль за доступом к базам данных.

Предоставление и отмена привилегий

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

  • Предоставить системную привилегию может лишь пользователь, имеющий системную привилегию с правами администратора на предоставление привилегий другим пользователям.
  • Предоставить привилегию на объект базы данных может лишь пользователь, владеющий этим объектом или имеющий объектную привилегию с правами администратора на предоставление привилегий другим пользователям.

Ограничение использования ресурсов

В многопользовательских системах баз данных рекомендуется ограни­чивать доступ пользователей к системным ресурсам. В противном случае возможны ситуации, когда один из пользователей будет потреблять чрезмерный объем ресурсов базы данных за счет других пользователей. Например, когда СУБД автоматически завершает все сеансы связи с базой данных, которые длительное время бездействуют, сервер может не расходовать ресурсы понапрасну и предоставить больший объем памяти, циклов центрального процессора и других ресурсов системы тем сеансам, которые выполняют реальную работу.

Аудит баз данных

Иногда необходимо регистрировать информацию об операциях, выполняемых в системе баз данных. Это насыпается аудитом (audit). Например, может потребоваться статистика о том, какие действия в системе выполняют пользователи. Аудит можно применять также для слежения за базой данных с целью обнаружения потенциальных нарушении ее защиты.

Избирательный аудит

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

· Можно выполнять аудит конкретных SQL-операторов безотноси­тельно к конкретным объектам. Например, можно просить СУБД генерировать запись аудита всякий раз, когда какой-либо пользователь выполняет оператор DROP TABLE, и не учитывать, к какой таблице относится этот оператор.

· Можно выполнять аудит использования мощных системных привилегий. Например, просить Oracle генерировать запись аудита всякий раз, когда какой-либо пользователь применяет системную привилегию SELECT ANY TABLE для запроса к таблице базы данных.

· Можно выполнять аудит определенных SQL-операторов для конкретных объектов базы данных. Например, просить Oracle генерировать запись аудита всякий раз, когда какой-либо пользователь удаляет запись из таблицы SALES.CUSTOMERS.

· Для каждой разрешенной опции аудита можно просить СУБД генерировать запись аудита для успешного, неуспешного или любого выполнения операторов. Более того, можно установить каждую разрешенную опцию аудита для всех либо для некоторых пользователей базы данных.

examination/bd/question50.txt · Последние изменения: 2014/01/15 12:12 (внешнее изменение)