SAP ITGC Detailed Testing Guide
SAP ITGC Detailed Testing Guide
March 2026
Table of Contents
This guide provides step-by-step audit procedures for testing five critical SAP IT General Controls (ITGCs). For each control the
guide documents: (a) the control objective and risk statement, (b) how to define and obtain the population, (c) sample size
selection using AICPA / IIA guidance, (d) Information Produced by the Entity (IPE) requirements and validation, (e) detailed
testing procedures, (f) a complete list of required screenshots, and (g) common findings with remediation guidance.
What is IPE?
IPE (Information Produced by the Entity) refers to any report, extract, or data file generated from the client's systems and used
as audit evidence. Because the client produces this information, the auditor must validate its completeness and accuracy before
relying on it. Failure to validate IPE is one of the most common PCAOB inspection findings.
Completeness check Agree record count to an independent source (e.g., SM04 Screenshot of count comparison
active user count vs SU01 export row count)
Accuracy check Trace 3–5 sample records from the extract back to the Side-by-side screenshots (extract row + SAP
source screen in SAP to confirm fields match screen)
Parameters verification Screenshot the selection parameters / filters used when Screenshot of report selection screen with
running the report before extracting parameters
Date / period verification Confirm the report covers the full audit period (not truncated) Report header showing date range
Authorization to produce Note who ran the report and confirm they had appropriate User ID visible in screenshot; access
read-only access confirmation
1 – 24 All items 100% testing Population too small for sampling; test every item
241 – 1,000 40 Random / Stratified Higher population warrants larger sample; consider
stratification by risk
Note: Sample sizes above assume a tolerable deviation rate of 5% and expected deviation rate of 0%. Increase sample size if prior year
deficiencies exist or if the control is rated as high-risk.
Control Objective
New SAP user accounts and role modifications are created only upon receipt of an authorized, documented request. The roles
assigned in SAP must match the approved roles in the request. The individual requesting access, the approver, and the IT
administrator who action the change must be three separate individuals.
Control Frequency
Event-driven (each provisioning occurrence throughout the year).
Key Risk
Unauthorized or excessive access is granted without proper approval, enabling unauthorized transactions, data manipulation, or
fraud.
Relevant T-codes
SU01 (User Maintenance), SU10 (Mass User Maintenance), SUIM (User Information System – Users by Role / Profile), SM04
(Active Users List), SU53 (Authorization Check Failure).
A. Population Definition
The population consists of ALL SAP user account creation events AND all role/profile modification events that occurred during
the audit period (typically 12 months). This includes new joiners, internal transfers receiving new roles, and any ad-hoc role
additions throughout the year.
New user accounts created SU01 → display user → change log; or SUIM → Users → User ID, user name, creation date, created by,
Users by Logon Date; or SE16 → table USR02 filtered by client, validity dates
creation date
Role / profile assignments SUIM → Roles → Roles by User; SE16 → AGR_USERS User ID, role name, assigned date, assigned by,
added table (role assignments with from/to dates); or SAP GRC valid from/to
Access Control provisioning log
Mass user changes SU10 → audit log; SM20 security audit log filtered for user Change timestamp, changed by, field changed,
master record changes (event class USER) old value, new value
1 – 24 events All 100% testing Full population tested; document each item
25 – 52 events 15 Random selection Use random number generator; cover at least one event
per quarter
53 – 240 events 25 Random selection Ensure spread across full 12-month period
241+ events 40 Stratified random Stratify by department or role type; select proportionally
Practical tip: Always include at least one privileged/admin account creation in the sample if any exist. Separately test any bulk/mass user
creations (SU10) as they carry higher risk.
User creation extract SE16 → USR02 or BNAME, ERDAT (creation date), 1) Count rows vs SM04 active users count.
(USR02 / SU01 log) SU01 change log ERNAM (created by), USTYP, 2) Trace 3 records to SU01 display screen.
GLTGB (validity end) 3) Screenshot selection parameters (date
range = full audit period). 4) Confirm extract
was run with read-only ID
Role assignment report SE16 → AGR_USERS UNAME, AGR_NAME, FROM_DAT, 1) Agree total role assignments to SUIM
(AGR_USERS) TO_DAT, ORG_FLAG role-by-user count. 2) Trace 3 sample
assignments to SU01 role tab. 3)
Screenshot SE16 selection screen with
date filter visible
SUIM user-by-role report SUIM → Users → User ID, role, validity dates, user type 1) Cross-check count to AGR_USERS
Users by Role Name export. 2) Confirm report date range covers
full audit period. 3) Screenshot SUIM
selection screen
SAP GRC provisioning log (if GRC Access Control Request ID, requestor, approver, role, 1) Agree approved request count to SU01
GRC used) → Access Request approval date, status creation count. 2) Confirm no requests with
'Approved' status lack a corresponding
SU01 account. 3) Screenshot GRC report
parameters
Run SE16 on table USR02 with ERDAT (creation date) filtered to the audit period. Export to Excel. Validate completeness:
compare row count to SM04 active user count and SU01 total user count. Document any variance. Screenshot the SE16
selection parameters screen before exporting.
Apply random number selection (use =RAND() in Excel or an audit software random function) to identify the required sample
items. Document the selection methodology and seed.
For each sampled user, request the original access request ticket from the ITSM tool (ServiceNow, Remedy, JIRA, etc.). The
ticket must show: requester name, date of request, roles/access requested, approver name, and approval date/timestamp.
Confirm that the user who REQUESTED access, the APPROVER, and the IT admin who ACTIONED the change in SU01 are
three different individuals. Flag any instance where the same person performed two or more of these roles as a finding.
Open SU01 for the sampled user. Go to the Roles tab. Screenshot all assigned roles. Compare the roles shown in SAP to the
roles approved on the access request ticket. Flag any roles present in SAP that were not on the approved request.
Compare the approval date on the request ticket to the account creation date in SAP (ERDAT in USR02 or the change log in
SU01). Flag any accounts created BEFORE an approval exists or more than 2 business days after approval (or per policy SLA).
Separately review the SU01 change log (SU01 → display user → Environment → Change Documents) for any role additions
post-creation. Apply the same approval-verification steps above to each modification event in the sample.
For each sample item, complete the testing workpaper showing: user ID, event date, approver, roles approved vs assigned,
segregation confirmation, and pass/fail conclusion.
SS-1.1 SE16 / USR02 selection Full selection screen showing date range (= audit IPE validation – proves extract covers
screen period), client, and row count result correct period and population size
SS-1.2 SU01 – Logon Data tab User ID, validity dates, user type, lock status Confirms account parameters match what
(sample user) indicator was approved
SS-1.3 SU01 – Roles tab All roles assigned to the user with valid-from / Role match test – compare to approved
(sample user) valid-to dates request
SS-1.4 SU01 – Change Change history showing who made each change Proves the IT admin who created/modified
documents (sample user) and when (Environment → Change Documents) the account
SS-1.5 Access request ticket Full ticket showing requester, approver, date, roles Primary approval evidence for segregation
(ITSM) requested, and approval status test
SS-1.6 SUIM – Users by Role SUIM selection parameters showing role searched IPE validation for role-assignment
report (selection screen) and date filters completeness
SS-1.7 SM04 – Active users Total active user count for population completeness IPE completeness check – reconcile to
count reconciliation USR02 extract count
F. Common Findings
Role assigned in SAP not on High IT admin granted additional access at Remove unauthorized roles immediately;
approved request their discretion or copied roles from update provisioning procedure; implement
another user GRC preventive SoD check
Requester = Approver (lack of High Manager self-approves access for their Update access request workflow to enforce
segregation) own account; no secondary approval different approver; re-test after remediation
required by policy
Account created before approval Medium-High IT created account based on verbal Enforce system-level workflow gate; no
exists instruction; ticket raised retrospectively provisioning without an approved ticket
No formal access request found Medium-High Informal email or verbal requests used; Implement mandatory ITSM ticket workflow;
no ticketing system for SAP provisioning retrain IT provisioning team
Control Objective
SAP user accounts are promptly disabled or deleted when an employee is terminated, resigns, or is placed on extended leave.
Access is revoked within the policy-defined SLA (typically same business day to 24 hours from the official termination date
recorded in the HR system). No terminated user should have any active login capability in SAP.
Control Frequency
Event-driven (each employment termination or departure event).
Key Risk
Terminated employees or contractors retain active SAP access, enabling unauthorized transactions, data exfiltration, or
sabotage after departure.
A. Population Definition
All employee terminations in HR system / payroll system termination report. Alternatively, Employee ID, SAP User ID, termination date,
audit period request from HR team a listing of all leavers (terminations, termination type (voluntary / involuntary),
resignations, retirements, contract ends) during the period. department
Corresponding SAP Cross-reference HR termination list to SU01 account status. SAP User ID, account lock date, lock reason,
accounts for terminated Run SUIM → Users → Users with Logon Date after last logon date, current validity end date
users Termination Date as a negative test.
Contractor / vendor account Separate contractor management register or procurement Contractor ID, SAP User ID, contract end
terminations system. SAP service accounts with defined expiry dates from date, SAP validity end date
SU01.
Important: In addition to the standard sample, ALWAYS perform a 100% exception check (negative test) by running SUIM to identify any
terminated user who had a SAP login AFTER their termination date. This is separate from the sample test and should cover the full population.
HR termination extract HR system Employee ID, name, SAP User ID, 1) Agree count to HR management report
(SuccessFactors / SAP termination date, last working day, total leavers. 2) Trace 3 records to HR
HCM / Workday) termination reason system screens. 3) Screenshot extraction
parameters (date = full audit period). 4)
Confirm HR team sign-off on completeness
SU01 user status extract SE16 → USR02 or BNAME, UFLAG (lock flag), GLTGV / 1) Reconcile active user count to SM04. 2)
(USR02) SUIM export GLTGB (validity dates), TRDAT (last Filter locked accounts – confirm UFLAG=64
logon date) (admin lock) for terminated users. 3)
Screenshot SE16 selection screen
Security audit log – SM20 → filter event User ID, login timestamp, terminal / IP 1) Run for each sampled terminated user.
post-termination logins class AU1 (successful address, client 2) Confirm no successful logins on or after
login) for terminated termination date. 3) Screenshot SM20 filter
user IDs parameters and results
SAP GRC Access Control – GRC → Access Request ID, triggered by (HR 1) Agree GRC termination events to HR list.
user termination workflow (if Request → integration / manual), completion 2) Confirm automated HR-to-GRC
applicable) Termination requests date, accounts revoked integration ran for all events. 3) Screenshot
GRC workflow completion status
Request the complete termination listing from HR for the audit period. Validate the extract is complete by agreeing the count to
the HR management dashboard or annual headcount report. Screenshot the HR report selection parameters showing the full
12-month date range.
Map each terminated employee's HR user ID to their SAP User ID. For any gaps (HR record with no SAP User ID), enquire with
HR/IT whether the employee had SAP access. Document the mapping.
From the full population apply random selection. Ensure the sample includes at least one involuntary termination (termination for
cause) if any exist, as these carry highest risk.
For each sampled user, open SU01 (Display User). Navigate to Logon Data tab. Confirm: (a) the account shows a lock indicator,
(b) the lock type is 'Administrator Lock' (not just password lock), and (c) the lock date is on or before the termination date per the
policy SLA. Screenshot the Logon Data tab for each sample item.
Create a workpaper column: Lock Date minus Termination Date. Per policy, this should be ≤ 0 days (same day) to ≤ 1 business
day. Flag any item where the gap exceeds the policy SLA.
For each sampled user, run SM20 (Security Audit Log) filtering on the user ID and date range from the termination date onward.
Confirm zero successful login events (AU1) appear after the termination date. Any login after termination is an automatic High
finding.
Run SUIM → Users → Users by Logon Date with the date range set to AFTER the earliest termination date in the period.
Cross-reference results against the HR termination list. Any terminated user appearing in the SUIM logon report (i.e., they logged
in after the audit period started) must be investigated and each occurrence documented.
For contractor accounts, open SU01 and confirm the account validity end date (Gltgb) is set to the contract end date. Screenshot
the Logon Data tab showing the expiry date.
SS-2.1 HR system termination Full extraction screen showing date range = audit IPE – population completeness and period
report period, total record count, extraction timestamp validation
SS-2.2 SU01 – Logon Data tab User ID, lock indicator, lock type, lock date / Primary test evidence – lock date vs
(each sampled user) admin-lock date, validity end date termination date comparison
SS-2.3 SU01 – Last logon date Last logon date stamp on Logon Data tab Confirms last system activity; should
field precede termination date
SS-2.4 SM20 – Security audit log Filter parameters: User = sampled user ID, Event = IPE validation – proves the correct filters
(filter screen) AU1 (Successful Login), Date = termination date were applied
onward
SS-2.5 SM20 – Results (zero Empty result screen or list of events post-termination Confirms no logins after termination date
records expected)
SS-2.6 SUIM – Negative test SUIM report parameters showing the date filter used IPE validation for negative test
selection screen for the full-population login check completeness
SS-2.7 SUIM – Negative test Result list (should contain no terminated users); or Full-population exception identification
results annotated list of any exceptions found evidence
SS-2.8 SU01 – Contractor validity Logon Data tab showing Gltgb (valid to) date for Confirms time-bound access for
end date contractor accounts non-employees
F. Common Findings
Account not locked on termination High Manual HR-to-IT notification process; Implement automated HR-to-SAP
date (SLA breach) delays in ticket routing; no automated provisioning integration; daily reconciliation
integration job; escalation alerts for breaches
Successful login after termination Critical Account not locked at all; shared Immediately lock account; investigate
date credentials; VPN/SSO bypass of SAP session; assess whether unauthorized
auth transactions occurred; consider fraud
referral
Account not deleted / remains High Account locked but not removed; no Implement 30-day post-lock deletion policy;
active for months post-exit clean-up process; forgotten service schedule regular orphaned-account
accounts cleanup runs
Contractor with no expiry date set Medium SU01 provisioning template used without Set mandatory expiry date for all
expiry date; no contractor governance non-employee accounts; automate expiry
policy notifications
Control Objective
Business process owners (managers, not IT) formally review and certify the SAP access held by their direct reports at least
quarterly or semi-annually. Access that is no longer required is identified and revoked in a timely manner. The review produces
documented evidence of manager sign-off for each user reviewed.
Control Frequency
Periodic – quarterly or semi-annually (per organization policy).
Key Risk
Users accumulate excessive access over time due to role changes, promotions, or project assignments that are never cleaned
up ('access creep'), increasing fraud and error risk.
A. Population Definition
All access review SAP GRC Access Control → Access Review Campaign log; Campaign ID / name, review date, reviewer
campaigns conducted in the or manual review evidence repository (SharePoint, email (manager), number of users reviewed, access
audit period archive, shared drive) removed Y/N
Users included in each GRC campaign detail report or manual review spreadsheet User ID, user name, role/access listed,
campaign manager decision (certify / revoke), date of
decision
Access removals actioned Post-review ITSM tickets for revocations, or GRC automated User ID, role removed, removal date, removed
following review revocation log by, days between review decision and SU01
lock/role removal
1 review per year 1 (100%) Full review Single occurrence; test the one review in full
2 reviews (semi-ann) 2 (100%) Full review Both occurrences must be tested; select sample of users
from each
4 reviews (quarterly) 4 (100%) All occurrences All 4 must be tested; select user-level sample from each
campaign
User-level sample 25–40 users Random from each campaign For each campaign occurrence, randomly sample users
within each campaign reviewed; confirm manager certification and any
revocations
GRC Access Review SAP GRC → Access Campaign name, start/end date, 1) Confirm campaign dates align with policy
Campaign report Control → Periodic reviewer, status (complete/open), % frequency. 2) Confirm status = 'Complete'
Review → Campaign reviewed, items revoked for all campaigns in period. 3) Screenshot
Monitor campaign monitor showing all campaigns
and statuses. 4) Trace 3 user decisions to
GRC detail screen
Manual recertification SharePoint / email / User ID, role, manager name, 1) Verify spreadsheet completeness against
spreadsheet (if GRC not shared drive – request certification date, decision current SU01 active user count. 2) Confirm
used) from control owner (keep/remove), signature or email manager name matches org chart. 3)
approval Confirm date is within the review period. 4)
Screenshot the spreadsheet header
showing version, date, manager name
Post-review revocation ITSM tickets or GRC Ticket number, user ID, role removed, 1) For every 'revoke' decision in the review,
evidence automated revocation date actioned, actioned by confirm a corresponding SU01 change
log exists. 2) Calculate days between review
decision and SU01 change. 3) Screenshot
SU01 change documents post-review
SUIM current role SUIM → Roles → User ID, role, valid from/to 1) For users where access was marked
assignment report Roles by User 'revoke', confirm role no longer appears in
SUIM. 2) Reconcile SUIM count to GRC
campaign count. 3) Screenshot SUIM
selection and output
Obtain the list of all access review campaigns from GRC or the control owner. Confirm the number of reviews matches the policy
frequency (e.g., 4 quarterly reviews for a January–December audit year). If any campaign is missing, this is a control gap /
non-performance finding.
For each campaign, check the reviewer field. The reviewer must be the business manager / process owner, NOT an IT or SAP
team member. If IT performed the review, this is a segregation deficiency (IT should not certify their own access grants).
Compare the number of users included in the campaign to the total active user count from SU01 at the time of the review. All
active SAP users must be covered. Flag any users excluded from the review. Screenshot the campaign user count and SU01
active user count for reconciliation.
Within each campaign, randomly select 25 users (or all if fewer than 25). For each selected user obtain the manager's
certification decision (Certify / Revoke) and the date of the decision.
For every user in the sample where the manager decided to REVOKE access, check SU01 or the ITSM ticket to confirm the
access was actually removed. Calculate the number of days between the revocation decision date and the SU01
lock/role-removal date. Flag any revocation not actioned within the policy SLA (typically 5 business days).
Step 6 – Check for access certifications that should have been revoked
For a selection of users marked as 'Certified', cross-check their current roles against the HR system to confirm they are still in the
same role. If a user was certified but has since moved roles or been terminated, flag as a review quality deficiency.
If >90% of users were simply 'rubber-stamped' as certified with no removals at all, perform additional inquiry with the control
owner. A review with zero removals across a large user base may indicate a superficial review rather than genuine
recertification.
SS-3.1 GRC Campaign Monitor All campaigns in the period with: name, frequency, Confirms all required review cycles were
(or equivalent) start date, end date, status (complete/incomplete), completed by business managers
reviewer name
SS-3.2 GRC Campaign detail – User ID, role listed, manager decision Primary evidence of manager review
user-level decisions (certify/revoke), decision date for sampled users decision for each sample item
SS-3.3 SU01 – Logon Data / For each revoked user: SU01 screen showing role Confirms revocation decisions were actually
Roles tab post-revocation removed or account locked, with change date actioned in SAP
SS-3.4 SU01 Change Change log entries showing role removals Timeliness evidence: days between
Documents – post-review post-review decision date decision and action
changes
SS-3.5 Manual review Document title, review period, manager name, date Authenticates the review document and
spreadsheet header (if no signed, signature or email thread confirms manager (not IT) performed it
GRC)
SS-3.6 SUIM – current role SUIM search result for a revoked user showing role Confirms the revocation is fully reflected in
assignments for revoked no longer assigned SAP authorization layer
users
F. Common Findings
Access review not performed for High No formal process; control owner Implement SAP GRC Access Review
one or more required periods turnover; manual burden without GRC campaigns with automated reminders;
automation assign deputy control owners
IT team performed the review High Business owners unaware of Re-assign review ownership to business;
instead of business managers responsibility; IT fills the gap for provide training; update RACI; re-perform
convenience review with correct owner
Revocation decisions not actioned Medium-High Manual workflow between review tool Automate revocation from GRC to SU01;
within SLA and SU01; no escalation process add SLA breach alerts; re-test after fix
Large proportion of 'certify' Medium Managers not reviewing in detail; review Implement mandatory justification field for
decisions with no removals process too burdensome; lack of certifications; audit a random sample of
(rubber-stamp risk) accountability certified access for reasonableness
Control Objective
Access to SAP superuser profiles (SAP_ALL, SAP_NEW), Basis administrator functions, and emergency/FireFighter IDs is
restricted to the minimum number of authorized individuals. All privileged access usage is pre-approved, time-limited, logged by
the system, and the logs are independently reviewed after each use by a control owner who is separate from the user of the
privileged access.
Control Frequency
Standing privileged access – reviewed periodically (quarterly). FireFighter ID usage – reviewed after each use (event-driven).
Key Risk
A user with SAP_ALL or unrestricted Basis access can create accounts, change configurations, post any transaction, view all
data, and delete audit logs — bypassing every application control. Unmonitored privileged access is the highest-risk ITGC
exposure.
A. Population Definition
Users with SAP_ALL or SUIM → Profiles → Users by Profile – search for SAP_ALL User ID, profile name, assigned date, client,
SAP_NEW profiles and SAP_NEW separately. Also SE16 → UST04 user type
(user-profile assignments)
Users with critical Basis SUIM → Authorization Objects → Users with Authorization User ID, authorization object, field values, role
authorization objects Values – objects: S_DEVELOP (production), S_RZL_ADM, name containing the object
S_ADMI_FCD, S_TABU_DIS with sensitive tables
FireFighter / Emergency SAP GRC → Firefighter → Log Report (GRACFFLOG); or FF ID, user who checked out FF ID, checkout
Access IDs and all usage SE16 → GRACFFALL for FF activity log table date/time, return date/time, reason/ticket,
events approver
Privileged ID usage in SM20 – filter on privileged user IDs for the full audit period, User ID, event class, event description, date,
Security Audit Log event classes: DU (user master changes), AU (logon), BU time, client, terminal
(authorization failures)
SAP_ALL / SAP_NEW 100% (all holders) Full population Small population; test ALL holders; each represents critical
holders risk
Basis admin privilege 100% or top 5–10 Full or judgmental If population > 10, judgmentally select highest-risk roles
holders
FireFighter usage All events 100% Low frequency; all events must be reviewed
events (1–24)
FF usage events 15 Random Cover all FF IDs used; ensure each ID sampled at least
(25–52) once
FF usage events (53+) 25–40 Random stratified Stratify by FF ID and user; ensure no single user
dominates the sample
SUIM – Users by Profile SUIM → Profiles → User ID, profile name, validity dates, 1) Run separately for SAP_ALL and
(SAP_ALL / SAP_NEW) Users by Profile Name user type, client SAP_NEW. 2) Cross-check count to UST04
SE16 export. 3) Screenshot SUIM selection
screen with profile name parameter clearly
visible. 4) Confirm report date = run date
(point-in-time access check)
GRC FireFighter Log Report SAP GRC Access FF ID, reason code, user, checkout 1) Agree FF log count to SE16
Control → Firefighter date/time, return date/time, activity GRACFFALL total rows for the period. 2)
→ Log Report performed, approver Trace 3 events to GRC FF detail screen. 3)
Screenshot GRC log selection parameters
(date range, all FF IDs selected). 4) Confirm
extract is complete (check row count before
and after applying date filter)
SM20 – Security Audit Log SM20 → filter by user User, date, time, event class, 1) Confirm audit logging is enabled: run
for privileged IDs ID list, event = DU* / description, terminal, client SM19 and screenshot log-active status. 2)
AU* Screenshot SM20 filter parameters showing
user IDs and date range. 3) Confirm log
retention covers full audit period
UST04 – User-to-profile SE16 → table UST04 BNAME (user), PROFILE, MANDT 1) Filter for SAP_ALL and SAP_NEW. 2)
assignment table (client) Reconcile count to SUIM. 3) Screenshot
SE16 selection screen. 4) Note any users in
production vs non-production
Run SUIM → Users by Profile for SAP_ALL and SAP_NEW across ALL clients (especially production – typically client 100 or 200
in ECC). For each holder: confirm there is a documented business justification and senior management approval (CISO or IT
Director level). Screenshot the SUIM output showing user IDs and validity dates.
Question whether each SAP_ALL holder genuinely requires this level of access. SAP_ALL should be limited to: emergency
break-glass accounts (locked when not in use) and maximum 1–2 senior Basis administrators with a documented business case.
Flag any developer, functional consultant, or business user with SAP_ALL as an automatic High finding.
For standing SAP_ALL accounts (emergency/break-glass), confirm the account is locked in SU01 except during approved use
windows. Check the SM20 log to see if the account was unlocked at any time during the period — if so, confirm it aligns to an
approved emergency event.
Obtain the GRC FireFighter configuration: (a) list of FF IDs, (b) roles assigned to each FF ID, (c) list of users authorized to check
out each FF ID (FF User assignment), (d) list of FF Owner IDs (the individuals who review FF logs). Screenshot the GRC FF
configuration screen.
For each sampled FF usage event: (a) confirm a pre-approved ticket/reason code exists for the checkout, (b) confirm the
checkout duration was reasonable (not weeks-long), (c) confirm the FF Owner reviewed the log after the session (GRC log
review workflow completion), (d) confirm the activity in the log matches the stated purpose of the checkout.
The FF Owner (reviewer) must review activity logs within 24–48 hours of FF ID return. Compare the FF return timestamp to the
GRC log-review completion timestamp. Flag any reviews completed more than 2 business days after the session as a timeliness
exception.
Run SM20 for all privileged user IDs covering the full audit period. Look for: (a) logins at unusual hours (outside business hours),
(b) user master record changes (DU events) without a corresponding change ticket, (c) authorization object changes, (d) table
browser access (SE16/SE17) on sensitive tables (HR, payroll, financial). Document and investigate any anomalies.
SS-4.1 SUIM – Users by Profile: Selection screen (profile = SAP_ALL, client = Complete list of SAP_ALL holders; IPE
SAP_ALL production) AND results list showing all holders, completeness validated against UST04
valid dates, user type
SS-4.2 SUIM – Users by Profile: Same as above but for SAP_NEW profile Confirms SAP_NEW holders — separate
SAP_NEW risk profile from SAP_ALL
SS-4.3 SU01 – SAP_ALL Logon Data tab for each SAP_ALL holder showing Confirms emergency accounts are locked
account lock status lock indicator (and lock date for break-glass at rest
accounts)
SS-4.4 GRC FireFighter FF ID list with: roles assigned, authorized users, FF Governance structure evidence; confirms
configuration screen Owner (log reviewer), active/inactive status owner is separate from FF user
SS-4.5 GRC FF Log Report – GRC log selection parameters: date range = full IPE validation – proves all FF activity in the
selection screen audit period, all FF IDs included period was captured
SS-4.6 GRC FF Log – individual FF ID, checked-out by, date/time, reason code / Primary evidence for each sampled FF
usage detail (sampled ticket #, activities performed, return date/time usage event
event)
SS-4.7 GRC FF Log Review FF Owner review workflow status = 'Reviewed', Confirms independent post-use review was
completion (sampled reviewer name, review completion date/time performed and is timely
event)
SS-4.8 SM20 – filter parameters Filter screen showing: user ID list (privileged IPE validation for security audit log review
for privileged ID review accounts), event classes (AU, DU, BU), date range = scope
full audit period
SS-4.9 SM19 – audit log active SM19 screen confirming security audit logging is Confirms log completeness – prerequisite
status enabled (Active = Yes) and filters cover all clients for SM20 testing
F. Common Findings
Business / functional users Critical Convenience; emergency access never Remove immediately; redesign roles;
assigned SAP_ALL removed; poor role-design leading to implement GRC FireFighter for legitimate
SAP_ALL workaround emergency needs
FireFighter logs not reviewed after High FF Owner unaware of responsibility; Configure mandatory GRC log review
use GRC workflow not configured; manual workflow; escalation email to CISO if review
process broken not completed within 48 hrs
Multiple users sharing a single FF High Convenience; insufficient FF IDs Create individual FF IDs per person; never
ID provisioned for the team size share credentials; non-repudiation is lost
with shared IDs
SAP_ALL assigned to developer in Critical Developer needed emergency fix; Remove S_DEVELOP and SAP_ALL from
production access never removed; no FireFighter production; implement change
alternative in place management procedure for emergency
patches
Control Objective
Direct access to the SAP database (SAP HANA, Oracle, or Microsoft SQL Server) is restricted exclusively to authorized
database administrators (DBAs) who require it for their job function. End-users, business analysts, functional consultants, ABAP
developers, and application support staff must NOT have direct database-level credentials. All legitimate system access occurs
through the SAP application layer, which enforces all authorization checks.
Control Frequency
Periodic review of database user accounts (minimum semi-annually) + event-driven review of any new DBA account creations.
Key Risk
Direct database access completely bypasses SAP's authorization layer. A user with direct DB access can read all financial data,
modify transaction records, delete audit entries, and extract confidential data (HR, payroll, vendor master) without any SAP-level
controls preventing or logging the activity.
A. Population Definition
All database user accounts SAP HANA Studio or HANA Cockpit → Security → Users; or Username, user type (standard/restricted),
(SAP HANA) SQL: SELECT USER_NAME, USER_STATUS, privileges granted, last login, active/inactive
LAST_SUCCESSFUL_CONNECT FROM [Link] status, creation date
All database user accounts SQL: SELECT USERNAME, ACCOUNT_STATUS, Username, account status, created date, last
(Oracle) CREATED, LAST_LOGIN, PROFILE FROM DBA_USERS login, profile, granted roles
ORDER BY USERNAME
Database privilege / role HANA: SELECT * FROM SYS.GRANTED_ROLES WHERE Grantee (username), privilege or role, admin
assignments GRANTEE = ''. Oracle: SELECT GRANTED_ROLE, option Y/N, grantor
ADMIN_OPTION FROM DBA_ROLE_PRIVS WHERE
GRANTEE = ''
SAP application layer – OS / OS-level: /etc/passwd for UNIX (SAP system user accounts); OS username, group membership, last
DB-level admin accounts Windows: local admin group members on DB server password change, account status
SAP system users with DB These are SAP's own service accounts; confirm they use Account name, password last changed, who
access (e.g., SAPABAP1, secure passwords and are not shared with human users knows the password (documented in
SAPHANA) password vault)
DBA accounts All 100% review DBA population should be tiny; test every account
(expected: 2–5)
DB user accounts All 100% authorization check Every DB user must be on the authorized DBA list
(total DB users)
DB privilege All critical 100% for admin/DBA roles Focus on SYSDBA, DBA role, SAP_INTERNAL; any grant
assignments privileges of these is critical
New DB accounts All or 25 100% or random All new DB accounts require an authorized change ticket
added in period
Key principle: The authorized DBA list should be a very short list (typically 2–5 individuals). If the DB user list contains dozens of accounts, the
control is likely deficient by design.
SAP HANA DB user extract HANA Studio → USER_NAME, USER_STATUS, 1) Run SQL query and capture full result (all
[Link] view, or LAST_SUCCESSFUL_CONNECT, users). 2) Screenshot the SQL query AND
HANA Cockpit → User CREATOR, CREATE_TIME, the result set. 3) Confirm result was run on
Management USER_DEACTIVATED production HANA system (check system ID
in connection string). 4) Agree row count to
DBA team's authorized list. 5) Trace 3
records to HANA Cockpit user screen
Oracle DB user extract SQL*Plus or SQL USERNAME, ACCOUNT_STATUS, 1) Screenshot SQL query with connection
Developer: SELECT * CREATED, LAST_LOGIN, details (instance name visible). 2) Export
FROM DBA_USERS; DEFAULT_TABLESPACE, results to Excel. 3) Agree total user count to
SELECT * FROM GRANTED_ROLE DBA register. 4) For any unknown account,
DBA_ROLE_PRIVS; request creation authorization record
Authorized DBA list IT Security team – Name, employee ID, SAP User ID, 1) Obtain current authorized DBA list from
formal DBA DB username, authorization date, IT security or Basis team. 2) Confirm each
authorization register; approver, business justification person on the list has an HR job title
HR job title consistent with DBA function. 3) Confirm
confirmation each was formally authorized (IT Manager
or CISO approval). 4) Screenshot
authorization register / email approvals
DB access review evidence IT Security Review date, reviewer (must be IT 1) Confirm review was performed in the
semi-annual or annual Manager or CISO level), accounts audit period. 2) Confirm reviewer is at
access review for DB reviewed, any removals appropriate level. 3) Screenshot or copy of
accounts review sign-off. 4) For any account
removed, confirm DB-level deletion was
completed
SCC4 – SAP client settings SAP T-code SCC4 Client number, client name, change 1) Run SCC4 and screenshot all clients. 2)
option, client role, protection level Confirm production client shows 'Changes
to Repository and cross-client customizing
objects not allowed'. 3) Confirms
application-layer protection complements
DB-layer review
Coordinate with the SAP Basis / DBA team to run the database user query on the PRODUCTION database. For SAP HANA: run
the SQL against [Link]. For Oracle: run against DBA_USERS and DBA_ROLE_PRIVS. Critically: screenshot the query
AND the connection details confirming you are on the production system (system ID, hostname).
Request the formal list of individuals authorized to have direct database access from the IT Security Manager or CISO. This
should be a formally maintained register, not a verbal list. If no formal register exists, this is itself a finding.
For EVERY account in the database user extract, confirm it appears on the authorized DBA list. Any database account not on the
authorized list is an immediate exception requiring investigation. Also check: are all authorized DBAs actually in the DB? (To
ensure the authorized list is current.)
For each DBA account on the authorized list, confirm: (a) there is a formal approval document (manager / CISO sign-off), (b) the
approval is still current (not expired or for a former employee), (c) the employee's HR job title is consistent with a DBA role (flag if
For each DB user account, check the privileges assigned. Flag any non-DBA account with: SAP HANA – CATALOG READ,
DATA ADMIN, USER ADMIN, or OPERATOR system privileges; Oracle – DBA role, SYSDBA, CREATE USER, DROP USER,
ALTER USER.
Confirm SAP's own service accounts (SAPABAP1, SAPHANA, SAPDBA) use secure, non-default passwords stored in a
password vault. Confirm no human user knows these passwords directly. Request the password vault policy and last rotation
date.
Review the last login date for each DB account. Flag: (a) any account with no logins in >90 days (potentially orphaned/unused —
consider for deletion), (b) any account with a last login date after a person's termination date.
Run SCC4 and confirm the production SAP client is set to 'Changes and transports for client-specific objects not allowed' (or
higher protection). Screenshot the SCC4 output. This is a complementary application-layer control to the DB access restriction.
Obtain evidence that a formal DB access review was conducted in the audit period. Confirm the reviewer is at an appropriate
level (IT Manager or CISO). Confirm any accounts identified for removal were actually removed from the database.
SS-5.1 HANA SQL query + SQL query text (SELECT * FROM [Link]) Confirms the query was run on
connection info AND connection string / system ID showing PRODUCTION system; IPE authenticity
production database
SS-5.2 [Link] / Full result set: all DB usernames, status, last login, Complete population of database accounts
DBA_USERS query result creation date (exportable to Excel) for authorization check
SS-5.3 HANA Cockpit / Oracle User detail screen showing: username, user type, Confirms privilege assignments for sample
Enterprise Manager – privileges assigned, last login, active status accounts
individual user detail
(sampled)
SS-5.4 Authorized DBA register Formal list / register showing: name, DB username, Basis for comparison; confirms formal
authorization date, approver, current status governance of DB access
SS-5.5 DBA approval Manager or CISO approval email / form showing Access authorization evidence – confirms
documentation (sampled authorization for the sampled DBA account each DBA was formally approved
DBA)
SS-5.6 SCC4 – production client SCC4 screen showing production client protection Complementary application-layer control;
settings level (Changes not allowed or higher) limits direct DB impact via transport bypass
SS-5.7 DB access review sign-off Evidence that periodic DB access review occurred: Demonstrates ongoing monitoring of the DB
review date, reviewer, accounts confirmed / removed access population
SS-5.8 Password vault policy Password vault access log or policy screen showing Confirms SAP system accounts are
(service accounts) SAP service account passwords are vaulted and securely managed
rotated
F. Common Findings
Developer or functional user with Critical Developer needed ad-hoc data fix; Immediately revoke; investigate all activity
direct DB access access never removed; no DB access since access was granted; implement DB
governance access governance policy
No authorized DBA register High Informal management of DB access; Create and maintain formal DB access
maintained assumption that 'only the DBA team has register; review and certify semi-annually;
access' without formal list CISO sign-off
SAP service account passwords High Passwords shared informally among Rotate all service account passwords
not vaulted / known to multiple team; no password rotation process; immediately; store in CyberArk or
people original default passwords equivalent vault; restrict access to vault
No periodic review of DB user Medium-High DB access treated as 'set and forget'; no Implement semi-annual DB access review;
accounts process to identify orphaned or include in IT Security review calendar;
excessive accounts assign reviewer (not the DBA team
themselves)
Legacy / service accounts with Medium-High Historical migration accounts; Disable immediately pending investigation;
DBA privileges and no owner test/sandbox accounts promoted to implement account ownership requirement
production for all DB accounts
1. Identify the IPE Before testing begins, list every report/extract you will rely on IPE log in workpaper identifying each report,
as audit evidence. Each one must be separately validated. its source, and who produced it
2. Validate completeness Agree the record count in the extract to an independent Screenshot of count comparison with variance
count (SM04 active users, HR headcount, GRC campaign note (if any)
total). Any variance must be explained.
3. Validate accuracy Trace 3–5 records from the extract back to the live SAP Side-by-side screenshots: extract row + SAP
system screen. Fields must match exactly. screen for same user/event
4. Capture parameters Before exporting any report, screenshot the selection Screenshot of report parameter/selection
parameters screen. This proves the correct period, client, screen prior to extraction
and filters were applied.
5. Confirm coverage period The report header or parameters must show the extract Report header with date range; or parameter
covers the full audit period (not a partial period). screen showing FROM/TO dates = audit
start/end
6. Document who ran the Record the SAP User ID and name of the person who ran User ID visible in screenshot header; SAP
report each report. Confirm they had read-only access and are access confirmation for that user ID
independent from the control owners.
SS-1.1–1. User Creation/Modification SE16/USR02, SU01 Logon+Roles+Change docs, Approval chain, role match, provisioning
7 ITSM ticket, SUIM, SM04 segregation
SS-2.1–2. User Revocation HR termination report, SU01 lock status + last login, Timeliness of lock; no post-termination
8 SM20 (filter + results), SUIM negative test logins; full-population exception test
SS-3.1–3. Access Review GRC campaign monitor, GRC user decisions, SU01 All review cycles completed; manager
6 post-revocation, SU01 change docs, manual (not IT) certified; revocations actioned
spreadsheet, SUIM post-revocation
SS-4.1–4. Privileged Access SUIM SAP_ALL+SAP_NEW, SU01 lock, GRC FF Minimum privilege; FF governance;
9 config, GRC FF log, GRC FF review, SM20 post-use independent review; audit log
(filter+events), SM19 active
SS-5.1–5. Database Access HANA/Oracle SQL + results, HANA Cockpit user Only authorized DBAs have DB access;
8 detail, DBA register, DBA approval, SCC4, DB formal governance; service accounts
review sign-off, password vault secured
SU01 User master record – create, display, lock, change password, view All 5 controls
roles
SUIM User Information System – comprehensive access reports by user, All 5 controls
role, profile, authorization object
SM04 Active users in the system (current logged-in users count) Controls 1, 2, 3
SM20 Security audit log viewer – logon events, user master changes, Controls 2, 4
authorization failures
SE16 Data browser – direct table access (USR02, AGR_USERS, UST04, All 5 controls
GRACFFALL, etc.)