# 독립 VPD·DDS 데모 구성 ## 목적 VPD와 Oracle Deep Data Security(DDS)를 한 애플리케이션에 섞지 않고, 같은 접근 결과를 서로 다른 DB 보안 모델로 비교한다. ## 인스턴스 경계 | 구분 | VPD Demo | DDS Demo | |---|---|---| | 실행 디렉터리 | `/home/opc/apps/vpd-backoffice` | `/home/opc/apps/dds-backoffice` | | 기본 포트 | `8082` | `8083` | | 사용자 식별 | 공통 DB 계정 + Bearer/세션 컨텍스트 | DDS `END USER` 직접 logon | | 권한 기준 | 업무 권한 테이블 + VPD 함수 | `DATA ROLE` + `DATA GRANT` | | 보호 객체 | `V_CUSTOMERS_*` / VPD 전용 객체 | `V_DDS_CUSTOMERS_*` / DDS 전용 객체 | | 운영 프로세스 | VPD start/stop/status | DDS start/stop/status | 두 인스턴스는 화면, JAR, PID, 로그, 설정 파일을 공유하지 않는다. DDS 데모는 VPD 권한 테이블이나 VPD 정책 함수에 의존하지 않는다. ## 동일하게 비교할 수 있는 것 - 사용자별 원본 접근 범위 - 행 단위 허용/차단 - 권한 없는 사용자의 default deny - 보호 VIEW 우회 시도 차단 ## 동일하게 간주하면 안 되는 것 - VPD의 공통 DB 계정 + Bearer + 동적 predicate 흐름 - 업무 권한 테이블을 매 요청마다 읽는 동적 변경 방식 - ORDS Handler가 Bearer 값을 DDS 사용자명으로 바꾸는 것만으로 DDS 컨텍스트가 생기는 동작 DDS는 직접 `END USER`로 접속하거나 지원 드라이버가 `EndUserSecurityContext`를 전달해야 한다. 따라서 DDS 데모의 조회 결과가 VPD와 같더라도, 권한이 계산·전달되는 경로는 별도로 설명해야 한다. ## 실행 확인 ```bash /home/opc/apps/vpd-backoffice/status.sh /home/opc/apps/dds-backoffice/status.sh ``` 외부 공개 포트는 애플리케이션 분리와 별개의 운영 변경이다. DDS 기본 바인딩은 `127.0.0.1:8083`이며, 직접 공개하려면 HTTPS, NSG, VM firewalld 정책을 별도로 승인한다.