# Windows AD → OCI IAM → DDS 권한 매핑 (#744) > **상태**: Keycloak 기반 Alice 허용/Bob 기본 거부 검증 완료 · OCI IAM AD Bridge 전환 진행 중 > **최종수정**: 2026-08-05 ## 한눈에 보기 Windows AD의 계정으로 AIPF MCP에 로그인하고, Oracle Deep Sec(DDS)이 사용자마다 다른 데이터를 보이도록 하는 PoC다. 초기에는 Keycloak이 AD 인증을 OIDC token으로 바꿨다. 현재는 Keycloak을 OCI Identity Domain의 **AD Bridge + delegated authentication**으로 대체하는 중이다. ```mermaid flowchart LR U["AD 사용자
Alice / Bob"] --> A["Windows AD DS
계정·비밀번호 원천"] A <--> B["OCI AD Bridge
동기화·인증 위임"] B <--> I["OCI Identity Domain
SSO·OIDC token 발급"] I --> P["AIPF
MCP OAuth 연결"] P --> M["DDS MCP
JWT 검증·사용자 매핑"] M --> D["Oracle DDS
DATA GRANT 집행"] ``` 이 그림에서 기억할 점: **AD는 비밀번호를 확인하고, OCI Identity Domain은 로그인 화면과 JWT를 발급하며, Oracle DDS는 최종 데이터 권한을 강제한다.** AD Bridge는 그 사이를 연결하는 Windows 서비스다. ## 현재 검증 결과 | 항목 | 결과 | |---|---| | Keycloak → MCP → DDS 경로 | 완료 | | `dds-alice`의 `휴가` 검색 | `휴가 정책 - Alice 전용 테스트` 1건 반환 | | `dds-bob`의 같은 검색 | DATA GRANT 없음으로 default deny (`ORA-00942` 은닉) | | OCI AIPF OAuth client | `AIPF_DDS_AD_TEST` 생성 및 OIDC discovery 확인 완료 | | OCI AD Bridge / delegated authentication | Windows Bridge client 설치·동기화 전 | ## 핵심 결정 1. 사용자 token과 DB service token은 분리한다. - 사용자 token: 누가 MCP를 호출했는가 - DB service token: MCP service가 DDS context를 열 수 있는가 2. 사람별 권한 키는 검증된 `issuer + sub`이며, UPN/email은 표시·감사용이다. 3. DB 권한은 MCP가 아닌 Oracle DDS DATA ROLE/DATA GRANT에서 default deny로 집행한다. 4. OCI 전환은 기존 Keycloak을 즉시 제거하지 않고, OCI 경로의 Alice/Bob 결과가 같은지 확인한 뒤에만 완료한다. ## 문서 지도 | 필요한 경우 | 읽을 문서 | |---|---| | 전체 신뢰 경계, token 두 종류, DB/DDS 매핑 구조를 이해할 때 | [아키텍처 상세](architecture.md) | | OCI AD Bridge 설치, OCI OAuth client 등록, AIPF/MCP 전환을 수행할 때 | [적용 Cookbook](cookbook.md) | | 로그인·callback·token·LDAPS·권한 오류를 진단할 때 | [트러블슈팅](troubleshooting.md) | | 저장소 전체 문서 작성 구조를 확인할 때 | [문서 구조 표준](../../DOCUMENTATION-STANDARDS.md) | ## 전환 완료 기준 - OCI AD Bridge가 `dds-alice`, `dds-bob`과 필요한 AD 그룹을 동기화한다. - OCI Identity Domain login이 두 사용자의 **AD 비밀번호**로 delegated authentication을 통과한다. - AIPF가 OCI OAuth login 후 MCP에 연결된다. - OCI JWT의 `issuer + sub`가 각각 `DDS_U_1`, `DDS_U_2`로 매핑된다. - 동일한 `휴가` 검색에서 Alice는 1건을 받고 Bob은 default deny가 유지된다. ## 보안 원칙 AD 사용자 비밀번호, OAuth client secret, OCI service client secret, access/refresh token은 문서·Git·대화에 적지 않는다. 위치, rotation 절차, 안전한 입력 방법만 [Cookbook](cookbook.md)에 기록한다.