3.6 KiB
3.6 KiB
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으로 대체하는 중이다.
flowchart LR
U["AD 사용자<br/>Alice / Bob"] --> A["Windows AD DS<br/>계정·비밀번호 원천"]
A <--> B["OCI AD Bridge<br/>동기화·인증 위임"]
B <--> I["OCI Identity Domain<br/>SSO·OIDC token 발급"]
I --> P["AIPF<br/>MCP OAuth 연결"]
P --> M["DDS MCP<br/>JWT 검증·사용자 매핑"]
M --> D["Oracle DDS<br/>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 client / AD 동기화 | 설치 완료 · Alice/Bob 2명과 DDS-DDS-Users 1개 import 성공 |
| OCI delegated authentication | 차단: 이 Identity Domain에서 기능이 beta 미활성화 상태. OCI tenancy enablement 필요 |
핵심 결정
- 사용자 token과 DB service token은 분리한다.
- 사용자 token: 누가 MCP를 호출했는가
- DB service token: MCP service가 DDS context를 열 수 있는가
- 사람별 권한 키는 검증된
issuer + sub이며, UPN/email은 표시·감사용이다. - DB 권한은 MCP가 아닌 Oracle DDS DATA ROLE/DATA GRANT에서 default deny로 집행한다.
- OCI 전환은 기존 Keycloak을 즉시 제거하지 않고, OCI 경로의 Alice/Bob 결과가 같은지 확인한 뒤에만 완료한다.
문서 지도
| 필요한 경우 | 읽을 문서 |
|---|---|
| 전체 신뢰 경계, token 두 종류, DB/DDS 매핑 구조를 이해할 때 | 아키텍처 상세 |
| OCI AD Bridge 설치, OCI OAuth client 등록, AIPF/MCP 전환을 수행할 때 | 적용 Cookbook |
| 로그인·callback·token·LDAPS·권한 오류를 진단할 때 | 트러블슈팅 |
| 저장소 전체 문서 작성 구조를 확인할 때 | 문서 구조 표준 |
전환 완료 기준
- OCI AD Bridge가
dds-alice,dds-bob과 필요한 AD 그룹을 동기화한다. - OCI tenancy에서 delegated authentication capability가 enable된 뒤, 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에 기록한다.