Authority Check 빠뜨리면 큰일 — ABAP 권한 검증 패턴 #shorts #SAP #ABAP
Moderator
· 조회 2
Authority Check란
ABAP에서 사용자가 특정 기능을 수행할 권한이 있는지 런타임에 검증하는 메커니즘입니다. SAP는 S_로 시작하는 권한 오브젝트(예: S_TCODE, S_DEVELOP, S_TABU_DIS)를 통해 사용자 마스터의 프로파일과 매칭합니다. 권한 체크를 빠뜨리면 사용자가 우회 경로(보고서 직접 실행, RFC 호출 등)로 데이터에 접근할 수 있어 큰일 날 수 있습니다.
기본 구문
AUTHORITY-CHECK OBJECT 문에 권한 오브젝트명과 필드값을 지정하고 SY-SUBRC로 결과를 판정합니다. 체크하지 않을 필드는 DUMMY로 표시합니다.
AUTHORITY-CHECK OBJECT 'S_TCODE'
ID 'TCD' FIELD 'SE38'.
IF sy-subrc <> 0.
MESSAGE 'Access denied' TYPE 'E'.
ENDIF.
SY-SUBRC 반환값은 0(허용), 4(권한 없음), 8(필드 누락), 12(오브젝트 미등록)으로 구분되며 0 이외는 모두 거부로 처리하는 것을 권장합니다.
실패 처리
실무에서는 단순 MESSAGE 출력보다 클래스 기반 예외를 발생시켜 호출 측에서 일관되게 처리하도록 설계하는 편이 안전합니다. 여러 필드를 동시에 검증하는 패턴은 다음과 같습니다.
AUTHORITY-CHECK OBJECT 'S_DEVELOP'
ID 'DEVCLASS' FIELD lv_devclass
ID 'OBJTYPE' FIELD 'PROG'
ID 'OBJNAME' FIELD lv_program
ID 'P_GROUP' DUMMY.
IF sy-subrc <> 0.
RAISE EXCEPTION TYPE cx_sy_authorization_error.
ENDIF.
흔한 실수
- 체크 누락 — 신규 보고서/Function Module에 AUTHORITY-CHECK 자체를 넣지 않아 보안 구멍이 생기는 사례.
- DUMMY 남발 — 모든 필드를 DUMMY로 처리하면 검증이 무력화됩니다. 의미 없는 필드에만 제한적으로 사용하세요.
- SY-SUBRC = 0만 검사 — 0 이외를 전부 거부로 묶지 않으면 8/12 케이스가 통과될 수 있습니다.
SU24 유지 관리
트랜잭션 코드별로 권한 오브젝트를 SU24에서 등록/관리합니다. 신규 트랜잭션을 만들었다면 SU24에 등록해 PFCG 역할 생성 시 자동으로 반영되도록 하세요. 빠뜨리면 역할 관리자가 수동으로 추가해야 하므로 운영 부담이 늘어납니다.
핵심 한 줄
AUTHORITY-CHECK는 빠뜨리는 순간 보안 구멍, SY-SUBRC 0 이외는 전부 거부로 처리하세요.