ABAP 권한 검사 개요: AUTHORITY-CHECK와 CDS 접근 제어
3줄 요약
ABAP SQL 문장은 DB 쪽에서 권한 검사를 하지 않으므로, 프로그램이 직접 권한을 확인해야 해요.
명시적 검사는
AUTHORITY-CHECK OBJECT ... ID ... FIELD ...문장으로, 결과는sy-subrc(0 성공, 4 실패)로 확인해요.암묵적 검사는 CDS 접근 제어(
DEFINE ROLE,@AccessControl.authorizationCheck)로 읽기 접근 데이터를 제한해요.
어떤 상황에서 쓰나요
조회 프로그램을 만들 때 "이 사용자가 이 회사코드 데이터를 봐도 되나?"를 코드에서 처리해야 해요. 권한 검사를 빼먹으면 SAP 화면 권한과 무관하게 데이터가 노출될 수 있어요. 치트시트의 *Authorization Checks* 편은 두 가지 검사 방식을 개념만 짚어 줘요.
핵심 내용
왜 직접 검사해야 하나요. ABAP SQL 문장은 데이터베이스 시스템에서 권한 검사를 일으키지 않아서, 테이블을 제한 없이 읽을 수 있어요. 그러나 시스템의 모든 사용자가 읽을 수 있는 모든 데이터에 대한 권한이 있는 것은 아니에요. 그래서 프로그래머가 이 프로그램을 호출할 수 있는 사용자가 다루는 데이터에 권한이 있는지 보장해야 한다고 치트시트가 말해요.
명시적 검사: `AUTHORITY-CHECK`
현재 사용자의 권한이 권한 객체의 권한 필드 값으로 충분한지 확인해요.
AUTHORITY-CHECK OBJECT 'ZAUTH_OBJ'
ID 'ACTVT' FIELD '03'
ID 'ZAUTH_CTRY' FIELD 'US'
ID 'ZOTHER' DUMMY.
IF sy-subrc <> 0.
" 권한 없음 처리
ENDIF.권한 객체 이름은 대문자로 쓰고, 클라우드용 ABAP 에서는 리터럴이어야 해요(변수는 안 돼요).
ID ... FIELD ...로 권한 필드와 값을 최소 한 개, 최대 10개 지정해요.DUMMY를 붙인 필드는 검사하지 않아요.결과는
sy-subrc: 0 은 성공 또는 검사가 수행되지 않은 경우, 4 는 실패예요. 그 밖의 값은 키워드 문서를 보라고 해요.표준 ABAP 에서는 다른 사용자의 권한을 검사하는 추가 구문도 있어요.
암묵적 검사: CDS 접근 제어 (읽기)
CDS 뷰 엔티티 등에 대해 ABAP SQL 로 읽을 때, CDS 역할에 접근 조건이 정의되어 있으면 사용자별로 평가되어 돌려주는 데이터가 허용된 범위로 제한돼요.
역할은 DCL(데이터 제어 언어) 소스에서
DEFINE ROLE로 정의해요.CDS 엔티티 주석
@AccessControl.authorizationCheck의 값
- #NOT_REQUIRED: 접근 제어 필요 없음, 모든 사용자가 전부 접근 - #CHECK: 접근 제어 객체가 없으면 경고 - #MANDATORY: 접근 제어 객체가 반드시 있어야 함 - #NOT_ALLOWED: 접근 제어 객체가 없어야 함(있으면 무시)
예: 국가 필드 값에 따라 보기 권한(
ACTVT = '03')을 판단하는 조건부 규칙.
define role ZCDS_ACC_CTRL {
grant select on ZDEMO_ABAP_FLSCH_VE_AUTH
where (countryfr) = aspect pfcg_auth(zauth_obj, zauth_ctry, ACTVT = '03');
}RAP 의 권한 제어. 치트시트는 RAP 에서의 권한 제어를 별도 절로 소개해요. 이 글에서는 다루지 않았어요.
주의할 점
이 편은 클라우드 ABAP 환경을 기준으로 해서 권한을 부여하는 절차가 클래식 ABAP(예: S/4HANA 온프레미스의 PFCG 역할 부여)과 달라요. 개념은 비슷하지만 설정은 내 환경의 방식을 따르세요.
치트시트의 예제는 일부러 단순하고 의미 없는 이름을 쓴 것이고, 권한 설계의 모범이 아니라고 스스로 밝혀요. 실제 권한 설계는 사업 요건과 보안 정책에 맞게 따로 하세요.
권한 객체를 만드는 구체적인 순서는 이 글에서 다루지 않았어요(치트시트가 개발자 튜토리얼을 안내해요. 저는 그 튜토리얼을 읽지 않았어요).
치트시트는 계속 갱신되는 문서예요. 이 편의 첫 공개는 2024년 9월이고, 제가 읽은 판은 2026년 10월 기준이에요. 이 글은 읽고 정리한 것이고 예제를 직접 실행해 보지는 않았어요.
원문 주소: https://github.com/SAP-samples/abap-cheat-sheets/blob/main/25_Authorization_Checks.md
출처와 이용 안내
원문: ABAP Cheat Sheets - Authorization Checks · 작성자 SAP SE and contributors SAP-samples · 작성일 2024-09-10 · 기준 릴리스에 따라 다름 원문은 클라우드 ABAP 환경 기준 · 확인일 2026-10-25
이 글은 위 원문을 읽고 한국어로 요약·재구성한 글이며 번역본이 아니에요. 원문의 저작권은 작성자와 SAP에 있어요.
원문은 Apache-2.0 라이선스(https://www.apache.org/licenses/LICENSE-2.0)로 공개된 자료예요. 이 글은 내용을 한국어로 줄이고 순서를 바꾼 변경본이며, 원저작자가 이 글을 보증하지 않아요.
설정과 화면은 릴리스마다 달라요. 적용하기 전에 원문과 SAP Help Portal, 관련 SAP Note에서 최신 내용을 확인해 주세요.
SAP와 SAP 제품명은 SAP SE의 상표예요. 바로투입은 SAP와 관련이 없어요.
댓글 0
아직 댓글이 없어요.
로그인하고 댓글 쓰기