AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.04.2011, 17:03   #1  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,654 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Как правильно создавать новые и использовать существующие SecurityKey
При переходе на Ax2009 столкнулся с принципиально другой концепцией организации управления правами доступа по сравнению с Ax2.5 Чтобы не "наломать дров" хотел бы уточнить "как правильно" организовать это управление?

Поискал по форуму и статьям, но ответа на интересующие меня вопросы не нашел. В первую очередь интересуют ответы на следующие вопросы:

1. Следует ли при создании новых таблиц/форм/отчетов создавать новые SecurityKey или же использовать существующие 9 ключей в каждом модуле?

2. Как правило, при создании новых таблиц/форм/отчетов требуется, чтобы этот новый объект был НЕ доступен никому, кроме некоторых пользователей, список которых будет уточнен позднее. Это значит, что по умолчанию новые объекты не должны быть доступны никому (ну, кроме админа, разумеется). Можно ли это организовать без "ручного" снятия прав для новых объектов?

3. Следует ли вообще давать доступ на уровне Security Key или же следует давать доступ только на уровне объектов, подчиненных соответствующему Security Key?

Другими словами, интересует процесс организации прав доступа именно с позиции программиста. Что требуется от программиста и что он должен требовать от того, кто будет заниматься настройкой прав доступа в Ax2009?
Старый 19.04.2011, 17:12   #2  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2155 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Поиск по форуму результатов не дал? Система прав доступа практически не менялась с 3.0 (кроме нюансов с RLS).

Если вкратце:
1. securitykey обычно имеют двухуровневую структуру.
2. Первый уровень - модуль (раздел главного меню). Для человека, настраивающего права доступа интуитивно понятнее искать соответствующий объект именно в разрезе модуля. Т.е. если у вас не новый самописный модуль, а - стандартный, то используйте существующие ключи.
3. Условно стандартные ключи:
3.1. *Tables - все таблицы модуля должны иметь этот ключ.
3.2. Почти все остальные стандартные суффиксы применяются для menuitem - в завимости от того, обычная это форма, настройка, журнал, отчет, запрос или периодическая операция.
3.3. Отдельно выделяется *Misc - для menuitem, которые в Главном меню отсутствуют и вызываются из других форм.
4. Лучше не давать права на сами ключи (но иногда в стандарте без этого никак - проверка идет именно на сам ключ). На своих проектах стараюсь всегда настраивать права только на сами объекты, не на ключи.
5. Желательно все функциональные кнопки на формах делать через menuitem и на них вешать ключ. Настройщику прав далеко не очевидно, что ключ указан прямо на объекте формы (а еще хуже, если вообще не указан).
__________________
Ivanhoe as is..
За это сообщение автора поблагодарили: Владимир Максимов (5).
Старый 19.04.2011, 17:16   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Добавлю 5 копеек.
В ax 3.0 был неприятный глюк когда добавление корневого ключа приводило к странным багам. он был например выключен у админа. странно начинали работать RLS и.т.п. В 2009-й не проверял.

По п.2 - мы для особо важного функционала создали свои ключи и делали их наследников некоего базового ключа, который был для всех групп пользователей выключен. Таким образом новый функционал был автоматом недоступен никому и не приходилось перебирать кучу групп юзеров, отключая в каждом права.
Также тут выкладывали проект
Как программно изменить права доступа на объект ?
для массовой обработки групп прав.
За это сообщение автора поблагодарили: Владимир Максимов (2).
Старый 19.04.2011, 17:27   #4  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
How to: Create and Apply Security Keys
Цитата:
You need to apply a security key to:
  • Tables
  • Views
  • Menus
  • Menu items
  • Form controls
  • Report controls
Подробнее использование Security Keys в Microsoft Dynamics AX 2009 Development Best Practices White Paper
__________________

This posting is provided "AS IS" with no warranties, and confers no rights.
За это сообщение автора поблагодарили: Владимир Максимов (0).
Старый 19.04.2011, 17:31   #5  
someOne is offline
someOne
Участник
Аватар для someOne
 
173 / 423 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Добавлю еще кое что от себя...

В ах2009 все же есть особенности, которые требуют несколько иного подхода к настройке прав по сравнению с Ax3.0 (о чем написал Ivanhoe).

