5.4 KiB
5.4 KiB
트러블슈팅: OCI AD Bridge · OAuth · DDS MCP
개요로 돌아가기 · 적용 Cookbook · 아키텍처
Windows AD Bridge
| 증상 | 원인 확인 | 해결 |
|---|---|---|
WinRM HTTPS TCP/5986 Connection timed out |
OCI NSG에 관리 workstation /32의 TCP 5986 인바운드가 있는지 먼저 확인한다. 규칙을 추가한 뒤에도 timeout이면 Windows 내부 listener/firewall 문제다. |
RDP에서 winrm enumerate winrm/config/listener, Get-NetFirewallRule -DisplayGroup 'Windows Remote Management'로 확인하고 HTTPS listener와 방화벽 rule을 구성한다. Bridge 자체 오류가 아니다. |
OCI Run Command plugin은 RUNNING인데 command가 ACCEPTED/VISIBLE |
단순 echo도 실행되지 않으면 script 문제가 아님 |
Windows Oracle Cloud Agent/Run Command service, outbound OCI 연결, plugin log를 RDP에서 점검한다. |
AD Bridge installer가 /quiet에서 No response file specified for silent install으로 종료 |
이 WiX 기반 버전은 silent 설치에 response file이 필수다. | 임의의 response file을 만들지 말고 RDP의 관리자 설치 UI로 진행한다. 검증된 response file을 확보한 경우에만 secret 보관/삭제 정책을 적용해 자동화한다. |
| LDAPS certificate 오류 | Bridge host가 AD DS server/CA certificate를 신뢰하는지 확인 | CA chain을 Windows trust store에 배포하고 LDAPS를 유지한다. |
Bridge Connected가 되지 않음 |
OCI 443, AD 636, Bridge service account credential/권한 확인 | NSG/proxy/firewall 및 최소 AD 권한을 순서대로 점검한다. |
Windows 원격 관리 경로가 막힌 경우
이 PoC VM에서는 OCI NSG의 TCP 5986 누락을 보완했어도 Windows가 HTTPS WinRM 요청에 응답하지 않았다. 따라서 NSG rule 추가만으로 WinRM이 활성화되는 것은 아니다.
RDP로 DDS\\opc로 로그인한 뒤 Administrator PowerShell에서 다음 순서로 점검한다. 운영에서는 management source를 반드시 고정 IP 또는 private subnet으로 제한한다.
winrm quickconfig
winrm enumerate winrm/config/listener
Get-NetFirewallRule -DisplayGroup 'Windows Remote Management' |
Select-Object DisplayName, Enabled, Direction, Action
HTTPS listener가 없다면 서버 인증서의 thumbprint를 지정해 생성하고, TCP 5986 firewall rule을 enable한 뒤 외부에서 /wsman endpoint를 재확인한다. OCI Run Command가 ACCEPTED/VISIBLE에 머물면 그 기능으로 installer를 실행하지 말고, Windows Oracle Cloud Agent와 outbound OCI 연결을 RDP에서 복구한 후 다시 시도한다.
동기화와 delegated authentication
| 증상 | 원인 확인 | 해결 |
|---|---|---|
| Alice/Bob이 OCI Domain에 보이지 않음 | 선택한 사용자 OU/하위 OU와 initial sync 상태 | OU 범위와 filter를 수정하고 sync를 재실행한다. |
| OCI 로그인 비밀번호가 실패 | delegated authentication test에서 동일 AD 계정으로 재현 | AD 비밀번호, Bridge AD 연결, service account delegated-auth 권한을 확인한다. |
| AD 비밀번호를 OCI local password로 입력하려 함 | delegated authentication 활성화 여부 | 성공 시험 후 활성화한다. 활성화 뒤 실제 비밀번호 원천은 AD다. |
OCI OAuth와 AIPF
| 증상/오류 | 원인 | 해결 |
|---|---|---|
/admin/v1/admin/v1/Apps 및 401 |
oci identity-domains --endpoint에 /admin/v1까지 넣음 |
CLI에는 Domain base URL만 사용한다. raw request target에만 /admin/v1을 넣는다. |
No such option: --header |
oci raw-request 옵션명 오류 |
--request-headers '{"Content-Type":"application/json"}'를 사용한다. |
Missing required attribute(s): basedOnTemplate |
confidential client app template 누락 | basedOnTemplate.value=CustomWebAppTemplateId를 지정한다. |
| authorize URL이 302 대신 200 | OCI Domain이 sign-in HTML과 session cookie를 반환 | 정상이다. browser에서 OCI login UI가 표시되는지 확인한다. |
| AIPF callback 오류 | redirect URI가 두 AIPF 경로 중 실제 요청 경로와 다름 | /agentFactory/.../callback과 /v1/.../callback 둘 다 등록한다. |
| 이전 사용자로 자동 로그인 | OCI Domain browser SSO session 유지 | OCI logout 후 새 MCP source를 연결한다. |
MCP와 DDS
| 증상 | 원인 | 해결 |
|---|---|---|
MCP 401 / tools discovery 실패 |
OCI issuer/audience가 runtime에 반영되지 않았거나 token 만료 | discovery/JWT claim을 기준으로 issuer·audience를 설정한다. |
token 검증은 되지만 AUTHORIZATION_DENIED |
OCI iss + sub binding 미등록/비활성 |
CB_EXTERNAL_IDENTITY_BINDING과 DDS END USER mapping을 함께 확인한다. |
DDS_CONTEXT_UNAVAILABLE |
DB service client/scope/domain URL 설정 문제 | DDS_MCP_SERVICE_TEST, DDS_ORACLE_DB_TEST, DB_ACCESS_SCOPE, DB application identity를 확인한다. |
ORA-52602 |
database-access token issuer/resource/scope 불일치 | DB의 OCI Domain URL 정규형(:443 포함), resource app ID/scope를 맞춘다. |
| Alice 성공, Bob “DDS 보호 객체” | Bob DATA GRANT 없음 | 의도된 default deny다. 정책상 필요할 때만 최소 grant를 추가한다. |
외부 오류 메시지에는 SQL, table명, secret을 노출하지 않는다. 내부 감사에는 correlation ID, 내부 user ID, 선택 DDS END USER, allow/deny 결과를 남긴다.