Files
vpd-permission-poc/docs/reports/2026-07-23-hmm-leave-team-vpd-verification.md

62 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 관리자 역할은 전체 접근 규칙만 준비하고 데모 사용자에게 자동 부여하지 않았다.