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.

흔한 실수

SU24 유지 관리

트랜잭션 코드별로 권한 오브젝트를 SU24에서 등록/관리합니다. 신규 트랜잭션을 만들었다면 SU24에 등록해 PFCG 역할 생성 시 자동으로 반영되도록 하세요. 빠뜨리면 역할 관리자가 수동으로 추가해야 하므로 운영 부담이 늘어납니다.

핵심 한 줄

AUTHORITY-CHECK는 빠뜨리는 순간 보안 구멍, SY-SUBRC 0 이외는 전부 거부로 처리하세요.