Кое что обсуждалось тут
Недостаточно прав на использование таблицы Common (DAX2009)
AOSAuthorization и права пользователей
SysDictField.visible() возвращает неверное значение

В некоторых местах системы требуется отойти от "классического" подхода раздачи прав на объекты - (раздавать права на ключи а не на объекты) - иначе некоторый функционал отказывается работать. Но многие такие проблемы решаются модификацией соответствующего функционала (обсуждалось ранее).
За это сообщение автора поблагодарили: Владимир Максимов (5).
Старый 20.04.2011, 10:38   #6  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,654 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Если я правильно понял, то основное правило работы с Security Keys заключается в следующем
  1. На сам Security Keys не дается вообще никаких прав. Полный запрет. Уровень доступа = "Нет доступа"
  2. Права даются на объекты, подключенные к соответствующему Security Keys
Все остальное - это уже следствие данного правила, тонкости реализации и ошибки функционала.

Другими словами Security Key выполняется функцию не собственно назначения прав, а всего-лишь предоставляет возможность настроить права подчиненных объектов. Делает не вполне то, для чего был задуман. Перестал быть "работягой" и стал "начальником"
Старый 20.04.2011, 10:50   #7  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Да, обычно именно так и поступаем. На сам ключ доступ не дается, только на нужные подчиненные объекты (про исключения уже написали). Новые ключи обычно создаются только если пишется свой модуль.
__________________
С уважением,
Олег.
Старый 20.04.2011, 11:09   #8  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2155 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Согласен.
__________________
Ivanhoe as is..
Старый 20.04.2011, 11:10   #9  
someOne is offline
someOne
Участник
Аватар для someOne
 
173 / 423 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Если я правильно понял, то основное правило работы с Security Keys заключается в следующем
  1. На сам Security Keys не дается вообще никаких прав. Полный запрет. Уровень доступа = "Нет доступа"
  2. Права даются на объекты, подключенные к соответствующему Security Keys
Все остальное - это уже следствие данного правила, тонкости реализации и ошибки функционала.

Другими словами Security Key выполняется функцию не собственно назначения прав, а всего-лишь предоставляет возможность настроить права подчиненных объектов. Делает не вполне то, для чего был задуман. Перестал быть "работягой" и стал "начальником"
До Ax2009 все было так, в принципе.
- Если не считать кое где явную проверку прав на ключ в коде некоторого функционала (hasSecuritykeyAccess), в том числе самописного.
- Если не считать, что некоторые "Умельцы" которые делали Российский функционал в Ax3.0 "вешали" ключ прямо на меню (а не на MenuItem, это касалось например, модуля "зарплата")
В этих случаях приходится давать права на ключ а не на объект.

В Ax2009 применили странную систему. С одной стороны старая система проверки прав на объекты осталась. С другой стороны ряд функционала, (о которой описано выше) требует права на ключи а не на объекты. Например система "AOSAuthorization" работает только с правами на ключи, а не на объекты, и не всегда это легко "обойти".

Например в форме настройки стандартного фильтра Ax2009 при попытке "присоединить" источник данных другой таблицы (n:1 или 1:n) пользователь "увидит" только те таблицы, на КЛЮЧ которых у него есть права, а не на ОБЪЕКТ таблицы, на которую имеет доступ.

И еще одна особенность AX2009 по сравнению, например с Ax3.0.
Если ранее loockup поля "открывались" даже на те таблицы, на которые у пользователя прав нет, то в Ax2009 lookup так же проверяет права доступа. Если доступа на таблицу нет - открывается "пустой" lookup.
Старый 20.04.2011, 11:18   #10  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2155 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от someOne Посмотреть сообщение
И еще одна особенность AX2009 по сравнению, например с Ax3.0.
Если ранее loockup поля "открывались" даже на те таблицы, на которые у пользователя прав нет, то в Ax2009 lookup так же проверяет права доступа. Если доступа на таблицу нет - открывается "пустой" lookup.
Ну как же так? Даже не поленился проверить. На какой версии 3.0 в лукапе можно увидеть данные из недоступной таблицы?
__________________
Ivanhoe as is..
Старый 20.04.2011, 11:37   #11  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
2Владимир Максимов
Цитата:
Best Practice в данном вопросе бесполезен. Из него совершенно не понятно надо ли давать права на ключи или на объекты; надо ли создавать новые ключи. Он просто констатирует то, что есть сейчас
Как это бесполезен? Там четко написано как и на каких объектах использовать и как именовать ключи.

