Идентификация и аутентификация
Информация о каждом пользователе, имеющем право подключаться к СУБД, находится в соответствующей системной БД.
Каждый пользователь (субъект) имеет в системной БД уникальный идентификатор – идентификатор субъекта.
СУБД связывает субъекта с его идентификатором, исходя из имени и пароля, полученных в результате идентификации и аутентификации.
После этого на всем протяжении работы (до отсоединения пользователя от СУБД) ядру СУБД уже не требуется знание имени и пароля субъекта. Для алгоритмов доступа достаточно только идентификатора субъекта.
При хранении информации о правах субъекта (см. подраздел Схема хранения данных) СУБД использует идентификатор субъекта, а также идентификаторы объектов, к которым субъект имеет доступ.
Для каждого установленного канала связи с приложением СУБД хранит у себя в памяти следующую информацию:
-
идентификатор субъекта;
-
идентификатор приложения (процесса и даже нити);
-
адрес клиентской станции и тип сетевого протокола (при сетевой работе).
Таким образом, сеанс работы субъекта начинается с идентификации и аутентификации субъекта, при этом СУБД связывает последнего с его идентификатором. Данная связь прекращается только после отсоединения субъекта от СУБД.
Кроме того, СУБД особенно важно, чтобы ответы на все запросы приложения были получены только этим приложением и никаким другим. Это реализуется с помощью идентификатора приложения, который присваивается ему операционной системой в момент запуска. При установлении связи приложение, используя интерфейс нижнего уровня, сообщает ядру СУБД свой идентификатор (а при сетевой работе и адрес станции), так что, посылая приложению ответы, СУБД владеет полной информацией о том, кому можно пересылать полный адрес нужного приложения.
В случае, когда исчезает хотя бы один из компонентов связи (удаляется субъект, падает приложение, отключается клиентская станция), ядро СУБД, следуя установленным тайм-аутам, разрывает образованную связь.
При попытке пользователя открыть канал связи, СУБД проверяет имя пользователя и его пароль.
При этом возможны следующие ситуации:
-
имя и пароль пользователя введены правильно – пользователь допускается к БД;
-
имя пользователя введено неверно – выдается сообщение о том, что имя пользователя введено неверно (
Неизвестное имя пользователя
). Пользователь к БД не допускается; -
пароль пользователя введен неверно – выдается сообщение о том, что пароль пользователя введен неверно (
Неверный пароль пользователя
). Пользователь к БД не допускается.