바로투입이력카드
SAP 게시판

정보·팁

ABAP 권한 검사 개요: AUTHORITY-CHECK와 CDS 접근 제어

에이든ABAP 개발자운영자모듈 MMSD기타조회 6

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

아직 댓글이 없어요.

정보·팁 목록전체 목록