Инструменты пользователя

Инструменты сайта


axapta:безопасность

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

axapta:безопасность [2018/04/13 22:43]
axapta:безопасность [2018/04/13 22:43] (текущий)
Строка 1: Строка 1:
 +Раздел: [[Администрирование | ]]
 +----
 +Здесь собираются сведения по поводу системы безопасности в Axapta
  
 +[[ДоступНаУровнеЗаписей]]
 +
 +[[КакПрограммноИзменитьПароль]]
 +
 +-----
 +
 +1. Форма раздачи прав несет в себе лишь ту бяку - что при первом просмотре дерева права грузятся в память, после чего там и остаются... до перезапуска Аксапты. Более бяк там нет... Она просто строит дерево
 +
 +2. Бэкап таблиц ""SysSecurity*"" по-хорошему надо делать по-другому:
 +Модифицируется экспорт/импорт прав в Аксапте таким образом - чтобы в получившемся файле лежали только ИМЕНА элементов АОТ. Т.е. по сути - нужно экспортнуть таблички ""AccessRightsList"" и табличек ""SysSecurity*"", заменив при экспорте ID-шники на имена. Ну и ессно обратно - при импорте - подставив вместо имен текущие значения ID-шников. При экспорте - надо не забыть сохранить права перед экспортом. После импорта - их надо перегрузить и обновить дерево в форме
 +Файлы, в которых сохранены права - можно хранить в сейфе  
 +
 +3. Упаси Бог изменять права в трехуровневой конфигурации. Аксапта сохраняет права по принципу кто последний вышел из нее - тот и прав. А если вы настроили права, а после этого другой юзер вышел - можете смело считать свою работу напрасной. При импорте прав (т.е. изменении данных в табличках) - крайне нежелательно вообще иметь АОС под рукой.... Ибо его наличие аккурат приводит к глюкам, описанным George Nordic
 +----
 +Пользователю можно сбросить пароль, если есть доступ к SQL серверу. Для этого надо очистить поле OSACCOUNTNAME таблицы [[Таблица/UserInfo]] ([[AxForum:3959]])
 +
 +[[AxForum:2888]] -- некоторе описание внутренностей системы контроля доступа в Axapta
 +
 +[[AxForum:7654]]
 +----
 +Данный джоб выводит в InfoLog перечень групп, которым доступны зданные пункты меню (контейнер menuItems)
 +<code xpp>
 +static void Test_AccessibleForWho(Args _args)
 +{
 +    SecurityKeySet secSet;
 +    UserGroupInfo userGroup;
 +    DomainInfo domain;
 +    str items;
 +    container menuItems = [
 +        [menuItemDisplayStr(InventTable), AccessRecordType::MenuItemDisplay],
 +        [menuItemDisplayStr(LedgerTable), AccessRecordType::MenuItemDisplay]
 +    ];
 +    str accessibleMenuItems()
 +    {
 +        int i;
 +        MenuItemName name;
 +        AccessRecordType type;
 +        str ret;
 +    ;
 +        for (i=1; i<=conLen(menuItems); i++)
 +        {
 +            [name, type] = conPeek(menuItems, i);
 +            if (secSet.menuItemAccess(name,  type))
 +            {
 +                if (ret)
 +                    ret += ', ';
 +                ret += SysDictMenu::newMenuItem(name,
 +                    (type == AccessRecordType::MenuItemAction) ?
 +                        MenuItemType::Action : MenuItemType::Display
 +                ).label();
 +            }
 +        }
 +        return ret;
 +    }
 +;
 +    while select userGroup
 +    {
 +        while select domain
 +        {
 +            secSet  = SysSecurity::constructSecurityKeySet();
 +            secSet.loadGroupRights(userGroup.id, domain.Id);
 +            items = accessibleMenuItems();
 +            if (items)
 +            {
 +                info(strFmt('%1;%2: %3',  userGroup.id, domain.Id, items));
 +            }
 +        }
 +    }
 +}
 +</code>
axapta/безопасность.txt · Последнее изменение: 2018/04/13 22:43 (внешнее изменение)