Files
vpd-permission-poc/docs/design/617-dds-mcp-end-user-context/fn-get-database-access-token.md

29 lines
1.1 KiB
Markdown

# 함수 명세: `getDatabaseAccessToken` (#617)
> **상태**: Draft · **분류**: 복잡 — OCI IAM 외부 I/O·비밀·만료 관리
## 책임
MCP SSE 서비스 애플리케이션의 short-lived database-access token을 제공한다. MCP 사용자 Bearer와 혼동하거나 대체하지 않는다.
## 시그니처
`() -> DatabaseAccessToken`
## 규칙
1. 개인 IAM 사용자(`joungmin.ko@oracle.com`)의 장기 token을 사용하지 않는다.
2. `mcp-dds-service` 전용 OCI IAM 애플리케이션의 client-credentials flow를 사용한다.
3. access token은 만료 전 안전 여유를 두고 갱신하며, 원문을 로그·DB·Redmine에 저장하지 않는다.
4. 토큰 발급 실패 시 이전 만료 token을 재사용하지 않고 Tool DB 작업을 차단한다.
5. secret은 배포 환경의 secret store만 사용한다.
## 스파이크 확인
- OCI Identity Domain의 무료/현재 entitlement에서 database-access token 발급이 가능한지 확인한다.
- ADB의 identity provider, TLS, pool account, application identity 조건을 실제 연결로 확인한다.
## 실패
`DDS_CONTEXT_UNAVAILABLE`로 fail-closed한다.