[Architect] #617 record current DDS MCP status

This commit is contained in:
devmrko
2026-07-19 09:05:39 +09:00
parent c2e6ff2cc9
commit a90da6c7ff

View File

@@ -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_<id>` 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. 토큰과 사용자 — 반드시 구분할 것
| 값 | 역할 | 사람 사용자인가 |