← Powrót do bloga
cloud_sync SoD · SAP BTP · Dostęp hybrydowy

SoD wyrasta z klasycznego SAP. Oto co zbudowaliśmy z myślą o tym.

Dostęp nie mieszka już tylko w transakcjach SAP. Mieszka w zakresach BTP, uprawnieniach non-SAP oraz w tożsamościach usług i AI, które wywołują twoje API. smartGRC traktuje każde z nich jako pełnoprawnego obywatela Segregacji obowiązków - bez przebrań.

eventOpublikowano 4 września 2026 schedule10 min czytania codeZawiera sekcję techniczną
Najpierw model

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:

Łańcuch autoryzacji BTP (XSUAA)
UŻYTKOWNIK człowiek lub usługa KOLEKCJA RÓL jednostka przypisania ROLA instancja szablonu na aplikację SCOPE czasownik na zasobie ← tu naprawdę siedzi uprawnienie

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ładZnaczenie
xsappnameaicore!b164aplikacja (identyfikator)
objectscenariosobiekt biznesowy / domena
pathbatchespodzasób lub ścieżka funkcjonalna
verbwritedozwolona 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 stara optyka zawodzi

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.

Sygnał

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ę.

Jeśli nowa powierzchnia staje się widoczna dla SoD tylko dzięki temu, że udaje transakcję - model walczy z tobą.
Co mamy

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ć.

Dwa kształty silnika
SILNIK OPARTY NA TRANSAKCJACH t-kod SAP katalog Fiori zakres BTP non-SAP wiersz-cień przebiera za t-kod SILNIK operuje tylko na transakcjach i obiektach autoryzacji Konflikty SoD tylko pary t-kodów SILNIK NIEZALEŻNY OD UPRAWNIEŃ t-kod SAP katalog Fiori zakres BTP non-SAP SILNIK obiekt + aktywność, agnostyczny wobec źródeł - wszystkie first-class Konflikty SoD BTP × SAP × non-SAP „Wyglądaj jak t-kod albo bądź niewidzialny." „Bądź tym, czym jesteś. Silnik zajmie się resztą."

Bez wierszy-cieni. Bez białej listy do spełnienia. Zakres jest first-class, ponieważ silnik został tak zbudowany.

smartGRC vs SAP GRC AC

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ówSAP GRC AC 12.0smartGRC
Założenie silnikaTransakcje SAP i obiekty autoryzacjiDowolne uprawnienie (obiekt + aktywność), agnostyczne wobec źródła
Nowa powierzchnia (np. BTP)Niestandardowy adapter ABAP + przebranie wiersza-cieniaKonfiguracja konektora; zakres jest first-class
ZasięgSkoncentrowany na SAP; inne doklejoneSAP + non-SAP + BTP + AI / usługi, jeden model
Konflikt hybrydowy (BTP × SAP)Trudny do wyrażeniaJedna reguła międzysystemowa
FootprintCiężki add-on ABAP, waga przy upgradachLekka usługa, niski footprint
Onboarding powierzchniProjekt developerskiDodanie konektora
Pełne request → provision → auditSzerokie i dojrzałeSkupione 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.

▚ Szczegóły techniczne dla programistów

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
SubaccountSystem (konektor)
Kolekcja rólRola złożona
RolaRola pojedyncza
ZakresObiekt = 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.

Gdzie leży prawdziwa praca

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.

1

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 · standard
2

Zdefiniować, 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 · moat
3

Zaraportować 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ż natywne

Konektor 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ć.

Konektor każdy potrafi napisać. Model ryzyka BTP potrafi zdefiniować tylko ktoś, kto zna BTP. Treść jest moat-em.

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ą.

Natywne BTP · samoprzyznanie uprawnień
Zarządzanie kolekcjami ról (administrator bezpieczeństwa) + Dowolny uprzywilejowany zakres biznesowy

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.

Natywne BTP · konfiguruj i używaj interfejsu
Zarządzanie 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.

Hybrydowy · BTP × S/4HANA
BTP Administrowanie automatyzacją / scenariuszem AI, który proponuje księgowanie + S/4 Zatwierdzenie lub księgowanie tego dokumentu

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ść.

Szerszy obraz

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ę.

Przyszłość SoD to nie lepsze przebranie.

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 na żywo

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ć