Jak faktycznie działa dostęp w SAP BTP
W klasycznym SAP prawa osoby wynikają z ról, które grupują transakcje i obiekty autoryzacji. W SAP BTP klocki budulcowe są inne - i zrozumienie ich to cała gra. Autoryzacje w subaccount BTP zarządzane są przez XSUAA i tworzą łańcuch:
Użytkownik ma przypisaną jedną lub więcej kolekcji ról - jednostkę, którą faktycznie rozdaje administrator, luźno porównywalną do roli złożonej. Kolekcja ról zawiera role (instancje szablonów ról, które żyją wewnątrz aplikacji). Każda rola przyznaje zestaw zakresów - a zakres to miejsce, w którym naprawdę siedzi uprawnienie.
Zakres to ciąg w formacie xsappname.object.path.verb. To nie jest transakcja - to czasownik na ścieżce zasobu, publikowany przez API aplikacji. Na przykład aicore!b164.scenarios.batches.write rozkłada się na:
| Część | Przykład | Znaczenie |
|---|---|---|
xsappname | aicore!b164 | aplikacja (identyfikator) |
object | scenarios | obiekt biznesowy / domena |
path | batches | podzasób lub ścieżka funkcjonalna |
verb | write | dozwolona operacja |
Zatem jednostką dostępu w BTP jest uprawnienie na poziomie API - „może zapisywać batche w tej aplikacji" - a nie „może uruchomić transakcję X". Ta jedna różnica jest powodem, dla którego tradycyjna optyka nie daje sobie rady.
Dlaczego model transakcji / obiektów Fiori nie pasuje
Przez dwadzieścia lat Segregacja obowiązków w SAP oznaczała transakcje i obiekty autoryzacji: konflikt to para transakcji, których jedna osoba nigdy nie powinna mieć razem, a silniki reguł były zbudowane wyłącznie wokół tego kształtu. Aplikacja Fiori też nie zmienia leżącego u podstaw modelu - i tak ostatecznie sprowadza się do katalogów, kodów transakcji i tych samych obiektów autoryzacji.
BTP nie ma żadnej z tych kotwic. Nie ma kodu transakcji, nie ma S_TCODE, nie ma obiektu autoryzacji dynpro, na którym można by się dopasować. Jednostką jest zakres - natywny dla aplikacji ciąg opisujący czasownik na zasobie. Silnik związany z transakcjami dosłownie nie ma się czego chwycić: całe jego słownictwo (transakcja, obiekt autoryzacji, aktywność) nie istnieje na tej powierzchni.
Klasyczne podejście ma więc dwie opcje - zignorować BTP całkowicie albo wcisnąć każdy zakres w kształt transakcji, którym nigdy nie był. Co prowadzi nas do obejścia.
Gdy trzeba przebrać zakres za transakcję
Powszechny sposób wprowadzenia BTP do silnika opartego na transakcjach polega na sprawieniu, by zakres wyglądał jak transakcja. Opublikowano znakomite prace inżynierskie, które robią dokładnie to: niestandardowy adapter mapuje użytkowników XSUAA, kolekcje ról, role i zakresy do struktur silnika, a - ponieważ analiza silnika na poziomie akcji rozpoznaje tylko zakodowaną białą listę typów zasobów (transakcje SAP, usługi) - emituje drugi, wiersz-cień, który przebiera każdy zakres za transakcję, aby analiza mogła go w ogóle zobaczyć.
To działa i to jest sprytne. Ale wiersz-cień to sygnał: silnik nigdy nie był zaprojektowany do rozumowania o czymkolwiek, co nie jest transakcją SAP, więc każdy nowy model dostępu musi być tłumaczony z powrotem na transakcję.
Silnik SoD niezależny od modelu uprawnień
smartGRC startuje z innego założenia. Jego silnik ryzyka nie jest podpięty do kodów transakcji SAP - operuje na uprawnieniach ogólnie: obiekt i aktywność, niezależnie od systemu, z którego pochodzą. Ten jeden wybór projektowy sprawia, że reszta jest czysta:
Zakres BTP mapuje się do natywnego uprawnienia, a nie do przebranej transakcji. Transakcja SAP to jeden rodzaj uprawnienia; zakres XSUAA to inny; uprawnienie non-SAP to trzeci. Siedzą obok siebie w tej samej analizie - więc konflikt Segregacji obowiązków może rozciągać się na BTP × SAP × non-SAP w jednej regule. Ten konflikt hybrydowy - na przykład ktoś, kto może administrować aplikacją BTP zasilającą proces i zatwierdzać wynik w S/4HANA - jest dokładnie tym, czego potrzebuje obraz SoD obejmujący całe środowisko, i dokładnie tym, co silnik oparty tylko na transakcjach ma problem wyrazić.
Bez wierszy-cieni. Bez białej listy do spełnienia. Zakres jest first-class, ponieważ silnik został tak zbudowany.
Dwa narzędzia, dwa kształty problemu
Żeby być sprawiedliwym wobec Access Control: to nie jest AC zrobione źle, to AC poproszone o coś poza jego kształtem. SAP GRC AC to pełny pakiet governance - request, approve, provision, analyse i audit - głęboko wpięty w klasyczny SAP. Dla klasycznego cyklu request-to-audit w SAP jest dojrzały i trudny do pobicia, i ta szerokość jest realna.
smartGRC jest celowo węższy i zbudowany inaczej: skoncentrowany, niezależny od modelu silnik SoD. Tam, gdzie oba się nakładają - analiza dostępu pod kątem Segregacji obowiązków w nowoczesnym, hybrydowym, coraz bardziej non-SAP środowisku - wybory projektowe się rozjeżdżają:
| Segregacja obowiązków | SAP GRC AC 12.0 | smartGRC |
|---|---|---|
| Założenie silnika | Transakcje SAP i obiekty autoryzacji | Dowolne uprawnienie (obiekt + aktywność), agnostyczne wobec źródła |
| Nowa powierzchnia (np. BTP) | Niestandardowy adapter ABAP + przebranie wiersza-cienia | Konfiguracja konektora; zakres jest first-class |
| Zasięg | Skoncentrowany na SAP; inne doklejone | SAP + non-SAP + BTP + AI / usługi, jeden model |
| Konflikt hybrydowy (BTP × SAP) | Trudny do wyrażenia | Jedna reguła międzysystemowa |
| Footprint | Ciężki add-on ABAP, waga przy upgradach | Lekka usługa, niski footprint |
| Onboarding powierzchni | Projekt developerski | Dodanie konektora |
| Pełne request → provision → audit | Szerokie i dojrzałe | Skupione na SoD; łączy się z IAM / IAG dla provisioningu |
Uczciwa linia: jeśli zadaniem jest pełny cykl request-to-audit na klasycznym SAP, AC to nieprzypadkowa waga ciężka. Jeśli zadaniem jest Segregacja obowiązków w hybrydowym środowisku - zrobiona lekko, bez przebierania każdej nowej powierzchni za transakcję - smartGRC jest zbudowany do tego kształtu.
Jak to działa, w teorii
Mechanizm, a nie specyfikacja implementacji: jak odczytywane są dane autoryzacyjne BTP, jak zakres mapuje się do modelu SoD i dlaczego przebranie wiersza-cienia nie jest potrzebne. Wywołania XSUAA poniżej to standardowy model autoryzacji; mapowanie jest tą częścią, która różni się od adaptera GRC AC.
1 · Ścieżka odczytu (konektor REST). Nowy typ systemu „BTP (XSUAA)" siada w katalogu systemów obok SAP ACC / S/4HANA. Konektor uwierzytelnia się przez OAuth2 client-credentials wobec token endpointu subaccountu, a następnie trawersuje:
GET /Users?filter=userName eq "..." and origin eq "..." (SCIM) -> user + groups[]
GET /Groups?attributes=id,displayName (SCIM) -> kolekcje ról
GET /sap/rest/authorization/v2/rolecollections/<name> -> role_references[]
GET /sap/rest/authorization/v2/apps/<app>/roletemplates/<t>/roles/<r> -> scopes[].name
Spłaszczenie do jednego wiersza na zakres: użytkownik → kolekcja ról → rola → zakres
2 · Parsowanie zakresu. Rozdzielenie xsappname.object.path.verb na ostatniej kropce, aby ścieżki wielosegmentowe przetrwały:
aicore!b164.scenarios.batches.write
object = aicore!b164.scenarios.batches
activity = write
3 · Mapowanie do modelu smartGRC. Prosto, bez przebrań:
| BTP (XSUAA) | Model uprawnień smartGRC |
|---|---|
| Subaccount | System (konektor) |
| Kolekcja ról | Rola złożona |
| Rola | Rola pojedyncza |
| Zakres | Obiekt = xsappname.object.path · Aktywność = verb |
4 · Dlaczego bez wiersza-cienia. Silnik nie bramkuje analizy na poziomie akcji za zakodowaną białą listą typów zasobów, więc para obiekt/aktywność pochodząca z zakresu jest analizowana wprost - tą samą ścieżką kodu co t-kod SAP, bez podstawki S_TCODE/TCD. Jedna reprezentacja, jeden wiersz na zakres.
5 · Silnik vs konektor vs treść. Silnik jest niezmieniony (już agnostyczny wobec źródła - o to właśnie chodzi). Nową pracą jest konektor (OAuth2 CC + SCIM + klient REST Authorization v2, w pełni udokumentowany przez publiczne API XSUAA) oraz zestaw reguł (definiowanie funkcji SoD dla BTP i hybrydowych konfliktów BTP×SAP wartych dostarczenia jako pakiet startowy).
Ten sam pipeline co dla każdego innego źródła: konektor importuje uprawnienia → analiza → istniejące widoki Access risks / Investigations. Dowody już pasują: Obiekt = app.object.path, Aktywność = verb.
Trzy problemy - i tylko środkowy jest moat-em
Wszystko powyższe sprawia, że brzmi to jak opowieść o konektorze. Nie jest. Wprowadzenie BTP do Segregacji obowiązków dzieli się na trzy problemy i nie są one równe: dwa to inżynieria, jeden to ocena. Środkowy jest tam, gdzie faktycznie żyje przewaga.
Podłączyć się i pobrać dane
Uwierzytelnić się wobec XSUAA, przejść użytkownik → kolekcja ról → rola → zakres, zapisać jeden wiersz na zakres. Ograniczona inżynieria - API XSUAA są publiczne i udokumentowane.
Inżynieria · standardZdefiniować, co jest naprawdę ryzykowne na BTP
To nie jest problem kodowania. Które kombinacje zakresów są naprawdę toksyczne? Czy dany zakres administratora subaccountu, sparowany z konkretnym zatwierdzeniem w S/4, to realny konflikt czy tylko szum? Zrobienie tego dobrze to wiedza domenowa - sam zestaw reguł staje się różnicą.
Ocena · moatZaraportować i zbadać
Uwidocznić konflikty, zejść do dowodów, śledzić do zamknięcia. Gdy zakres jest już uprawnieniem first-class, to jest to, co smartGRC już robi natywnie - te same widoki Access risks i Investigations, do których wpływa każde inne źródło.
Inżynieria · już natywneKonektor to standard, a raportowanie już jest nasze. Rzadkim zasobem jest wiedza, które kombinacje uprawnień BTP w ogóle warto flagować - zestaw reguł odzwierciedlający sposób, w jaki BTP faktycznie przyznaje władzę, a nie tłumaczenie zestawu SAP. To treść, nie kod, i to jest część, którą trzeba zapracować, a nie dostarczyć.
Jak więc wygląda „toksyczne na BTP" w praktyce? Trzy ilustracyjne konflikty, które nosiłby świadomy BTP zestaw reguł - typy warte zdefiniowania, a nie gotowy pakiet reguł. Żadnego z nich nie ma w zestawie reguł opartym na transakcjach, ponieważ żaden z nich nie jest transakcją.
Ktokolwiek przypisuje kolekcje ról, może przypisać jedną sobie. Kontrola nad uprawnieniami i użycie tych uprawnień zbiegają się w jednej tożsamości - najbardziej BTP-specyficzne złamanie, jakie istnieje, i całkowicie niewidoczne dla zestawu reguł opartego na t-kodach, ponieważ „przyznaj sobie władzę" nie ma kodu transakcji.
destinations / connectivity
+
Uruchamianie integracji, która ich używa
Jedna osoba może wskazać żywe połączenie wychodzące - docelowy URL i przechowywane poświadczenia - gdziekolwiek chce, a następnie wyzwolić przepływ, który wysyła dane. Zdefiniuj-i-wykonaj bez drugiej pary oczu, na dokładnie tej powierzchni, która wynosi dane z firmy.
Skonfigurować zautomatyzowanego wytwórcę na BTP i być ludzkim kontrolerem w S/4 - międzysystemowa wersja załamania maker-checker. Wyrażalne tylko wtedy, gdy zakres i transakcja mogą siedzieć w tej samej regule, co jest całym sensem silnika agnostycznego wobec źródła.
To są konflikty, które decydują o tym, czy SoD dla BTP jest realne czy tylko teatrem. Napisanie ich dobrze wymaga kogoś, kto wie, jak BTP przyznaje władzę - i dlatego właśnie zestaw reguł, a nie konektor, jest miejscem, w którym koncentruje się wartość.
Ten sam model obejmuje tożsamości usług i AI
XSUAA nie wydaje tokenów tylko ludziom. Powiązania client-credentials uwierzytelniają aplikacja-do-aplikacji - konta serwisowe i agentów AI, którzy wywołują API BTP. Ponieważ smartGRC traktuje tożsamości nieludzkie tak samo jak użytkowników - analiza SoD, flagowanie dostępu wrażliwego i ciągły monitoring na kontach, a nie tylko na ludziach - zakresy BTP i tożsamości AI/usług są tą samą granicą, obsługiwaną przez ten sam model. SAP Audit Log dostarcza śladu aktywności, aby zamknąć pętlę.
To silnik, który traktuje transakcję SAP, zakres BTP i uprawnienie non-SAP jako to, czym są - first-class, obok siebie, w jednej analizie hybrydowej. To jest zakład, na którym zbudowany jest smartGRC.
Zobacz hybrydowy model SoD w demo smartGRC
Zakres BTP, transakcja SAP i uprawnienie non-SAP - wszystkie siedzące obok siebie w jednej analizie. Bez przebrań. Wypróbuj workflow w demo na żywo.
Warto przeczytać
Inteligentne raportowanie SoD
Jak AI zamienia ryzyko dostępu w SAP w dowody audytowe. Od 4 000 flag do obronionej listy skróconej.
Monitorowanie agenta AI w SAP
Przegląd oparty na wyjątkach dla aktywności o szybkości maszyny. Polityka whitelist + blacklist na konto, alerty w czasie rzeczywistym.
IAM vs GRC: jaka jest różnica
Modularne ujęcie integracji - gdzie kończy się IAM, a zaczyna GRC, i jak łączą się dla środowisk hybrydowych.