| Каталог | Оглавление | Индекс раздела |
Средства управления доступом являются одним из наиболее трудных для описания аспектов функционирования СУБД, так как в этой части рассматриваемые нами СУБД при обеспечении в принципе эквивалентных возможностей используют различные подходы и различную терминологию. Ниже мы пытаемся прежде всего "привести к общему знаменателю" некоторые средства управления доступом в DB2 и Oracle с последующим указанием различий между ними.
Доступ к данным и возможностям СУБД персонифицирован. Для каждого действия, выполняемого в системе, определено, каким пользователем оно выполняется. Пользователь (user) - это некоторое имя, определенное в базе данных и связанное с некоторым субъектом, который может соединяться с базой данных и выполнять доступ к ее объектам.
Логически пользователь понимается обеими СУБД одинаково, хотя с принципиально различными реализациями этого понятия.
Процедура аутентификации (authentication) состоит в представлении пользователя системе при установлении соединения с базой данных и подтверждении его подлинности. Подтверждение подлинности выполняется паролем (password) . Процедура аутентификации выполняется при запуске пользователем приложения.
![]() |
![]() |
| Аутентификация в DB2 | Аутентификация в Oracle |
Связь с базой данных устанавливается приложением при помощи SQL-оператора (показаны только минимальный наборы необходимых составляющих):
|
|
Обе СУБД используют термин привилегии (privileges), хотя и с некоторыми разночтениями в его понимании. Описывая общие свойства, мы будем понимать под привилегией некоторый поддерживаемый системой признак, который определяет, разрешение на выполнение какой-либо конкретной операции (общей или относящейся к конкретному объекту). Каждое действие, выполняемое пользователем в базе данных, сопровождается процедурой авторизации (authorization), которая заключается в проверке того, может ли данный пользователь выполнять запрошенное действие над данным объектом, т.е., имеет ли данный пользователь данную привилегию. По результатам авторизации запрос на доступ выполняется или отклоняется.
Для аутентификации могут использоваться внутренние или внешние методы.
При применении внутренних методов данные аутентификации пользователи являются объектами базы данных и их имена и пароли хранятся в СУБД.
При применении внешних методов аутентификация пользователя при соединении с базой данных производится по тому же имени и паролю, которые используются для его аутентификации в операционной системе или сетевых службах. В этом случае явная аутентификация при соединении с базой данных может и не требоваться - для нее используются результаты аутентификации пользователя при начале его сеанса в операционной системе/сети.
Oracle по умолчанию использует внутренний метод. В соответствии с этим, в Oracle пользователь является объектом базы данных, т.е., информация о пользователе хранится в базе данных (в системном каталоге) и пользователи могут создаваться / изменяться / удаляться средствами языка SQL. Ниже приведен синтаксис основной части оператора CREATE USER:
|
Фраза IDENTIFIED BY пароль - определяет аутентификацию пользователя внутренними методами - с сохранением имени и пароля в базе данных.
Фраза IDENTIFIED EXTERNALLY - определяет аутентификацию внешними средствами.
Фраза IDENTIFIED GLOBALLY AS внешнее_имя - определяет аутентификацию пользователя средствами Oracle Security Service.
Информация о пользователе может также изменяться (ALTER USER) и удаляться (DROP USER).
DB2 использует внешний метод - аутентификацию внешними средствами, например, операционной системой. В связи с этим, пользователь не является объектом базы данных, в базе данных информация сохраняется не о пользователе, а только о данных ему грантах - разрешениях использования привилегий. Поэтому пользователь не управляется средствами языка SQL. При работе с DB2 Command Center может создаться первое впечатление, что мы можем создать нового пользователя так же, как и в Oracle Navigator. Однако, обратите внимание на следующие обстоятельства:
Мастера не станет доступной, пока не будет дан хотя бы один грант для создаваемого пользователя.
Это происходит потому, что при добавлении пользователя на самом деле в базу данных заносится не информация о пользователе, а только информация о его грантах. Поэтому в DB2 возможна даже такая "странная" ситуация: пользователь создан в базе данных и ему назначены некоторые привилегии, но работать с базой данных он не может, так как, не будучи зарегистрирован в системе, не может пройти аутентифицикацию.
Для сокращения объема информации по управлению доступом и обеспечения более гибких возможностей управления обе СУБД применяют группирование привилегий - возможность одним действием администратора предоставить разным пользователям одинакового набора привилегий. Однако, представления концепции группирования различны в наших двух СУБД.
Oracle использует для этих целей роли. Роль (role) - это объект базы данных, представляющий собой именованный набор привилегий, который может предоставляться пользователю или другой роли. Администратор может создавать новые роли и изменять состав ролей. Как объект базы данных, роль могут управляться средствами языка SQL (CREATE ROLE, ALTER ROLE, DROP ROLE). Минимальный синтаксис оператора CREATE ROLE показан ниже:
|
Применение роли может быть защищено паролем и требовать аутентификации - такой же, как и аутентификация пользователя.
Роли могут применяться динамически в течение сеанса связи с базой данных. Установка / отмена ролей производится оператором SET ROLE:
|
В Oracle есть несколько предустановленных ролей:
Для тех же целей в DB2 применяются группы пользователей. Группа (group) - набор пользователей, которым даются совместные привилегии. Группе могут даваться / отбираться привилегии. Как и в случае с пользователями, объектами базы данных являются гранты, даваемые группе. Создание же групп, равно как и включение в них пользователей выполняется внешними средствами.
Несмотря на столь очевидные различия, роли и группы обеспечивают одинаковую функциональность. Так, если в Oracle роль R составляет некоторый набор привилегий P, связанных с выполнением некоторой производственной функции F, и мы можем назначить пользователя U на роль R, то в DB2 можно создать группу пользователей G, выполняющую ту же функцию F, назначить для группы тот же набор привилегий P и включить пользователя U в группу G.
Однако, в отличие от ролей, группы не являются объектами базы данных и не могут создаваться средствами SQL.
Как мы сформулировали выше, в широком понимании привилегия - это разрешение на выполнение конкретной операции над конкретным объектом. Однако, объекты, на которые распространяются привилегии имеют сложную структуру, показанную на рисунке ниже:
|
Менеджер СУБД (database manager) является собственно программным кодом СУБД. Для каждого менеджера может быть создан один или несколько экземпляров.
Экземпляр (instance) менеджера СУБД - логическая среда, которая характеризуется своими ресурсами и параметрами. Экземпляр, однако, по разному понимается разными СУБД.
С точки зрения Oracle экземпляр - это среда времени выполнения, его ресурсы составляют набор выполняющихся процессов Oracle и область оперативной памяти (SGA - system global area). В каждом экземпляре Oracle "монтируется" и "открывается" одна база данных и экземпляр выполняет функции монитора этой базы данных.
DB2 понимает под экземпляром логическую среду, включающую в себя несколько баз данных и постоянно хранимые параметры. Экземпляр, таким образом, является монитором нескольких баз данных. Экземпляры выполняются совершенно независимо друг от друга. Такой механизм позволяет осуществлять раздельное администрирование и настройку параметров экземпляров, повышает безопасность и надежность обработки данных.
На понятии базы данных (datebase) наши две СУБД опять сходятся. Базой данных называется коллекция данных, рассматриваемая как единое целое. База данных характеризуется занимаемой ею памятью (табличными пространствами) и каталогом. В каждой базе данных может быть создано несколько схем.
Схема (schema) - набор объектов базы данных. Каждая схема связывается с определенным пользователем (т.е., это - та схема данных, которую видит данный пользователь), и имя схемы совпадает с именем пользователя. По умолчанию каждый пользователь работает с объектами в своей схеме и создает объекты в своей схеме. Однако, пользователь может (если это ему позволено) иметь доступ и к объектам в другой схеме или менять схему, в которой он работает. Объекты схемы (schema objects) - таблицы, представления, индексы и т.д. - скалярные (не составные) объекты базы данных.
Обе рассматриваемые нами СУБД по разному подходят к назначению привилегий контейнерных и скалярных объектов. В DB2 привилегии, относящиеся к экземпляру и, частично, к базе данных, выделены в отдельное понятие полномочий. Прочие привилегии - как для контейнерных, так и для скалярных объектов - также различаются.
Oracle объединяет привилегии, относящиеся ко всем контейнерным объектам, в понятие системные привилегии, а все остальные - в привилегии объектов схемы.
В DB2 разрешения пользователю выполнять те или иные действия делятся на полномочия и привилегии. Полномочие (authority) является методом группирования привилегий и возможности управлять менеджером базы данных и системными утилитами. Полномочия, связанные с базой данных, записываются в каталог соответствующей базы данных, полномочия, связанные с управлением системой записываются в файл конфигурации менеджера СУБД для данного экземпляра.
Полномочия в DB2 являются предустановленными. Имеются следующие виды полномочий Полномочие SYSADM - администрирования системы - является высшим уровнем полномочий и обеспечивает над всеми ресурсами, которыми управляет менеджер базы данных. Полномочие SYSADM включает в себя также полномочия DBADM (для всех баз данных в экземпляре), SYSCTRL и SYSMAINT, а также разрешение давать и забирать полномочия DBADM. Пользователь с полномочием SYSADM имеет полный доступ ко всем объектам всех баз данных в данном экземпляре.
Полномочие DBADM - администрирования базы данных - определяется для отдельной базы данных. Оно включает в себя разрешение на полный доступ ко всем объектам этой базы данных посредством операторов SQL, на создание объектов и на выполнение команд базы данных. Полномочие DBADM также включает в себя возможность давать и забирать привилегию CONTROL и другие привилегии.
Полномочие SYSCTRL - управления системой - высший уровень управления системой, применяется только к системным ресурсам. Оно не дает разрешения на прямой доступ к данным, но позволяет создавать базы данных, изменять их конфигурацию и уничтожать их, создавать и уничтожать табличные пространства. Полномочие SYSCTRL включает в себя также полномочия SYSMAINT.
Полномочие SYSMAINT - сопровождения системы - второй уровень управления системой. Оно дает возможность выполнять опе6рации по сопровождению всех баз данных в данном экземпляре: изменять конфигурацию баз данных, выполнять их копирование/восстановление, и управлять базами данных. Оно не дает разрешения на прямой доступ к данным.
Полномочия SYSADM, SYSCTRL, SYSMAINT даются группам, имена которых определяются в конфигурационных параметрах sysadm_group, sysctrl_group, sysmaint_group соответственно. Членство в этих группах управляется вне менеджера базы данных - средствами безопасности той платформы, на которой функционирует СУБД.
Привилегия (privilege) дает пользователю или группе право выполнять определенный вид доступа к определенному объекту. В DB2 имеется несколько видов привилегий, некоторые из них рассматриваются ниже.
Привилегии базы данных - включают в себя действия над базой данных в целом, в том числе привилегии:
Привилегии схемы - включают в себя действия над определенной схемой в базе данных, в том числе привилегии:
Указанные привилегии могут даваться с правом передачи или без него.
Все остальные виды привилегий являются объектными привилегиями - они даются по отношению к отдельным объектам базы данных.
Привилегии таблиц и представлений - включают в себя разрешение на действия над определенными таблицами / представлениями, в том числе привилегии:
Указанные привилегии могут даваться с правом передачи или без него.
Привилегии пакета - включают в себя разрешение на действия над определенными пакетами - объектами базы данных, содержащими информацию, используемую менеджером базы данных для эффективного доступа к данным из определенного приложения. Привилегии пакета следующие.
Привилегии пакета - создатель индекса автоматически получает для него привилегию CONTROL, что дает ему разрешение на удаление индекса.
Все названные выше привилегии назначаются операторами GRANT, а забираются операторами REVOKE, обобщенная форма которых показана на рисунке:
|
Примечания:
В Oracle все даваемые пользователю разрешения сводятся к привилегиям. Различаются два вида привилегий - системные привилегии (system privileges) и привилегии объектов схемы (schema object privileges) или просто объектные. Управление обоими видами привилегий производится одинаковым образом. Привилегии могут даваться / забираться пользователю или роли.
Системные привилегии дают пользователю возможность выполнять общесистемные действия или определенные действия над всеми объектами определенного типа. Существует более 40 системных привилегий, которые можно разделить на несколько основных групп:
Системные привилегии могут даваться с правом передачи другому пользователю / роли или без него. Они назначаются / забираются GRANT / REVOKE:
|
WITH ADMIN OPTION определяет возможность передачи привилегий.
Объектные привилегии концептуально совпадают с таковыми в DB2, они разрешают пользователю выполнять определенные действия над определенным объектом. Основными объектами, для которых даются объектные привилегии являются таблицы и представления, привилегии для них - ALTER, INDEX, INSERT, REFERENCES, SELECT, UPDATE, ALL - как и в DB2. Указанные привилегии могут даваться с правом передачи или без него. Операторы GRANT / REVOKE для объектных привилегий имеют следующий синтаксис:
|
| Каталог | Оглавление | Индекс раздела |