Ограничение прав доступа
Система безопасности ASB построена на использовании учетных записей
пользователей и групп безопасности Windows.
Если компьютер, на котором установлен сервер ASB, включен в домен,
используются глобальные и универсальные группы этого домена, а также глобальные
пользователи домена. Если сервер ASB не включен в домен, используются
локальные группы и пользователи из базы учетных записей сервера. При подключении
клиента ASB к серверу ASB выполняется SSPI-аутентификация и, в случае успеха
аутентификации, сбор информации о пользователе (имя входа, полное имя, SID,
список групп, в которые входит пользователь, и т.д.). Информация об
аутентифицированном пользователе доступна программисту через свойства класса
ASBCONNECTION, а также при помощи "сетевых" функций
USERID,
LOGINNAME, USERDOMAIN,
FULLNAME и т.д.Ограничение доступа к данным в ASB решается на уровне
таблиц БД двумя способами.
- Права доступа для учетных записей групп и пользователей.
Набор прав доступа к таблице БД фиксирован и описан в таблице "Формат строки прав на
таблицу БД". Каждой учетной записи (группе
безопасности или
пользователю) можно назначить права на
таблицы БД при помощи свойства TABLE.Rights.
Права на таблицу БД, заданные для всех
групп, в которые входит учетная
запись,
суммируются; права, заданные для самой учетной записи, перекрывают права групп пользователей.
- Права доступа для программного комплекса.
Процедура GRANTALLRIGHTS
позволяет дать все права ко всем регулярным таблицам БД определенному
программному комплексу.
Имеются две группы пользователей,
обладающие особыми полномочиями: программисты
проекта
- члены группы "PROGRAMMERS", и администраторы
проекта
- члены группы "AP_ADMIN". Полномочия
программиста и администратора почти не
пересекаются. В большинстве случаев программист не может быть
одновременно администратором. Пользователи, одновременно входящие в
группы "PROGRAMMERS" и "AP_ADMIN",
являются программистами, но не
администраторами. Совмещать полномочия программиста и администратора
можно только в следующих случаях:
- работаем в домене "POLAK";
- работаем в другом домене под
учетной записью "POLAK";
- работаем в другом домене под
учетной записью, входящей в глобальную группу
безопасности "AP_SUPPORT".
Привилегии администратора:
- исполнение обновлений,
для которых не требуются права
администратора домена, в том числе выполнение Rebuild по эталонному DBD-файлу
(с ключом -Pattern);
- откат последнего Rebuild`а, кроме случая,
когда откатываемые файлы на момент отката
модифицированы;
- исполнение конверторов ASL (прикладные
проверки);
- удаленное наблюдение и управление (прикладные проверки);
- задание прав пользователей и групп (прикладные проверки);
- использование ключей командной строки -Group и -User;
- возможность работы с таблицами БД, имеющими признак "нарушение
уникальности" (начиная с версии 14.15.2);
- выполнение утилиты SQD (до
версии 14.24.8 выполнять SQD могли все
пользователи);
Привилегии программиста:
- выполнение Rebuild в программном режиме (без
ключа -Pattern);
- откат последнего Rebuild`а, даже если
файлы на момент отката модифицированы;
- разрешение модификации архивных
половин файлов указанием ключа -Archives на старте V32;
- копирование на tmp_lib, модификация
программ, отчетов, меню (прикладные
проверки);
- отладка, профиляция и отключение программ,
установка отладочного сдвига
системного времени;
- Browse;
- модификация в зонах "только для
чтения";
- редактирование записи в диалоге опции ShowMem(CurFileElm) -
традиционно на кнопках CtrlShiftF4;
- возможность работы с файлами базы
данных, имеющими признак "нарушение
уникальности";
- удаленное наблюдение и управление (прикладные проверки);
- выполнение утилиты SQD (до
версии 14.24.8 выполнять SQD могли все
пользователи)
Разделение
полномочий выполнено с целью уменьшить
количество случаев работы клиентов с
полномочиями программиста и сделать
невозможным использование
полномочий программиста для выполнения
функций администратора.
Действия как программиста, так и
администратора протоколируются в файле
SYSLOG.
Полномочия программиста можно
аннулировать, применив ключ командной
строки -Rights:Annul. При этом, если
пользователь входит также и в группу "AP_ADMIN", то он становится администратором.
Если группа "PROGRAMMERS" отсутствует в домене сервера
ASB, полномочия программиста можно
узурпировать, применив ключ командной
строки -Rights:Usurp.
Если пользователь является администратором, либо
группа "AP_ADMIN" отсутствует в домене сервера, пользователь имеет право
использовать ключ -Group для изменения собственного списка групп. Если в
измененном списке присутствует группа "AP_ADMIN", пользователь считается
администратором.
Для определения полномочий
программиста и администратора следует
использовать встроенные
функции ISPROGRAMMER и ISADMIN,
либо свойства APP.MyConnection.ProgrammerPrivilege
и APP.MyConnection.AdminPrivilege.
В монопольном режиме удаленного управления некоторые привилегии программиста
и/или администратора могут быть в отладочных целях заимствованы с управляющего
подключения на управляемое, о чем подробнее см. статью
"Монопольный
режим удаленного управления".