Automatyzacja analizy systemu dzięki skryptom SAP GUI
Lukardi > Blog > Bezpieczeństwo > Automatyzacja analizy systemu dzięki skryptom SAP GUI
- Bezpieczeństwo
Skrypty SAP GUI
SAP umożliwia automatyzację powtarzalnych procesów dzięki odpowiednio pisanym skryptom.
Aby możliwe było ich uruchomienie na systemie, należy odpowiednio przygotować środowisko:
- SAP GUI – włączenie obsługi skryptów w ustawieniach
- system SAP – należy ustawić na systemie parametr sapgui/user_scripting na wartość TRUE
Tworzenie skryptów SAP GUI
Standardowo skrypty SAP GUI pisane są w języku VBA (Visual Basic for Applications). VBA pozwala na nawiązanie sesji z SAP GUI, a następnie wykonywanie na nim odpowiednich operacji. Taki skrypt składa się z linii odnajdujących odpowiedni element w SAP GUI według jego z góry ustalonej ścieżki, a następnie wykonanie na takim elemencie akcji, np. wpisanie tekstu lub kliknięcie przycisku.
Przykładowo ścieżka może wyglądać w następujący sposób:
wnd[0]/tbar[0]/okcd
Pierwszym elementem jest wnd (okno). Indeks zerowy oznacza główne okno aplikacji, kolejne indeksy mogą być na przykład pop-upami pojawiającymi się po wykonaniu jakichś działań. Po znaku ‘/’ znajduje się tbar[0], który jest pierwszym paskiem narzędzi w SAP GUI. Po kolejnym znaku ‘/’ znajduje się już konkretny element, w tym przypadku okcd, który jest polem, do którego wpisuje się TCODE.
Automagica
Czy w takim razie, do pisania skryptów do SAP GUI trzeba się nauczyć języka VBA? Odpowiedź brzmi: nie. Z pomocą przychodzi nam opensource’owa biblioteka Automagica. Automagica pozwala na wykonywanie tych samych działań na SAP GUI przy pomocy języka Python.
Oprócz obsługi SAP GUI, Automagica pozwala także na wykonywanie ruchów myszką, korzystanie z Microsoft Excel, wysyłanie maili i wiele innych.
Zastosowanie
Dzięki bibliotece Automagica, możliwe jest zautomatyzowanie wielu powtarzalnych procesów.
Przykładowo, w połączeniu z narzędziem SAST można zautomatyzować analizę transakcji wykorzystywanych przez użytkownika. Automatycznie można uruchomić przeznaczoną do tego funkcjonalność SAST, a następnie pobrać dane do Excela. Poniżej znajduje się przykładowy kod, który to realizuje:
#init SAPGUI
sap = SAPGUI()
#login
sap.login(sap_system_name, sap_mandant, sap_username, sap_pass)
#enter tcode
sap.set_text(‘/app/con[0]/ses[0]/wnd[0]/tbar[0]/okcd’, ‘/n/sast/us_user_activ’)
#run transaction
sap.click(‘/app/con[0]/ses[0]/wnd[0]/tbar[0]/btn[0]’)
#input user name
sap.set_text(‘/app/con[0]/ses[0]/wnd[0]/usr/ctxtSO_USER-LOW’, ‘suspect’)
#execute
sap.click(“/app/con[0]/ses[0]/wnd[0]/tbar[1]/btn[8]”)
#result to spreadsheet
sap.click(“/app/con[0]/ses[0]/wnd[0]/tbar[1]/btn[46]”)
sap.click(“/app/con[0]/ses[0]/wnd[0]/tbar[1]/btn[43]”)
press_key(‘enter’)
sap.click(“/app/con[0]/ses[0]/wnd[1]/tbar[0]/btn[11]”)
Następnie taki skrypt mógłby uruchomić kolejną funkcjonalność SAST, pokazującą wykorzystane przez tego samego użytkownika konflikty SoD i pobrał je do kolejnego pliku Excela.
Na końcu, operując już na samym tylko Excelu, skrypt mógłby wykonując operacje na komórkach wygenerować ostateczny raport o skonfliktowanych transakcjach w formie umożliwiającej zespołowi autoryzacyjnemu w wygodny i przejrzysty sposób przejrzenie konfliktów i podjęcie decyzji o odebraniu uprawnień lub mitygacji konfliktu.