diff --git a/docs/design/617-dds-mcp-end-user-context/README.md b/docs/design/617-dds-mcp-end-user-context/README.md index 83982ad..135e862 100644 --- a/docs/design/617-dds-mcp-end-user-context/README.md +++ b/docs/design/617-dds-mcp-end-user-context/README.md @@ -1,7 +1,7 @@ # 설계서: DDS MCP END USER Context 및 런타임 권한 판정 (#617) > **상태**: Context 경로 Implemented · 런타임 권한 함수 설계 Approved, 이행 Pending -> **최종수정**: 2026-07-03 +> **최종수정**: 2026-07-19 > **추적성** — Redmine: #617 · 관련 ADR: [ADR-0001](../../adr/0001-dds-mcp-service-identity.md), [ADR-0002](../../adr/0002-dds-runtime-permission-source.md) > · 현재 구현: `DdsMcpBearerAuthenticator`, `DdsMcpEndUserResolver`, `DdsMcpContextExecutor`, `DdsMcpSseController` > · 기존 PoC 게시: `sql/adb/44_dds_mcp_local_end_user_setup.sql` @@ -15,6 +15,14 @@ MCP Tool의 보호 SQL은 요청 Bearer가 지정한 업무 사용자의 local D 따라서 **역할·퍼미션 변경은 다음 SQL부터 반영되고 DDS DDL 재게시가 필요 없다.** 새 보호 Object·새 컬럼·새 CRUD 동작을 등록하는 경우에만 안전하게 검토한 DDL을 한 번 provisioning한다. +## 1.1 2026-07-19 현행 상태 + +- 완료: OCI IAM Confidential Application 기반 database-access token, ADB IAM 설정, local DDS END USER Context attach, SSE MCP `tools/call`의 보호 SQL 실행과 context clear를 실제 환경에서 검증했다. +- 완료: 현재 PoC는 `DDS_U_` local END USER와 사용자별 벡터 `DATA GRANT`를 생성하고, 권한 변경 시 bulk 재게시하는 형태로 동작한다. +- 설계 확정: 최종 권한 집행은 사용자별 Grant 복제가 아니라 `DDS_MCP_AUTHZ_PKG.can_access`가 기존 `CB_*` 권한 테이블을 런타임 조회하는 방식으로 전환한다. +- 미구현: 공통 `DDS_MCP_RUNTIME` DATA ROLE, Object/CRUD/컬럼 그룹별 장기 `DATA GRANT`, 런타임 권한 함수, 기존 bulk publish 제거, 권한 변경 직후 반영 regression. +- 운영 기준: 사용자·그룹·역할·퍼미션 변경은 DDL 대상이 아니며, 새 보호 Object·컬럼·CRUD 등록만 provisioning 대상이다. + ## 2. 토큰과 사용자 — 반드시 구분할 것 | 값 | 역할 | 사람 사용자인가 |