Управление доступом к базе данных. Пользователи базы данных Oracle и схемы. Аутентификация в СУБД Oracle и SQL Server, страница 2

  • Системный администратор (sa) – пользователь с самым высоким уровнем привилегий. Системный администратор принадлежит серверной роли sysadmin. Это позволяет ему управлять обработкой данных, независимо от их принадлежности. Только системный администратор может создавать базу данных и давать на это привилегию другим пользователям.
  • Владелец базы данных (dbo) – имеет все права на выполнение любых действий с объектами своей базы данных.
    • Любой пользователь, являющийся членом серверной роли sysadmin, может быть владельцем базы данных. Объекты, созданные таким пользователем, принадлежат пользователю dbo, и при ссылке на объекты необходимо указать dbo в качестве префикса.
    • Владельцем базы данных может, также, быть член роли db_owner. Объекты, созданные таким пользователем, принадлежат данному пользователю, и при ссылке на объекты необходимо указать в качестве префикса имя пользователя.
  • Владелец объекта базы данных – пользователь, который создал объект. Привилегии на создание объектов может дать владелец базы данных или системный администратор. Владелец объекта базы данных автоматически получает все привилегии для работы с объектом. Другие пользователи, включая владельца базы данных, не могут работать с объектом, пока его владелец не предоставит им соответствующие привилегии. Перед удалением пользователя – владельца объектов базы данных необходимо удалить все объекты, созданные данным пользователем.
  • Пользователь базы данных – пользователь, не являющийся владельцем базы данных или объектов базы данных, по умолчанию не имеет никаких привилегий. Даже соединившись с экземпляром SQL Server, такой пользователь не сможет выполнить никаких действий с данными. Однако любой пользователь базы данных может считывать данные из системных таблиц, так как для этого не требуется никаких привилегий.

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

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

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

Аутентификация в СУБД Oracle

База данных Oracle представляется для клиентских приложений как сервис базы данных (database service). По умолчанию имя сервиса приравнивается к глобальному имени базы данных, состоящему из имени базы данных (параметр DB_NAME) и имени домена (параметр DB_DOMAIN).

Чтобы подключиться к сервису базы данных клиентские приложения используют дескриптор соединения (connect descriptor), в котором указаны местоположение базы данных и имя сервиса базы данных. В следующем примере дескриптор соединения позволяет клиентскому приложению подключаться к сервису базы данных edu.db.ctc.usu.ru:

(DESCRIPTION=

(ADDRESS=(PROTOCOL=tcp) (HOST=db-server) (PORT=1512))

(CONNECT_DATA=

(SERVICE_NAME=edu.db.ctc.usu.ru)))

Адресная часть дескриптора является протокольным адресом процесса прослушивания (listener). Чтобы подключиться к базе данных клиентские приложения сначала связываются с процессом прослушивания, который обычно располагается на стороне сервера базы данных. Процесс прослушивания получает запрос на соединение от клиентского приложения и передает запрос серверу базы данных. После того как соединение установлено, клиент и сервер базы данных взаимодействуют напрямую.

Пользователь инициирует соединение с базой данных, передавая строку связывания (connect string). Строка связывания включает в себя имя пользователя, пароль и идентификатор соединения (connect identifier). Идентификатором может быть как дескриптор соединения сам по себе, так и имя, которое разрешает дескриптор соединения. Одним из наиболее распространенных идентификаторов является имя сетевого сервиса (net service name).

Пример соединения с использованием дескриптора соединения:

CONNECT scott/tiger@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp) (HOST=db-server1) (PORT=1512))

(CONNECT_DATA=(SERVICE_NAME= edu.db.ctc.usu.ru)))

Пример соединения с использованием имени сетевого сервиса:

CONNECT scott/tiger@student

Процесс установления сеанса происходит в несколько этапов:

1  пользователь, работая через клиентское приложение, инициирует запрос на соединение, передавая идентификатор соединения в строке связывания;

2  идентификатор соединения разрешается в дескриптор соединения с помощью определенного метода разрешения имен, эта информация возвращается клиентскому приложению;

3  клиентское приложение посылает запрос на соединение по адресу, полученному в дескрипторе соединения;

4  процесс прослушивания получает запрос и направляет его соответствующему серверу базы данных;

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

Аутентификация администратора баз данных Oracle

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

·  аутентификация средствами операционной системы;

·  аутентификация при помощи файла паролей.

Рисунок 1 Методы аутентификации