16 августа 2016 г.

Как понять каких полномочий не хватает пользователю?

Как вы уже, наверное, слышали, в SAP системе (AS ABAP её части) для разграничения доступа пользователей к тем или иным функциям системы используется концепция ролей и полномочий.

В системе действует принцип "что не разрешено, то запрещено". То есть изначально пользователю не разрешено ничего, кроме входа (логина) в систему.

Минимальный набор операций для того или иного бизнес-процесса выделяется в роль, которая имеет описание и меню, в котором могут быть транзакции, отчеты или внешние ссылки. Для каждой роли генерируется профиль полномочий, который содержит набор полномочий (или  разрешений) минимально достаточных для выполнения набора операций, для которого созадана роль (рис. 1). Про генерацию профиля я писал в этом посте.

Рис. 1. Роли и полномочия в SAP системе. 

Роли присваиваются пользователям, после чего пользователи получают, указанный в них, набор полномочий.

Присвоенный пользователю набор полномочий в SAP системе можно посмотреть в транзакции SU56 (рис. 2).

Рис. 2. Список присвоенных пользователю полномочий.

Проверка полномочий в SAP системе производится в 2 этапа:
  1. Проверка на запуск транзакции.
  2. Проверка на полномочия для тех или иных действий с объектом (просмотр, создание, удаление, изменение и т.п.) в транзакции.

Покажу на примере. 

Пользователь пытается запустить транзакцию SM04 и получает уведомление об отсутствии полномочий на запуск транзакции (рис. 3).

Рис. 3. Сообщение об отсутствии полномочий на запуск транзакции SM04.

Для анализа недостающих полномочий необходимо в поле запуска транзакции набрать транзакцию SU53 (рис. 4).

Рис. 4. Анализ недостастающих полномочий в транзакции SU53.

Как видно из снимка экрана, сообщение об ошибке это результат неудачной проверки первого типа - на запуск транзакции, в данном случае SM04. 

Стоит отметить, что все полномочия в SAP системе выделются через объекты полномочий, у которых есть поля и присвоенные им значения. Для удобства поиска и выбора все объекты полномочий объединены в классы. 

За полномочия на запуск транзакции (первый этап проверки) отвечает объект полномочий S_TCODE (рис. 4). Значениями поля TCD являются транзакции, которые пользователь может запускать. В данном случае система искала в этом объекте значение SM04, не нашла и выдала сообщение об ошибке.

После того, как я добавил такой объект с нужным значением поля в роль, которая присвоена пользователю, и заново сгенерировал профиль полномочий для этой роли, пользователь сделал вторую попытку запуска транзакции SM04. Система разрешила запуск транзакции, показав основной экран транзакции. Но при дальнейшей работе, например, попытке просмотреть список режимов у любого пользователя в транзакции SM04 вновь выдала сообщение об ошибке. На этот раз, на предмет проверки полномочий на объект (рис. 5).

Рис. 5. Сообщение об отсутствии полномочий на администрирование процессов/программ в SM04.

Анализ полномочий, транзакция SU53, показал отсутствие уже совсем другого объекта полномочий (рис. 6). Кстати, если проверять полномочия из запущенной транзакции, то стоит вбивать "/nSU53". Об этом я писал тут.

Рис. 6. Анализ полномочий на работу в транзакции SM04.

Данный инструмент показывает только те полномочия, на проверке которых система "споткнулась". То есть только один, последний, шаг. 

Для получения полного списка необходимых полномочий на выполнение той или иной операции в системе существует другой инструмент. Но об этом в другой раз.

Учтите, что если вы хотите анализировать у пользователей результаты последней проверки полномочий, то необходимо им добавить полномочия на запуск транзакции SU53 - объект S_TCODE. Либо можно использовать параметр auth/tcodes_not_checked (рис. 7). Можно ввести значения "SU53", "SU56" или сразу обе транзакции "SU53 SU56" и, тогда система не будет проводить первый тип проверки для этих транзакций.

Рис. 7. Параметр для отключения проверок для транзакций SU53, SU56.

Подробности о концепции ролей и полномочий можно найти в курсе "SAP ADM940 - ABAP AS Autorization Concept".

6 комментариев:

  1. Мы N лет назад отказались от показа меню ролей у пользователей. По причине ощутимой задержки на это действие (я лично не изучал/тестировал эту траблу, может она из-за старой версии клиента была а может и на самой современной такое)

    Сейчас пользователи сами делают себе меню на основе использования фаворитов.

    Интересует опыт в этом вопросе....

    ОтветитьУдалить
    Ответы
    1. Ну при большом количестве ролей у пользователя могут возникнуть проблемы в отображении совместного меню из разных ролей. Но не в плане производительности (это скорее была проблема локального характера), а в плане удобства, дублирования транзакций и так далее. Поэтому решение из фаворитов тоже имеет право быть.

      Удалить
    2. Проблема была точно не из-за неудобства показа N кусков меню (из-за N присвоенных ролей) а именно в производительности. Проверять на новом клиенте желания нет :D

      Удалить
    3. Вот тут попытался разобраться в этом вопросе: http://sidadm.blogspot.ru/2016/10/sap.html

      Удалить
  2. Спасибо за статью -- как всегда чётко и внятно.
    Надеемся на продолжение:
    "Для получения полного списка необходимых полномочий на выполнение той или иной операции в системе существует другой инструмент. Но об этом в другой раз."

    ОтветитьУдалить
    Ответы
    1. Михаил, спасибо за комментарий.
      Продолжение уже написано. Найти можно тут - http://sidadm.blogspot.ru/2016/09/st01.html

      Удалить