Files
vpd-permission-poc/docs/design/617-dds-mcp-end-user-context/fn-with-dds-end-user-context.md

1.1 KiB

함수 명세: withDdsEndUserContext (#617)

상태: Implemented · 구현: DdsMcpContextExecutor

책임

한 Tool DB 작업을 정확히 하나의 local DDS END USER Context 안에서 실행하고 항상 해제한다.

알고리즘

  1. 게시된 DDS principal을 확인한다.
  2. OCI IAM database-access token을 얻고 공용 풀에서 연결을 획득한다.
  3. EndUserSecurityContext.createWithName(databaseAccessToken, endUserName, lookupKey)를 만든다.
  4. setEndUserSecurityContext 후 보호 SQL을 실행한다.
  5. finally에서 clearEndUserSecurityContext 후 연결을 반환한다. clear 실패 연결은 폐기한다.

불변식

  • local username+lookup-key Context에는 withDataRoles(...)를 전달하지 않는다.
  • local END USER에 미리 GRANT DATA ROLE된 역할과 DATA GRANT만 적용한다.
  • 연결 풀 재사용 시에도 이전 사용자 Context가 남지 않아야 한다.

실증

실제 ADB에서 local END USER attach, 보호 벡터 query 3행, context clear까지 완료했다. 동시 사용자 isolation regression은 후속 자동화 대상이다.