Зачем использовать ключи Applying Security Keys
Цитата:
Applying Security Keys
The main reasons to apply user-level security are to:
  • Allow users to do only their designated tasks.
  • Protect sensitive data in the database.
  • Prevent users from inadvertently breaking an application by changing code or objects on which the application depends.

You need to apply a security key to:
  • Tables
  • Views
  • Menus
  • Menu items
  • Form controls
  • Report controls

Именование ключей Best Practices for Configuration and Security Keys
Цитата:
One of the nine security keys on a branch (the parent) should take the name of the module. For example, BOM. The other keys (up to eight more on a branch) should have the name of the module followed by one of the following suffixes: Daily, Journals, Inquiries, Reports, Periodic, Setup, Misc, or Tables. For example, BOMReports, BOMSetup, and LedgerPeriodic.

Enterprise Portal keys should have a prefix of EP followed by the name of the role. For example, EPAdmin and EPConsultant. Additional security keys for the role should take one of these suffixes: Misc, Info, Report, or Task. For example, EPAdminInfo and EPConsultantTask.
__________________

This posting is provided "AS IS" with no warranties, and confers no rights.
Старый 20.04.2011, 11:39   #12  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2155 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Продолжаем эксперимент

Цитата:
Сообщение от someOne Посмотреть сообщение
Например в форме настройки стандартного фильтра Ax2009 при попытке "присоединить" источник данных другой таблицы (n:1 или 1:n) пользователь "увидит" только те таблицы, на КЛЮЧ которых у него есть права, а не на ОБЪЕКТ таблицы, на которую имеет доступ.
Такое поведение не повторяется (ru6):
Миниатюры
Нажмите на изображение для увеличения
Название: Связь1.gif
Просмотров: 453
Размер:	33.1 Кб
ID:	6767   Нажмите на изображение для увеличения
Название: Связь2.gif
Просмотров: 392
Размер:	24.9 Кб
ID:	6768  

Изображения
 
__________________
Ivanhoe as is..
Старый 20.04.2011, 11:49   #13  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,654 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Poleax Посмотреть сообщение
2Владимир Максимов
Как это бесполезен? Там четко написано как и на каких объектах использовать и как именовать ключи.
Это не то. Это рекомендации по созданию новых Security Keys и некие общие слова о том, как в принципе их можно использовать. А права доступа-то как настраивать? Не в смысле через какую форму, а сама идеология (концепция) настройки прав.

Ну, вот каким образом коррелируются те цитаты, которые Вы привели с тем что описывают в данной теме все остальные участники? Где, в каком месте Best Practices говорится о том, что надо настраивать права не самих Security Keys, а подчиненных объектов? А права Security Keys настривать как раз не надо.
Старый 20.04.2011, 12:04   #14  
someOne is offline
someOne
Участник
Аватар для someOne
 
173 / 423 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Ну как же так? Даже не поленился проверить. На какой версии 3.0 в лукапе можно увидеть данные из недоступной таблицы?
Только что проверил - все так.
Воспроизвел на ax3.0 Build #1951.3730/514-193 sp3/OP023-71

Приложение без всяких модификаций.

1. Создал новую группу.Нового пользователя.

2. Дал права на таблицу заказы, строки заказа, меню форму заказы. Это все.

3. Открываю под пользователем test - вижу данные из таблицы "способ поставки"
Миниатюры
Нажмите на изображение для увеличения
Название: 2.JPG
Просмотров: 1161
Размер:	27.4 Кб
ID:	6769   Нажмите на изображение для увеличения
Название: 3.JPG
Просмотров: 1351
Размер:	67.0 Кб
ID:	6770  

