6.5 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 최소 권한
현재 PoC Windows VM은 WinRM HTTPS(5986) 원격 실행이 확인됐다. OCI Run Command는 여전히 ACCEPTED에 머물 수 있으므로 installer 실행 수단으로 사용하지 않고 WinRM을 사용한다.
1. OCI AD Bridge 생성과 설치
- OCI Console에서 Identity & Security → Domains → identityAPAC → Directory integrations → Add → Microsoft Active Directory Bridge를 연다.
- 표시되는 Bridge client ID/secret과 Domain URL을 secret store에 보관한다.
- OCI Console에서 내려받은 Bridge installer를 domain-joined Windows로 안전하게 전달한다. 현재 확보한 검증 대상 artifact는
ad-id-bridge-23.2.92-2301160723.exe다. - installer에서 OCI Domain URL/client credential 및 AD Bridge service account를 입력한다.
- LDAPS를 선택하고 연결 시험을 통과한다.
- Directory integrations에서 사용자·그룹 OU를 최소 범위로 선택하고 initial sync를 실행한다.
Bridge client secret은 AIPF OAuth client secret 및 DB service client secret과 다르다. 각 secret을 서로 대체해 입력하지 않는다.
1.1 Installer artifact 관리
| 항목 | 이 PoC 값 | 적용 원칙 |
|---|---|---|
| 파일명 | ad-id-bridge-23.2.92-2301160723.exe |
OCI Directory integrations 화면에서 내려받은 Bridge별 installer를 사용한다. |
| 버전 | 23.2.92 |
Console이 제공하는 최신 호환 installer인지 설치 직전에 확인한다. |
| SHA-256 | 9388dbec5a76dfd19e6d3d5079e8cdccd00f4227e9aed36483961a8d68cdf19d |
전달 전·후 checksum이 일치해야 한다. |
| 원본 위치 | 로컬 ~/Downloads/ (Git 미포함) |
설치 파일·Bridge client secret·AD 비밀번호를 저장소에 commit하지 않는다. |
입력값의 출처는 다음과 같다.
| installer 입력값 | 출처 | 성공 판정 |
|---|---|---|
| Identity Domain URL, Bridge client ID/secret | OCI Console의 해당 Directory integration 설치 화면 | Installer의 OCI 연결 시험 성공 |
| AD Bridge account | dds.test AD에서 최소 권한으로 만든 전용 service account |
LDAPS 연결 시험 및 initial sync 성공 |
| AD server/SSL | dds.test LDAPS TCP 636 |
인증서 신뢰 오류 없이 연결 성공 |
실패하면 Windows/AD Bridge 문제 해결을 먼저 확인한다. installer와 client secret은 Bridge 생성 화면에서 다시 내려받거나 rotation하며, 채팅·문서·명령 이력에 secret 값을 남기지 않는다.
2. delegated authentication 활성화
- OCI Domain에서 동기화된
dds-alice,dds-bob을 확인한다. - Security → Delegated authentication → Test Delegated Authentication에서 각 AD 계정/AD 비밀번호를 시험한다.
- 두 계정이 성공한 뒤에만
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/callback 및 https://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 전환
- AIPF에서 기존 Keycloak source를 삭제하지 않고 새 source를 만든다.
- Server URL은
https://hmm-backoffice.cloud-handson.com/mcp/dds/sse를 유지한다. - Authentication mode를
OAuth로 선택하고 OCI client ID/secret과 discovery endpoint를 입력한다. - OCI login에서 Alice로 로그인한 뒤 받은 access token의
iss,aud,sub를 안전하게 확인한다. - MCP의 issuer/audience와
CB_EXTERNAL_IDENTITY_BINDING을 OCI claim 기준으로 함께 바꾼다. - 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 대상이 아니다.