Авторизация пользователей

Пользователи – это субъекты БД. Каждая БД ЛИНТЕР имеет, как минимум, одного пользователя. Информация о пользователях БД хранится в системной таблице полномочий. Доступ пользователя к БД возможен только после прохождения процедуры авторизации доступа, в ходе которой пользователь должен предъявить свое регистрационное имя и пароль.

В СУБД ЛИНТЕР каждому пользователю, при его создании администратором БД, назначается одна из трех возможных категорий доступа к БД (или один из трех уровней доступа):

  • Connect-категория. Предоставляет пользователю наименьшие права: доступ к БД с возможностью подавать SQL-запросы на манипулирование данными;

  • Resource-категория. Предоставляет пользователю все права Connect-категории, а также право изменять схему БД (создавать/удалять/изменять структуру объектов БД) и передавать другим пользователям права на свои объекты;

  • DBA-категория. Предоставляет пользователю уровень администратора БД с максимальными правами, включающими права Resource-категории и право создавать новых пользователей БД.

BACKUP-категория предоставляет пользователю права архивирования БД.

В зависимости от способа создания нового пользователя возможны следующие механизмы его идентификации и аутентификации:

  1. IDENTIFIED BY < пароль >: устанавливает для пользователя режим идентификации и аутентификации по имени и паролю, хранящимся в БД ЛИНТЕР;

  2. IDENTIFIED BY SYSTEM: устанавливает для пользователя режим встроенной аутентификации операционной системы. Это означает, что при доступе к БД надо указать имя и пароль, указываемый при регистрации в ОС. СУБД проверяет только наличие пользователя с указанным именем, а аутентификацию выполняет ОС;

  3. IDENTIFIED BY PROTOCOL: задает идентификацию и аутентификацию пользователя при проверке доступа к БД по имени пользователя, зарегистрированного в ОС (при создании соединения с БД вводить имя пользователя и пароль не требуется). Данная идентификация доступна только локальным пользователям ЛИНТЕР-сервера. Пользователь-владелец БД не может идентифицироваться и аутентифицироваться таким способом. Запросы будут выполняться от имени пользователя, совпадающего с именем пользователя, запустившего клиентское приложение;

    Примечание

    Создание пользователя с помощью опции IDENTIFIED BY PROTOCOL поддерживается в Windows- и UNIX-системах, но идентификация и аутентификация с помощью вышеуказанной конструкции поддерживается только в UNIX-системах.

  4. IDENTIFIED BY LDAP: устанавливает для пользователя режим парольной аутентификации через LDAP-сервер. Для успешной аутентификации требуется соответствие имени пользователя БД ЛИНТЕР одному из атрибутов пользователя в БД LDAP-сервера;

  5. IDENTIFIED BY KRB: устанавливает для пользователя режим идентификации и аутентификации через Kerberos-сервер. Для входа под данным пользователем необходимо указывать пустое имя пользователя и/или задать специальный флаг в интерфейсе нижнего уровня.

Вне зависимости от способа создания пользователя его имя всегда хранится в БД ЛИНТЕР. Хеш пароля хранится в СУБД только в первом случае.

Аутентификация через LDAP-сервер выполняется следующим образом:

  1. пользователь передает ЛИНТЕР-серверу имя и пароль обычным для интерфейса нижнего уровня (call-интерфейса) способом (через команду OPEN);

  2. ЛИНТЕР-сервер проверяет наличие указанного пользователя в системной таблице $$$USR БД ЛИНТЕР;

  3. если указанный пользователь найден в БД ЛИНТЕР, и он должен аутентифицироваться по LDAP-протоколу, то попытка соединения с LDAP-сервером зависит от установленного режима поиска уникального имени пользователя в БД LDAP-сервера;

    • если активен режим LDAP-аутентификации без предварительного поиска, то производится попытка соединения с LDAP-сервером с переданным ранее паролем и уникальным именем (DN), составленным согласно переменным окружения/ключам запуска СУБД ЛИНТЕР;

    • если активен режим LDAP-аутентификации с предварительным поиском, то производится попытка подключения к LDAP-серверу с использованием DN и пароля для поиска (либо попытка анонимного подключения, если DN поиска не задано), после чего, в случае успеха, происходит поиск пользователя с помощью фильтра, составленного согласно переменным окружения/ключам запуска СУБД ЛИНТЕР; если найден только один пользователь, происходит попытка соединения с использованием найденного уникального имени (DN) и переданного ранее пароля;

  4. в случае успешного соединения с LDAP-сервером пользователю предоставляется доступ к БД ЛИНТЕР-сервера.

Для использования LDAP аутентификации в информационной системе должен быть установлен и настроен LDAP-сервер (удаленный или локальный). Его местоположение задается с помощью специальной переменной окружения СУБД ЛИНТЕР (см. документ РСКЮ.10010-60 34 01-1 «СУБД ЛИНТЕР. Запуск и останов СУБД ЛИНТЕР в среде ОС Windows» и «СУБД ЛИНТЕР. Запуск и останов СУБД ЛИНТЕР в среде ОС Linux, Unix»).