# ADR-0001: DDS MCP Context에는 개인 IAM 사용자 대신 Confidential Application을 사용한다

> **상태**: Accepted · **날짜**: 2026-07-02 · **관련 이슈**: #617

## 결정

OCI IAM Confidential Application의 client-credentials token을 database-access token으로 사용한다. MCP 요청자는 기존 opaque Bearer → `CB_APP_USER` 매핑으로 판정하고, 그 사용자를 local DDS `END USER`로 attach한다. 업무 권한의 런타임 판정 방식은 [ADR-0002](0002-dds-runtime-permission-source.md)를 따른다.

## 근거

client-credentials token의 `client_id`/`sub`는 서비스 애플리케이션이다. 이를 업무 사용자로 사용하면 모든 MCP 요청이 같은 사람 권한으로 해석되는 오류가 생긴다. 서비스 승인과 업무 사용자 신원을 분리하면 기존 사용자·그룹·권한 관리 모델을 유지하면서 DDS가 local END USER Context와 `DATA GRANT` predicate로 권한을 집행한다.

## 검증

ADB OCI IAM 설정, database credential, application identity, TLS 연결을 구성하고 실제 `EndUserSecurityContext` attach/query/clear와 SSE MCP `tools/call` HTTP 200을 확인했다.

## 결과

- 개인 IAM 계정·장기 token은 런타임에 사용하지 않는다.
- client ID/secret, raw token, lookup key는 secret store/환경 변수 외에 저장하지 않는다.
- IAM 사용자 token을 직접 받아 DDS에 전달하는 OBO/authorization-code 모델은 별도 ADR과 endpoint 검증으로만 도입한다.
