Files
vpd-permission-poc/docs/design/744-windows-ad-dds-end-user-mapping/cookbook.md

5.0 KiB

Cookbook: OCI AD Bridge로 DDS MCP 사용자 인증 전환

개요로 돌아가기 · 아키텍처 · 트러블슈팅

적용 순서

Keycloak을 삭제하지 않는다. 아래 단계를 순서대로 끝내고 Alice/Bob DDS 결과를 확인한 뒤에만 AIPF의 기본 MCP source를 OCI 경로로 바꾼다.

단계 작업 성공 판정 실패 시
0 AD·네트워크·관리 경로 점검 AD/LDAPS/OCI HTTPS 연결 가능 Windows/LDAPS
1 OCI AD Bridge 생성·Windows client 설치 Bridge Connected Windows/AD Bridge
2 AD OU/그룹 동기화 OCI Domain에 Alice/Bob 표시 동기화
3 delegated authentication 시험·활성화 AD 비밀번호 로그인 성공 동기화
4 AIPF OAuth source 등록 OCI 로그인 → callback 완료 OAuth/AIPF
5 MCP issuer/audience·DB binding 교체 OCI JWT 검증·DDS mapping 성공 MCP/DDS
6 Alice/Bob 비교 및 Keycloak 정리 판단 Alice 1건, Bob 거부 권한

0. 사전 점검

  • AD Domain: dds.test
  • OCI Identity Domain: identityAPAC
  • Bridge 설치 위치: 운영은 domain-joined Windows member server 권장. 이 PoC는 격리된 AD VM에서 설치 가능 여부를 검증한다.
  • 네트워크: Bridge host → OCI Domain HTTPS 443, Bridge host → AD LDAPS 636
  • AD Bridge service account: 동기화 대상 OU 읽기, cn=Deleted Objects 읽기, delegated authentication에 필요한 password/lockout attribute 최소 권한

Windows VM에 RDP 외의 관리 경로가 없으면 installer를 RDP에서 실행한다. WinRM/OCI Run Command 상태가 불완전하면 원격 설치 수단으로 가정하지 않는다.

1. OCI AD Bridge 생성과 설치

  1. OCI Console에서 Identity & Security → Domains → identityAPAC → Directory integrations → Add → Microsoft Active Directory Bridge를 연다.
  2. 표시되는 Bridge client ID/secret과 Domain URL을 secret store에 보관한다.
  3. Bridge installer를 domain-joined Windows에 설치한다.
  4. installer에서 OCI Domain URL/client credential 및 AD Bridge service account를 입력한다.
  5. LDAPS를 선택하고 연결 시험을 통과한다.
  6. Directory integrations에서 사용자·그룹 OU를 최소 범위로 선택하고 initial sync를 실행한다.

Bridge client secret은 AIPF OAuth client secret 및 DB service client secret과 다르다. 각 secret을 서로 대체해 입력하지 않는다.

2. delegated authentication 활성화

  1. OCI Domain에서 동기화된 dds-alice, dds-bob을 확인한다.
  2. Security → Delegated authentication → Test Delegated Authentication에서 각 AD 계정/AD 비밀번호를 시험한다.
  3. 두 계정이 성공한 뒤에만 Activate Delegated Authentication을 켠다.

이후 OCI 로그인 화면에 입력한 비밀번호는 Bridge를 거쳐 AD DS에서 검증된다. OCI Domain은 비밀번호 원천이 아니라 OIDC issuer다.

3. AIPF OCI OAuth client

AIPF_DDS_AD_TEST는 AIPF 전용 confidential client다.

설정
Grant authorization_code, refresh_token
Redirect URI https://aipf.cloud-handson.com/agentFactory/v1/tools/mcp/callbackhttps://aipf.cloud-handson.com/v1/tools/mcp/callback
Scope openid profile email offline_access
Authorization URL discovery의 authorization_endpoint
Token / Refresh URL discovery의 token_endpoint

discovery URL은 https://<identity-domain>/.well-known/openid-configuration이다. endpoint를 추측해 입력하지 않는다. local test 환경의 client credential은 git-ignore된 .runtime/aipf-dds-oci-ad-client.env에만 보관한다.

4. AIPF source와 MCP 전환

  1. AIPF에서 기존 Keycloak source를 삭제하지 않고 새 source를 만든다.
  2. Server URL은 https://hmm-backoffice.cloud-handson.com/mcp/dds/sse를 유지한다.
  3. Authentication mode를 OAuth로 선택하고 OCI client ID/secret과 discovery endpoint를 입력한다.
  4. OCI login에서 Alice로 로그인한 뒤 받은 access token의 iss, aud, sub를 안전하게 확인한다.
  5. MCP의 issuer/audience와 CB_EXTERNAL_IDENTITY_BINDING을 OCI claim 기준으로 함께 바꾼다.
  6. Alice/Bob 권한 비교가 끝난 후에만 기존 source를 해제한다.

5. 검증과 rollback

검증 성공
Alice 휴가 검색 휴가 정책 - Alice 전용 테스트 1건
Bob 같은 검색 권한 없는 보호 객체가 default deny
잘못된/만료/미매핑 OCI JWT DB query 이전에 거부

실패 시 MCP issuer/audience와 AIPF source를 Keycloak 값으로 되돌린다. DB service client, DDS_U_1/DDS_U_2, DATA GRANT는 OCI 사용자 OAuth 전환과 별개이므로 rollback 대상이 아니다.