Posted: Mon Nov 12, 2012 12:52 pm Post subject: Сканирование кода для проверки полномочий
Добрый день!
Пишу здесь впервые и надеюсь на небольшой совет от профессионалов. Сам я только начинаю свой профессональный путь в САПе как АБАП-разработчик, так что большими знаниями в этой области похвастаться не могу.
Суть вопроса следующая:
Написать программу, которая бы выполняла следующие задачи:
1) Идентификация всех активных клиентских программ, т.е. тех, которые за указанныя временной промежуток (технически, как я понимаю, максимальный срок для такой статистики - это один год) хотя бы один раз использовались (вызывались).
2) Проверка найденных программ на соответствие полномочиям, т.е. насколько та или иная программа соответствует требованиям по проверке полномочий. Т.к. у клиента много разработанных им самим Z- и Y- программ, нужно перед заменой релиза проверить, насколько они выполняют требования безопасности.
Первый пункт я с горем пополам осилил сам, необходимую статистику об активных за указанный срок программах я получаю.
Со вторым немного сложнее, т.к. знаний мало, а опыта еще меньше. Я не прошу писать за меня код, надеюсь осилить это сам. Был бы Вам очень благодарен за небольший течнический концепт, каким именно образом решить эту задачу.
Мои мысли до сегодняшнего дня:
1) Сканирование кода программы и поиск "критических" переменных, таких как VKORG, BUKRS, EKORG и т.д.
2) В случае нахождения таких переменных сканирование кода на наличие AUTHORITY-CHECK с соответствующими объектами полномочий.
3) Запомнить программу как невыполняющая требования , в случае если проверка полномочий отсутствует.
Я пока не совсем разобрался с концепцией полномочий в САПе. Насколько я понял, для таких критических переменных как VKORG существуют определенные объекты полномочий, которые можно использовать в AUTHORITY-CHECK OBJECT. Возможно, в этом месте все сложнее чем я думаю
Выше написанные мысли пока ничего общего с течническим концептом не имеют, являются лишь моими представлениями как решить задачу. Если бы кто-то навел на конкретные решения, т.е. на способ технически эти мои мысли воплотить в АБАПе, был бы вам за это очень благодарен.
Age: 40 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Mon Nov 12, 2012 3:05 pm Post subject:
Могу проконсультировать только по HR программам, если такие имеются. _________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Спасибо за ответ! А есть принципиальная разница, HR-программа или нет? Суть ведь в анализе кода, синтакс везде одинаковый. Или я неправ изначально в подходе?
Age: 40 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Mon Nov 12, 2012 4:09 pm Post subject:
В HR будет совсем другой подход, поэтому так и выделил. Боюсь там в 2 словах вообще не объяснить. Но если надо будет, то сделаю в личку и скажу что делать дальше.
А вообще задача нетривиальная достаточно. Я думаю, что вы ее качественно вообще не сможете сделать, но наверное от вас не этого хотят, а скорее, надо чем то занять, и чтобы не совсем бесполезным. _________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
В HR будет совсем другой подход, поэтому так и выделил. Боюсь там в 2 словах вообще не объяснить. Но если надо будет, то сделаю в личку и скажу что делать дальше.
А вообще задача нетривиальная достаточно. Я думаю, что вы ее качественно вообще не сможете сделать, но наверное от вас не этого хотят, а скорее, надо чем то занять, и чтобы не совсем бесполезным.
Ну, пока задача - сформулировать течническую концепцию решения. При программировании я смогу рассчитывать на поддержку. Хотя думаю, что справлюсь сам, параллельно разобравшись во многих темах . Если у Вас будет время написать в личку несколько идей, буду Вам благодарен. Спс.
2)Зачем изобретать велосипед - для проверки использования полномочий есть замечательная программа RSABAPSC.
Согласен, к этому еще добавить RPR_ABAP_SOURCE_SCAN. RSABAPSC ищет только АБАП-команды и, к тому же, не учитывает классы: если проверка полномочий вызывается в каком-то методе, то RSABAPSC это не найдет. RPR_ABAP_SOURCE_SCAN осуществляет поиск по символам, при этом заглядывает в includes, но не читает ФМ. С точки зрения программирования можно использовать что-то из этих обеих программ, чтобы велосипед не изобретать. Но зов помощи касался именно методологической стороны задачи. А пока да, сижу как раз весь день над RSABAPSC, пытаюсь логику программы изучить. Пока знаний не хватает, откровенно говоря
Age: 48 Joined: 25 Jan 2008 Posts: 580 Location: Москва
Posted: Tue Nov 13, 2012 10:41 am Post subject: Re: Сканирование кода для проверки полномочий
dwm wrote:
2) Проверка найденных программ на соответствие полномочиям, т.е. насколько та или иная программа соответствует требованиям по проверке полномочий. Т.к. у клиента много разработанных им самим Z- и Y- программ, нужно перед заменой релиза проверить, насколько они выполняют требования безопасности.
Мои мысли до сегодняшнего дня:
1) Сканирование кода программы и поиск "критических" переменных, таких как VKORG, BUKRS, EKORG и т.д.
2) В случае нахождения таких переменных сканирование кода на наличие AUTHORITY-CHECK с соответствующими объектами полномочий.
3) Запомнить программу как невыполняющая требования , в случае если проверка полномочий отсутствует.
Я пока не совсем разобрался с концепцией полномочий в САПе. Насколько я понял, для таких критических переменных как VKORG существуют определенные объекты полномочий, которые можно использовать в AUTHORITY-CHECK OBJECT. Возможно, в этом месте все сложнее чем я думаю
Выше написанные мысли пока ничего общего с течническим концептом не имеют, являются лишь моими представлениями как решить задачу. Если бы кто-то навел на конкретные решения, т.е. на способ технически эти мои мысли воплотить в АБАПе, был бы вам за это очень благодарен.
Заранее спасибо!
На самом деле проблема намного сложнее и автоматизировать ее полностью практически нельзя.
Для осмысления ситуации необходимо знать следующие факты:
1. На проекте при изменении любого кода должно призводиться тестирование.
2. Автоматизировать тестирование не получится ввиду того, что логика обработки данных должна учитывать разные случаи, которые моделируются только вручную.
3. Поиск полномочий непосредственно в коде нужен, но он не будет:
-учитывать условия вызова проверки полномочий.
-учитывать отключение проверки полномочий в транзакции SU24
-учитывать проверку полномочий низкого уровня (реализуемую с помощью вызова низкоуровневых функций, например AUTHORITY_CHECK_TCODE)
Более эффективный анализ проверки полномочий - это запуск трассировки полномочий с момента начала выполнения программы.
Трассировка полномочий осуществляется с помощью транзакции ST01.
4."критичных" переменных не существует - все проверки полномочий должны быть заранее описаны в постановках задач.
Иначе формирование ролей для пользователей превратится в пытку как для бизнес-консультантов, так и для администраторов полномочий. _________________ С уважением,
Удав.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.