Возникла необходимость перенести настроенные права доступа на другую среду.
Удалось успешно привязать к данных
- Доступ к объектам - SysEntitySchemaOperationRight
- Операции - SysAdminOperation
- Права на операции - SysAdminOperationGrantee
Однако
- настройку прав на колонки SysEntitySchemaColumnRight
- и настройку прав по умолчанию SysEntitySchemaRecordDefRight
добавить в пакет не получается - просто не даёт выбрать такие объекты.
Как лучше поступить для решения?
Нравится
Добрый вечер.
Подобные темы уже обсуждались на Community. То, что не привязывается к данным, переносят SQL скриптами, которые также привязываются к пакету.
Алла Савельева,
Есть даже пример таких скриптов для переноса этих настроек?
Или, может, Terrasoft сделает возможным перенос стандартными средствами?
Владимир, пока этой функциональности нет в базовой версии, рекомендуем выполнять перенос скриптами.
Реализовать перенос настроек организационной структуры и прав доступа из одного стенда на другой можно с помощью SQL-скриптов. Для этого на эталонной среде необходимо сформировать insert-запросы на основании записей со следующих таблиц:
- SysAdminUnit (Объект администрирования: пользователи и роли)
- SysUserInRole (Непосредственные вхождения пользователей в роли)
- SysFuncRoleInOrgRole (Вхождение функциональной роли в организационную)
- SysAdminOperation (Системные операции, если необходимо)
- SysAdminOperationGrantee (Доступ к системным операциям, если необходимо)
- SysEntitySchemaOperationRight (Доступ к объектам)
- SysEntitySchemaRecordDefRight (Доступ к записям по умолчанию)
- SysEntitySchemaColumnRight (Доступ к колонкам объекта)
- SysAdminUnitGrantedRight (Делегирование)
Для формирования запросов можно воспользоваться Microsoft SQL Server Database Publishing Wizard и подобными инструментами. Полученный SQL-скрипт необходимо прикрепить к пакету (вкладка - «SQL-сценарии»).
Если перенос происходит на продуктивную среду, то мы рекомендуем предварительно сделать резервное копирование данных, и, в первую очередь, заливать пакет на тестовую среду, чтобы проверить результат выполнения скрипта. Эти работы необходимо выполнять не в бизнес-время.
Ещё очень интересное поведение заметили.
Записи SysEntitySchemaColumnRight были перенесены полностью идентично на рабочую среду (проверили после переноса). А через некоторое время на рабочей среде оказались те же записи, но с совершенно другими Id.
Какие процессы могут полностью сменить Id в этой таблице? И на что это может повлиять?
Может, компилировали объект? Актуализацию прав запускали?
Зверев Александр пишет:
Может, компилировали объект? Актуализацию прав запускали?
Да, компиляция же происходит после каждой установки новых пакетов (с того же Marketplace), насколько я понимаю.
И актуализация прав запускается после изменений в пользователях/ролях.
1. Но как это влияет на настройки доступа по колонкам?
2. И как переносить последующие изменения в настройках доступа по колонкам, если по Id уже не понять, это те же настройки или уже другие?
Владимир, логика перераздачи прав не предусматривает сохранения Id записей. Вы можете предусмотреть в своих скриптах привязку не к Id, а к SysAdminUnitId, SubjectColumnUId и SubjectSchemaUId, они должны быть стабильными.
Говорят, в будущих версиях планируется новый механизм прав, там будет возможна привязка их к пакету.