security-grc — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited security-grc (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Governs all SAP authorization design, role management, segregation of duties (SoD), and GRC Access Control implementation. Authorization gaps create fraud exposure. SoD violations create audit findings. Neither is acceptable in a controlled system.
| Topic | Section |
|---|---|
| Role design and authorization objects | Iron Laws + Key Concepts |
| SoD conflict identification | Key Concepts + Rationalization Table |
| GRC Access Control (ARA/ARM/EAM/BRM) | Key Concepts |
| Firefighter / emergency access | Key Concepts + Red Flags |
| Security audit log | Transaction Codes |
| BTP / XSUAA / IAS security | Integration Points |
AUTHORITY-CHECK statements create uncontrolled access paths invisible to role-based security. Every custom transaction, report, and function that accesses sensitive data or changes business documents must implement AUTHORITY-CHECK OBJECT with appropriate field values and handle SY-SUBRC <> 0.| Agent Will Try To... | Why It Seems Reasonable | Why It Fails | Counter |
|---|---|---|---|
| Assign SAP_ALL to a developer in production "temporarily" | "They just need access for this one fix" | SAP_ALL has no audit trail for specific actions; it bypasses every authorization check; "temporary" access persists indefinitely without formal revocation | Assign Firefighter ID via EAM with time-boxed access and session logging; revoke immediately after the task |
| Create a single role with all tcodes for "super users" | "Power users need broad access" | Broad roles accumulate SoD conflicts; audit finds every user with the role in violation; remediation forces rebuild of all affected user access | Design roles by business function, not by user convenience; use GRC BRM to model business roles from compliant single roles |
| Skip SU24 maintenance for custom tcodes | "SU24 is optional, the auth check works anyway" | Without SU24 entries, PFCG role maintenance doesn't propose the correct auth objects; admins manually add objects and create gaps or over-permissions | Maintain SU24 for every custom tcode at development time; include in ABAP development DoD |
| Use a test user with SAP_ALL to "prove" an access issue | "It's just for debugging the authorization problem" | SAP_ALL users in production are visible in SM20 audit log; they create evidence of uncontrolled access that auditors will flag regardless of stated intent | Use SU53 to capture the exact failed auth object; use SU22/SU24 trace (auth trace via ST01 or /SDF/GRF_TRACE) to identify missing objects |
| Grant vendor create AND payment authorization to the same user | "Our team is small, everyone does everything" | Vendor create + payment execution is a textbook SoD conflict; a single user can create a fraudulent vendor and pay them; this is a critical SoD risk in every compliance framework (SOX, ISO, GDPR) | Compensating controls (dual approval workflow, automated payment monitor) are required if the SoD cannot be segregated due to team size; document the risk acceptance |
| Remove existing roles and reassign from scratch to "clean up" | "Their access is messy, easier to start over" | Removing all roles locks the user out immediately; re-assignment without SoD check creates new violations | Use GRC ARM (Access Request Management) for any access change; ARM enforces SoD simulation before provisioning |
| Set auth field values to '*' (wildcard) across the board | "Wildcards are simpler to maintain" | Wildcard fields bypass organizational restrictions; a CO user with BUKRS = * can post to every company code — including those outside their responsibility | Set specific organizational values for all restriction fields; use derived roles to maintain values by org level |
Watch for these in your own reasoning — each signals an authorization design or control failure:
AUTHORITY-CHECK.<HARD-GATE> Before any role assignment or access provisioning: run SoD simulation in GRC ARA (or equivalent) and confirm zero critical violations. Before any role design begins: confirm the authorization concept document exists, defines organizational levels, and has been approved by the business process owner and security team. Do not assign roles or create authorization profiles without these confirmations. </HARD-GATE>
S_TCODE has field TCD; F_BKPF_BUK has fields ACTVT and BUKRS).| Object | Purpose | Key Fields |
|---|---|---|
S_TCODE | Transaction code access | TCD |
S_TABU_DIS | Table display authorization | DICBERCLS, ACTVT |
S_DEVELOP | ABAP development objects | DEVCLASS, OBJTYPE, ACTVT |
F_BKPF_BUK | FI document by company code | BUKRS, ACTVT |
F_BKPF_KOA | FI document by account type | KOART, ACTVT |
M_BEST_BSA | Purchase order document type | BSART, ACTVT |
V_VBAK_AAT | Sales order type | AUART, ACTVT |
P_ORGIN | HR master data | INFTY, SUBTY, AUTHC, PERSA, PERSG, PERSK, VDSK1 |
B_USERSTAT | BOR object status | BOTYPE, ACTVT |
| Conflict | Risk |
|---|---|
Vendor master create (FK01) + Payment run execute (F110) | Fraudulent vendor payment |
Purchase order create (ME21N) + Goods receipt post (MIGO MvT 101) | Self-authorization of procurement |
Customer master create (FD01) + Cash receipts post (F-28) | Receivables manipulation |
GL journal entry post (FB50) + GL account master change (FS00) | Uncontrolled journal posting |
User create/modify (SU01) + Role assignment | Privilege escalation |
Payroll run (PC00_MXX_*) + Payroll master change (PA30) | Ghost employee and unauthorized pay |
.dcl files; referenced by @AccessControl.authorizationCheck: #CHECK annotation.PFCG-managed object used in DCL conditions to filter CDS result sets based on user's authorization field values. Essential for RAP-based applications.| TCode | Purpose |
|---|---|
| PFCG | Role Maintenance (Profile Generator) |
| SU01 | User Maintenance |
| SU10 | Mass User Maintenance |
| SU53 | Failed Authorization Check Analysis |
| SU22 | Auth Objects per Application |
| SU24 | Auth Object Check Indicators per TCode |
| SU25 | Upgrade preparation for SU24 |
| ST01 | System Trace (authorization trace) |
| SM19 | Security Audit Log Configuration |
| SM20 | Security Audit Log Display |
| SUIM | User Information System (role/user reports) |
| RSUSR002 | Users by authorization values (report) |
| GRC_ARA | GRC Access Risk Analysis (launchpad) |
| /GRCPI/GRIA_ARA | GRC ARA via PFCG-integrated analysis |
| NWBC | NetWeaver Business Client (GRC ARM access) |
This skill is complete ONLY when ALL of the following are true:
AUTHORITY-CHECK with correct objects and field valuesEvidence required: GRC ARA risk report showing clean SoD result; PFCG role transport in production; SM20 audit log confirming security events are being captured.
After security design or GRC implementation: verification-before-completion For Basis-level user administration and system controls: system-admin For BTP authorization and XSUAA setup: btp
system-admin — User management, SU01/SU10, Basis-level controlsbtp — XSUAA, IAS, role collections, principal propagationabap-cloud — Authority-check in custom ABAP, CDS access control (DCL)development-workflow — Including security reviews in ABAP development lifecycle~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.