Нажмите на изображение для увеличения
Название: 1.JPG
Просмотров: 1175
Размер:	75.7 Кб
ID:	6771  
Старый 20.04.2011, 12:21   #15  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2155 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Это не то. Это рекомендации по созданию новых Security Keys и некие общие слова о том, как в принципе их можно использовать. А права доступа-то как настраивать? Не в смысле через какую форму, а сама идеология (концепция) настройки прав.
Если нужен официальный документ - то вот.
Там и кратко про ключи, и про концепцию и как искать сложные случаи при настройке прав )

Еще хороший блог.
__________________
Ivanhoe as is..

Последний раз редактировалось Ivanhoe; 20.04.2011 в 12:32.
Старый 20.04.2011, 12:25   #16  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2155 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от someOne Посмотреть сообщение
Только что проверил - все так.
Воспроизвел на ax3.0 Build #1951.3730/514-193 sp3/OP023-71
[/IMG]
Я на SP6 проверял.
Для чистоты эксперимента приложите скриншот с "Просмотр" не "Главное меню", а "Контроль доступа" и раскрытой веткой Основное / Таблицы и желательно там же таблицу "Способ поставки". Спасибо.
__________________
Ivanhoe as is..
Старый 20.04.2011, 12:33   #17  
someOne is offline
someOne
Участник
Аватар для someOne
 
173 / 423 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Продолжаем эксперимент



Такое поведение не повторяется (ru6):
Продолжаем...

На Ax2009 RU6

Из этого видно, что право на картотеку номенклатуры у пользователя есть,
однако добавить эту таблицу в настройку фильтра в форме "заказы" он не может.
Миниатюры
Нажмите на изображение для увеличения
Название: 4.GIF
Просмотров: 451
Размер:	108.2 Кб
ID:	6772  
Старый 20.04.2011, 12:45   #18  
someOne is offline
someOne
Участник
Аватар для someOne
 
173 / 423 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Я на SP6 проверял.
Для чистоты эксперимента приложите скриншот с "Просмотр" не "Главное меню", а "Контроль доступа" и раскрытой веткой Основное / Таблицы и желательно там же таблицу "Способ поставки". Спасибо.
Прилагаю.

Там на одном экране запущенная аксапта от имени Admin и test
Никакого обмана - сначала настроенные права (сохранил), - затем - откртие от имени test
Миниатюры
Нажмите на изображение для увеличения
Название: 5.GIF
Просмотров: 476
Размер:	111.2 Кб
ID:	6773  
Старый 20.04.2011, 12:50   #19  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,654 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Если нужен официальный документ - то вот.
Там и кратко про ключи, и про концепцию и как искать сложные случаи при настройке прав )

Еще хороший блог.
Нет. Мне нужны не "общие слова", а именно те два простых правила, которые я и привел как тот принцип, по которому работают участники данной темы.
  1. На сам Security Keys не дается вообще никаких прав. Полный запрет. Уровень доступа = "Нет доступа"
  2. Права даются на объекты, подключенные к соответствующему Security Keys
Так вот, ЭТИХ правил в приведенных описаниях нет.
Старый 20.04.2011, 12:55   #20  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2155 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от someOne Посмотреть сообщение
Прилагаю.

Там на одном экране запущенная аксапта от имени Admin и test
Никакого обмана - сначала настроенные права (сохранил), - затем - откртие от имени test
Если придираться - то я просил ветку "Основное", т.к. способы поставки именно там. Но не верить вам у меня причин нет. Значит это явная ошибка SP3.
__________________
Ivanhoe as is..
Теги
ax2009, security, securitykey, как правильно, права доступа

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как правильно хранить статичный набор начальных данных в классах? mazzy DAX: Программирование 58 14.04.2011 12:10
зачем в dax2009 запретили создавать новые партии и серийники по строке журнала спецификации ? Logger DAX: Функционал 3 05.01.2011 19:18
Префиксы-суффиксы. Какой инструмент лучше использовать чтобы избавиться от префиксов? mazzy DAX: Программирование 48 28.10.2010 10:54
aEremenko: Как правильно подобрать оборудование и понять, сколько оно будет стоить? Blog bot DAX Blogs 0 17.04.2007 12:00
как правильно использовать not like polygris DAX: Программирование 1 06.05.2006 16:59

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 05:11.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.