62 lines
2.5 KiB
Markdown
62 lines
2.5 KiB
Markdown
# HMM 휴가 팀 계층 VPD 적용·검증 보고서
|
||
|
||
- 일자: 2026-07-23
|
||
- Redmine: #707
|
||
- 브랜치: `hmm-backoffice`
|
||
- 대상 DB: HMMAIPOC `ADMIN`
|
||
- 대상 서비스: `https://hmm-backoffice.cloud-handson.com`
|
||
|
||
## 적용 결과
|
||
|
||
`database/adb/72_hmm_leave_team_vpd.sql`을 적용해 다음 구성을 활성화했다.
|
||
|
||
| 구성 | 결과 |
|
||
|---|---|
|
||
| 신뢰 컨텍스트 | `HMM_ACCESS_CTX` |
|
||
| 토큰 검증 패키지 | `HMM_ACCESS_CTX_PKG` / `VALID` |
|
||
| 정책 함수 | `HMM_LEAVE_VPD_FILTER` / `VALID` |
|
||
| 휴가 잔여 정책 | `HMM_LEAVE_BALANCES.HMM_LEAVE_SCOPE_POLICY` / `ENABLE=YES` |
|
||
| 휴가 신청 정책 | `HMM_LEAVE_REQUESTS.HMM_LEAVE_SCOPE_POLICY` / `ENABLE=YES` |
|
||
| 팀장 역할 | E1001 → `HMM_HR_MANAGER` |
|
||
| 팀원 역할 | E1002~E1007 → `HMM_HR_VIEWER` |
|
||
| 저장 권한 | 두 객체 × `ALL`, `MANAGED_TEAM`, `SELF` = 6건 |
|
||
|
||
## 실제 행 접근 검증
|
||
|
||
`ADMIN`에는 `EXEMPT ACCESS POLICY`가 있으므로 이를 결과 검증에 사용하지 않았다. 별도의 비면제
|
||
임시 DB 사용자를 만들고, SHA-256 해시만 DB에 저장한 임시 E1001/E1002 토큰으로 조회한 뒤
|
||
사용자와 토큰을 즉시 제거했다.
|
||
|
||
| 검증 세션 | 휴가 잔여 | 휴가 신청 | 교차 사용자 조건 조회 |
|
||
|---|---:|---:|---:|
|
||
| 컨텍스트 없음 | 0 | 0 | - |
|
||
| E1001 팀장 | 7 | 8 | 직접 보고 팀원 포함 |
|
||
| E1002 팀원 | 1 | 1 | E1003 신청 0 |
|
||
| 무효 토큰 | 0 | - | 컨텍스트 초기화·차단 |
|
||
|
||
결과: `VPD_VERIFY=PASS`
|
||
|
||
## 애플리케이션 검증
|
||
|
||
- Maven: 105 tests, 0 failures, 0 errors
|
||
- 배포 JAR SHA-256:
|
||
`1b10582e72e4639902ea8f65156af1067941af3ef50cde1d9f767c88f048fb85`
|
||
- systemd: `vpd-backoffice.service` active
|
||
- 공개 로그인: HTTP 200
|
||
- 실제 브라우저 전수 검사:
|
||
- 관리 화면 26개: 실패 0
|
||
- HMM 정형 원장 6개: 실패 0
|
||
- `ORA-*`, 데이터 처리 오류, KB/POC 잔존 문구: 0
|
||
- page error: 0
|
||
- console error: 0
|
||
|
||
특히 `/roles`, `/permissions`, `/vpd-policies`, `/vpd-filter-runtime`에서 HMM 역할 3개,
|
||
휴가 원장 권한 6개, 정책 2개와 `HMM_LEAVE_VPD_FILTER`가 표시되는 것을 화면으로 확인했다.
|
||
|
||
## 보안 정리
|
||
|
||
- DB 비밀번호, 토큰 원문, 해시는 Git·Redmine·보고서에 기록하지 않았다.
|
||
- 임시 비면제 DB 사용자는 검증 종료 시 `DROP USER ... CASCADE`로 제거했다.
|
||
- 임시 토큰 2건은 검증 종료 시 삭제했다.
|
||
- HR 관리자 역할은 전체 접근 규칙만 준비하고 데모 사용자에게 자동 부여하지 않았다.
|