Files
vpd-permission-poc/docs/runbooks/mcp-vpd-redaction-dss-operations.md
2026-08-03 13:28:53 +09:00

5.0 KiB

MCP·VPD·Data Redaction·DDS 공통 운영 가이드

1. 적용 범위와 책임

이 문서는 고객사와 데이터 도메인에 무관하게 사용하는 공통 운영 절차다. 고객별 테이블, 지표, 질문 예제, Select AI 프로파일은 각 고객사 브랜치 문서에서 관리한다.

구성요소 책임 운영자가 확인할 것
MCP 허용 도구를 공개하고 요청·응답 계약을 제공 tools/list, 입력 스키마, 인증
Select AI 읽기 전용 SQL 생성 및 실행 허용 객체, SQL 검증, timeout
VPD 행 단위 접근 제어 session context, policy, predicate
Data Redaction (ASO) 민감 컬럼 값의 NULL/마스킹 대상 컬럼, policy, 예외 사용자
DDS 선언형 행·컬럼·작업 권한 END USER, DATA ROLE, DATA GRANT
FGA 실행 증적 감사 요청 식별자, SQL, RLS 정보

VPD와 Data Redaction은 서로 대체하지 않는다. VPD는 어떤 행을 볼 수 있는지, Data Redaction은 허용된 행에서 컬럼 값을 어떻게 표시할지를 담당한다. DDS는 DATA GRANT로 행·컬럼 권한을 선언적으로 적용하는 별도 경로다.

2. 공통 실행 흐름

사용자/Agent
  → MCP initialize · tools/list · tools/call
  → Bearer 또는 서비스 인증 검증
  → 허용된 도구와 입력 스키마 확인
  → DB session context 또는 DDS END USER context 설정
  → Select AI SHOWSQL 생성
  → SELECT/WITH 전용 검증과 read-only 실행
  → VPD 행 필터 + Data Redaction 또는 DDS 권한 적용
  → 결과·생성 SQL·감사 식별자 반환

MCP 또는 애플리케이션은 사용자 입력을 VPD predicate나 SQL 조각으로 조합하지 않는다. 권한 판단은 DB 정책·권한 테이블·DDS grant에서 수행한다.

3. 최초 구성 순서

  1. database/adb/의 기본 스키마, 권한 테이블, 보호 View를 적용한다.
  2. VPD context package·policy function을 compile하고 DBA_POLICIES에서 적용 대상을 확인한다.
  3. 민감 컬럼에는 Data Redaction policy를 적용하고 권한별 조회 결과를 확인한다.
  4. DDS를 사용할 경우 END USER, DATA ROLE, DATA GRANT를 별도 구성한다. 단순 Bearer 값 조회만으로 DDS END USER가 되지 않는다.
  5. MCP endpoint와 공개 도구 목록을 설정한다. 광고한 모든 도구는 실제로 호출 가능해야 한다.
  6. SELECT/WITH 이외 문장 차단, read-only transaction, query timeout, 반환 행 제한을 설정한다.
  7. 사용자별 허용/거부, 마스킹, 감사 증적을 회귀 검증한다.

4. MCP 운영 절차

기동 전

  • 환경변수·DB 연결·wallet·MCP endpoint를 점검한다.
  • 도구 이름, 설명, 입력 스키마가 실제 구현과 일치하는지 확인한다.
  • 실제 token, password, wallet, 대화 이력 DB는 Git에 넣지 않는다.

요청 처리

  1. initialize 후 협상된 프로토콜 버전을 사용한다.
  2. tools/list 결과 중 승인된 도구만 호출한다.
  3. tools/call 입력을 서버에서 검증한다.
  4. 생성 SQL과 실행 결과, 오류 사유를 분리해 반환한다.
  5. 실패 시 임의 SQL 재시도 대신 도구 상세·SHOWPROMPT·DB audit을 확인한다.

5. VPD와 Data Redaction 점검

증상 우선 확인
권한 있는데 0행 session context, VPD predicate, 권한 매핑
ORA-00942/ORA-01031 DB object grant와 보호 View 노출 여부
컬럼이 NULL/마스킹됨 Data Redaction policy와 예외 조건
다른 사용자 결과가 같음 Bearer→업무 사용자 매핑, context clear
요청 추적 불가 CLIENT_IDENTIFIER, FGA/Unified Audit Trail

VPD 정책 변경 전에는 대상 View·TABLE, 기존 policy, 함수 상태를 백업하고, 변경 후 허용 사용자·거부 사용자·마스킹 예외 사용자를 모두 조회한다. 롤백은 policy/function 및 권한 매핑을 직전 검증 상태로 되돌린 뒤 같은 회귀 시나리오로 확인한다.

6. DDS 사용 기준

  • 사용자별 END USER context를 실제 DB 호출에 전달할 수 있으면 DDS를 고려한다.
  • 서비스 계정의 client-credentials token은 서비스 인증용이며 업무 사용자 권한을 뜻하지 않는다.
  • 권한이 자주 바뀌면 사용자별 grant 복제보다 공통 role과 런타임 권한 함수를 검토한다.
  • VPD와 DDS를 같은 보호 객체에 함께 적용할 때는 정책 순서와 예상 결과를 별도 검증한다.

7. 검증과 증적

최소 검증 세트는 다음과 같다.

  1. 인증 성공/실패와 tools/list 계약
  2. 허용 사용자와 거부 사용자의 행 수 차이
  3. 민감 컬럼의 Redaction 결과
  4. 읽기 전용 SQL 차단 규칙과 timeout
  5. FGA 또는 Unified Audit Trail의 SQL·RLS 정보·요청 식별자

상세 SQLcl 절차는 VPD 배포·검증·롤백 런북을, 설계 근거는 ORDS·VPD·DDS 보안 설계를 따른다.