아직도 Profile로 권한 관리? — SAP Role 설계 제대로 하기 #shorts #SAP
📖 개요 및 학습 목표
SAP 시스템에서 권한 관리는 단순히 "누가 무엇을 할 수 있는가"를 넘어, 감사(Audit) 대응과 직무 분리(SoD) 통제의 핵심입니다. 과거 R/2, R/3 초기에는 Profile을 직접 사용자에게 할당하는 방식이 일반적이었지만, 이는 변경 추적과 유지보수 측면에서 한계가 명확합니다. 본 튜토리얼은 PFCG 기반 Role 설계로 전환하는 실전 절차와 운영 노하우를 다룹니다.
학습 체크리스트
- Authorization Object / Field / Value의 3계층 구조 이해
- Profile 직접 할당과 Role 기반 할당의 차이 식별
- PFCG로 Single Role / Composite Role 생성
- SU24 Proposal 관리와 SU25 업그레이드 절차
- 최소 권한·SoD 관점에서의 설계 원칙 적용
- SM19 / SM20 감사 로그 활용
📚 선수 지식
본 가이드는 SAP NetWeaver ABAP 기반 시스템(ECC 6.0 EHP8 또는 S/4HANA 2022 이상)에서 SAP GUI 740 이상을 사용하는 환경을 기준으로 합니다. 다음 개념에 대한 기본 이해가 필요합니다.
- SAP 트랜잭션 코드(T-code) 호출 방식과 Easy Access 메뉴 구조
- Client(맨던트) 개념과 사용자 마스터 데이터(SU01) 기본
- Transport Request(CTS)를 통한 객체 이동 절차
- ABAP 권한 체크 구문
AUTHORITY-CHECK OBJECT의 동작 원리
🔧 환경 / 버전 / 준비물
실습은 다음 환경에서 검증되었습니다. 버전이 다르면 일부 메뉴 위치나 기본 Profile이 다를 수 있으니 주의하세요.
- SAP NetWeaver: 7.52 SP08 이상 또는 ABAP Platform 2022 (S/4HANA 2022 FPS01 기준 검증)
- SAP GUI for Windows: 7.70 PL12 이상 권장
- 필수 트랜잭션 권한: PFCG, SU01, SU24, SU53, SUIM, SM19, SM20
- 실습 클라이언트: 개발(예: 100) — 운영(PRD)에서는 직접 변경 금지
- 참여 역할: BASIS 관리자(시스템 권한 부여), 보안 관리자(Role 설계), 업무 부서(트랜잭션 식별)
설치형 시스템이 없다면 SAP CAL(Cloud Appliance Library)에서 S/4HANA Fully-Activated Appliance를 30일 평가판으로 띄워 PFCG/SU24 메뉴 흐름을 따라가 볼 수 있습니다.
💡 핵심 개념
SAP 권한의 3계층: Object → Field → Value
SAP 권한은 마치 건물 출입증과 같습니다. Authorization Object가 건물(예: F_BKPF_BUK — 회계전표 회사코드 권한)이고, 그 안의 Field는 층(BUKRS — 회사코드, ACTVT — 활동), Value는 입실 가능한 호실(BUKRS=1000, ACTVT=03 조회) 입니다.
" ABAP 코드 내부의 권한 체크 예시
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD '1000'
ID 'ACTVT' FIELD '03'.
IF sy-subrc <> 0.
MESSAGE 'You are not authorized for company code 1000' TYPE 'E'.
ENDIF.
Profile vs Role — 왜 Profile 직접 할당이 문제인가
Profile은 권한 객체와 값들의 묶음을 시스템 내부적으로 표현한 객체입니다. 과거에는 SU02로 Profile을 직접 만들어 SU01에서 사용자에게 매다는 방식이 사용되었습니다. 그러나 이 방식은 다음 문제가 있습니다.
- 메뉴와 분리: 어떤 트랜잭션을 위한 권한인지 직관적으로 알기 어려움
- 변경 추적 어려움: 누가 언제 어떤 객체를 추가했는지 일관된 이력이 부족
- 업그레이드 충돌: SU25(릴리즈 업그레이드 비교)에 자동 반영되지 않음
- 감사 부적합: 직무 분리 분석 도구(GRC AC, SUIM)가 Role 단위로 동작
반면 Role(PFCG)은 메뉴 트리 → 트랜잭션 → 권한 객체 → Profile 자동 생성의 흐름을 가지므로, 메뉴를 정의하면 SU24 Proposal을 통해 권한 객체가 자동 채워지고, Profile은 PFCG가 내부적으로 생성·관리합니다.
💻 실전 코드 3단계
1단계: 기본 Single Role 생성
회계 부서의 "전표 조회 전용" Role을 만든다고 가정합니다. T-code PFCG 진입 후 Role 이름을 Z_FI_DOC_DISPLAY로 입력하고 Single Role로 생성합니다.
* PFCG → Role 이름 입력 → Single Role 클릭
* [Description] 탭
Role: Z_FI_DOC_DISPLAY
Description: FI 회계전표 조회 전용 (개발팀 검증용)
* [Menu] 탭 — Transaction 추가
- FB03 (전표 조회)
- FBL3N (G/L 계정 라인아이템 조회)
- S_ALR_87012287 (전표 저널 리포트)
* [Authorizations] 탭 → "Change Authorization Data" 클릭
* SU24 Proposal에 따라 다음 객체가 자동 채워짐:
- S_TCODE: TCD = FB03, FBL3N, S_ALR_87012287
- F_BKPF_BUK: BUKRS = 1000, ACTVT = 03
- F_BKPF_KOA: KOART = *, ACTVT = 03
각 객체의 노란불(미정)을 채워 초록불(완료)로 만든 뒤, Generate(Shift+F5) 버튼을 눌러 Profile을 자동 생성합니다. Profile 명은 T-A1234567 형태로 자동 부여됩니다.
2단계: 실무 시나리오 — SU24 Proposal 정비와 에러 추적
커스텀 트랜잭션 ZFI001(자체 개발 매출조회)을 PFCG 메뉴에 넣었더니 권한 객체가 비어 있는 경우가 흔합니다. 이는 SU24 Proposal이 등록되지 않았기 때문입니다.
* SU24 등록 절차
1) T-code SU24 실행
2) "Transaction" 라디오 → ZFI001 입력 → Display
3) Change 모드 전환 → "Insert Authorization Object"
- 추가: F_BKPF_BUK (Check/Maintain = YES)
- 추가: S_TABU_DIS (Check = YES, Maintain = NO)
4) Default values 설정 (BUKRS = $BUKRS, ACTVT = 03)
5) Save → Transport Request 할당
* 이후 PFCG에서 "Expert Mode → Read again" 선택 시
* SU24 Proposal이 Role에 자동 반영됨
운영 중 사용자가 "권한 없음" 메시지를 받으면 즉시 SU53을 실행해 직전 실패 권한 체크를 확인합니다. 더 정밀한 추적은 ST01(Authorization Trace) 또는 STAUTHTRACE(다중 사용자 트레이스)를 사용합니다.
* SU53 결과 해석 예시
Authorization check failed:
Object: F_BKPF_BUK
Field: BUKRS Value: 2000 ← 사용자가 시도한 값
Field: ACTVT Value: 03
User has: BUKRS = 1000 (only)
ACTVT = 03
→ 조치: Role의 BUKRS Value에 2000 추가, Generate, 사용자에게 재할당
3단계: 프로덕션 — Composite Role + 직무 분리 + 감사
실제 업무 사용자는 다수의 Single Role을 한꺼번에 가져야 합니다. 이를 묶는 것이 Composite Role입니다. 다만 Composite Role 자체는 Profile을 생성하지 않고 Single Role의 Profile을 사용자에게 일괄 적용하는 컨테이너 역할만 합니다.
* PFCG → Composite Role 생성
Role: Z_FI_AP_CLERK_COMP
Description: FI AP 담당자 통합 (출납 + 전표 + 마스터 조회)
* [Roles] 탭에서 Single Role 추가:
- Z_FI_DOC_DISPLAY (전표 조회)
- Z_FI_AP_INVOICE (매입 전표 입력)
- Z_FI_VENDOR_DISP (Vendor 마스터 조회)
* SoD 위반 자동 점검 (GRC AC가 없을 경우 SUIM 활용):
T-code SUIM → User → Cross-System Information
또는 Z_RSUSR_SOD 커스텀 리포트 작성
* SoD 룰 예시 (회계):
- 전표 입력(F_BKPF_BUK ACTVT=01) AND 전표 승인(F_BKPF_BUK ACTVT=77) → 위반
- Vendor 마스터 변경(F_LFA1_BEK ACTVT=02) AND 지급 실행(F_REGU_BUK) → 위반
운영 환경에서는 다음 보안 통제도 함께 적용합니다.
* SM19 — 감사 로그 필터 정의 (Security Audit Log)
Filter 1:
Client: 100
User: *
Audit Class: Logon, Transaction Start, RFC Call
Severity: All
Filter 2 (특정 SAP_ALL 사용자 모니터링):
User: SAP*, FIREFIGHTER_*
Audit Class: All
* 활성화 후 SM20에서 일별 분석
* 정기 감사 시 RSAU_READ_LOG 또는 RSAU_SELECT_EVENTS 사용
또한 Derived Role 패턴을 사용하면 회사코드/공장만 다른 다국가 조직 권한을 효율적으로 관리할 수 있습니다. Master Role에 메뉴와 객체를 정의하고, Derived Role은 Organizational Level 값(BUKRS, WERKS 등)만 다르게 채웁니다.
⚠️ 흔한 실수 / 트러블슈팅
FAQ 1. Role을 변경했는데 사용자에게 반영되지 않습니다
Role을 Generate(Profile 재생성)한 뒤 User Comparison(사용자 비교)을 반드시 수행해야 합니다. PFCG의 [User] 탭에서 "User Comparison" 또는 일괄 작업 PFUD 트랜잭션으로 모든 사용자에게 일괄 동기화합니다. 야간 배치 PFCG_TIME_DEPENDENCY 작업을 등록해두는 것이 일반적으로 권장됩니다.
FAQ 2. SAP_ALL을 임시 부여해도 되나요?
운영(PRD) 환경에서는 절대 권장되지 않습니다. 긴급 작업은 Firefighter ID(GRC EAM) 또는 시간제한 임시 Role 부여 + SM19 강화 + SM20 사후 검토 절차를 거치세요. 부득이하게 SAP_ALL을 부여한 경우 작업 종료 즉시 회수하고, SUIM → User by Critical Authorization으로 사후 추적합니다.
FAQ 3. Profile만 직접 할당된 기존 사용자를 어떻게 마이그레이션하나요?
다음 단계로 점진 전환을 권장합니다.
SUIM → Users by Profile로 Profile 직접 할당 사용자 목록 추출- 유사 직무 그룹화 후 PFCG에 Z-Role로 재모델링 (메뉴 + SU24 활용)
- 병행 운영(이중 할당) 후 트레이스로 누락 객체 검증
- 검증 완료 사용자부터 SU01에서 Profile 제거, Role만 유지
- 전체 전환 완료 후 SU02 사용 금지 정책 수립
FAQ 4. S_TCODE만 빼면 트랜잭션을 못 쓰게 막을 수 있나요?
S_TCODE는 진입 차단용일 뿐이며, 다른 권한 객체로도 동일 기능에 접근 가능한 경로(SE16, SQVI, BAPI 등)가 존재합니다. 반드시 데이터 단위 객체(S_TABU_DIS, S_TABU_NAM)와 함수 그룹 단위(S_RFC) 권한도 함께 통제해야 합니다.
🚀 다음 단계 / 관련 주제
본 가이드를 마쳤다면 다음 주제로 확장 학습을 추천합니다.
- SAP GRC Access Control — ARM(Access Request), EAM(Emergency Access), ARA(Risk Analysis) 자동화
- S/4HANA Fiori Catalog/Group — Business Role과 PFCG의 결합 모델
- IAM 통합 — SAP Cloud Identity Services / IAS-IPS, Azure AD SCIM 연동
- HANA DB 권한 — Analytic Privilege, Object Privilege와 ABAP Role의 분리 통제
- SU25 업그레이드 절차 — Steps 2A~2D를 통한 SU24 Default 비교/머지
📚 참고 자료
- SAP Help Portal — User and Role Administration of Application Server ABAP
- SAP Help Portal — Role Maintenance (PFCG)
- SAP Help Portal — Maintaining Authorization Default Values (SU24)
- SAP Help Portal — Security Audit Log (SM19/SM20) on S/4HANA
- SAP Help Portal — SAP Access Control 12.0 Documentation
- SAP Note 113290 — Profile Generator: Tips and Recommendations
- SAP Community Blogs — Authorization & Role Design