Ограничение прав доступа

Система безопасности ASB построена на использовании учетных записей пользователей и групп безопасности Windows. Если компьютер, на котором установлен сервер ASB, включен в домен, используются глобальные и универсальные группы этого домена, а также глобальные пользователи домена. Если сервер ASB не включен в домен, используются локальные группы и пользователи из базы учетных записей сервера. При подключении клиента ASB к серверу ASB выполняется SSPI-аутентификация и, в случае успеха аутентификации, сбор информации о пользователе (имя входа, полное имя, SID, список групп, в которые входит пользователь, и т.д.). Информация об аутентифицированном пользователе доступна программисту через свойства класса ASBCONNECTION, а также при помощи "сетевых" функций USERID, LOGINNAME, USERDOMAIN, FULLNAME и т.д.

Ограничение доступа к данным в ASB решается на уровне таблиц БД двумя способами.

  1. Права доступа для учетных записей групп и пользователей.
    Набор прав доступа к таблице БД фиксирован и описан в таблице "Формат строки прав на таблицу БД". Каждой учетной записи (группе безопасности или пользователю) можно назначить права на таблицы БД при помощи свойства TABLE.Rights. Права на таблицу БД, заданные для всех групп, в которые входит учетная запись, суммируются; права, заданные для самой учетной записи, перекрывают права групп пользователей.
  2. Права доступа для программного комплекса.
    Процедура GRANTALLRIGHTS позволяет дать все права ко всем регулярным таблицам БД определенному программному комплексу.

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

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

Привилегии программиста:

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

Действия как программиста, так и администратора протоколируются в файле SYSLOG.

Полномочия программиста можно аннулировать, применив ключ командной строки -Rights:Annul. При этом, если пользователь входит также и в группу "AP_ADMIN", то он становится администратором. Если группа "PROGRAMMERS" отсутствует в домене сервера ASB, полномочия программиста можно узурпировать, применив ключ командной строки -Rights:Usurp.

Если пользователь является администратором, либо группа "AP_ADMIN" отсутствует в домене сервера, пользователь имеет право использовать ключ -Group для изменения собственного  списка групп. Если в измененном списке присутствует группа "AP_ADMIN", пользователь считается администратором.

Для определения полномочий программиста и администратора следует использовать встроенные функции ISPROGRAMMER и ISADMIN, либо свойства APP.MyConnection.ProgrammerPrivilege и APP.MyConnection.AdminPrivilege.

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