docs: clarify independent VPD and DDS demos
This commit is contained in:
42
docs/design/559-independent-vpd-dds-demos/README.md
Normal file
42
docs/design/559-independent-vpd-dds-demos/README.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# 독립 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 정책을 별도로 승인한다.
|
||||
Reference in New Issue
Block a user