Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

소스 연결과 인증 문제 조사

소스가 예상대로 동작하지 않으면 네트워크 도달성, 외부 통신 정책, 인증 정보와 인증서를 나누어 확인합니다. 소스 연결 자체가 실패하는지, 연결은 되지만 특정 동기화만 실패하는지를 먼저 구분하면 조사 범위를 줄일 수 있습니다.

처음 확인할 항목

  1. 소스 페이지의 Preview로 연결이 성립하는지 확인합니다. 실패하면 소스 터미널에서 실제 호스트와 포트를 대상으로 DNS, HTTP와 TLS 연결을 조사합니다.
  2. Foundry 워커 소스에서는 올바른 외부 통신 정책이 연결되어 있고 대상 주소, 포트와 프로토콜이 맞는지 확인합니다.
  3. 인증 정보가 오래되었거나 변경되었는지 확인합니다. 특히 워커 전환 후 문제가 생겼다면 현재 인증 정보를 다시 입력해야 할 수 있습니다.
  4. PKIX 또는 SSLHandshakeException이 나타나면 인증서와 TLS 설정을 확인합니다.
  5. 외부 인증 애플리케이션(Outbound application)을 사용한다면 호출 사용자의 인가 상태, 애플리케이션 활성 여부와 OAuth 범위를 확인합니다.
  6. Foundry 워커 소스에서는 Debug with AI FDE로 조사 절차를 지원받을 수 있습니다.

에이전트 워커 소스는 Data Connection에서 에이전트가 Online인지도 확인해야 합니다.

AI FDE로 조사하기

AI FDE는 소스와 그 소스의 외부 통신 정책을 작업 맥락으로 불러오고, 외부 통신 로그와 소스 진단 도구로 연결 실패를 조사할 수 있습니다.

  1. Data Connection에서 조사할 소스를 엽니다.
  2. Connection details의 Debug 옆 드롭다운을 엽니다.
  3. Debug with AI FDE를 선택합니다.

새 탭에 소스와 정책이 포함된 상태로 AI FDE가 열립니다. 소스 구성, 각 외부 통신 정책, 네트워크 로그와 실제 연결 시험을 포함하는 조사 계획을 제안합니다. 이후 정상 동작과 실패를 구분하고 정책 누락, 잘못된 주소나 포트, TLS 설정과 인증 정보 등의 수정 방향을 제시합니다.

이 기능은 Foundry 워커 소스에서만 사용할 수 있으며 플랫폼 인스턴스에 AIP가 활성화되어 있어야 합니다.

소스 터미널

소스 터미널은 소스와 같은 연결 설정을 사용하는 환경에서 dig, curl, netcat, openssl 같은 도구로 외부 시스템의 네트워크를 조사하는 기능입니다.

소스 페이지의 Connection details → Network connectivity에서 Debug를 선택하여 엽니다.

아래 진단 명령의 호스트와 포트는 실제 소스의 값으로 바꾸어 사용합니다. palantir.com은 명령 형태를 보여주는 대상입니다.

DNS 확인

dig palantir.com

응답의 ANSWER SECTION에서 주소가 반환되는지 확인합니다. 정상적인 응답에서는 status: NOERROR와 호스트 이름에 대응하는 주소 레코드를 볼 수 있습니다.

에이전트 프록시 정책을 사용하는 경우에는 10.238.0.X처럼 내부 가상 IP가 반환될 수 있습니다. 이 주소는 Foundry가 에이전트 경로로 연결을 전달할 때 사용하는 주소이며, 원천 시스템의 실제 IP가 아닙니다.

따라서 소스 터미널의 dig가 성공했다고 해서 에이전트가 대상 이름을 해석하거나 실제 서버에 도달할 수 있다고 판단하지 않습니다. 원래 호스트 이름과 포트로 curl이나 openssl s_client를 실행하여 연결을 확인합니다.

HTTP 확인

curl https://palantir.com

포트를 생략하면 프로토콜의 기본 포트를 사용합니다. HTTP는 80, HTTPS는 443입니다.

301 Moved처럼 리다이렉트 응답을 받는 것도 HTTP 서버가 응답했다는 의미입니다. 다만 소스의 데이터 API에 인증하여 접근하는 데 성공했다는 의미와는 구분합니다.

연결을 맺는 데 오래 걸리면 초 단위 연결 타임아웃을 지정할 수 있습니다.

curl --connect-timeout 10 https://palantir.com

--connect-timeout은 연결 단계의 제한이며, 연결 후 전체 데이터 전송 시간을 제한하는 설정과는 다릅니다.

TLS와 인증서 확인

openssl s_client -connect palantir.com:443 -servername palantir.com

연결 결과에서 인증서 체인, 검증 메시지와 TLS 핸드셰이크 결과를 확인합니다. 인증서 검증 오류가 있거나 연결을 맺지 못한다면 네트워크 또는 인증서 구성을 조사합니다.

화면에 설정한 인증서는 소스 터미널에 자동으로 포함되지 않습니다. 터미널에서 같은 인증서를 사용하려면 인증서 파일을 직접 준비해야 합니다. nano나 vim 등으로 파일을 만들 때는 BEGIN CERTIFICATE와 END CERTIFICATE 사이의 전체 PEM 내용을 저장합니다. 일부가 생략된 문자열은 인증서 파일로 사용할 수 없습니다.

다음은 가상의 서버에 사용자 지정 서버 인증서와 mTLS 클라이언트 인증서로 연결하는 예시입니다.

openssl s_client -connect my-server.example.com:443 \
  -servername my-server.example.com \
  -CAfile server-cert.pem \
  -cert client-cert.pem \
  -key client-key.pem

이 명령은 직접 준비한 파일을 사용합니다. 터미널의 시험이 성공하는데 소스가 실패한다면 소스 설정에 적용한 인증서나 인증 정보가 이 구성과 같은지 확인합니다.

외부 통신 로그와 메트릭

Foundry 워커 소스의 외부 통신 로그는 소스가 실제로 시도한 네트워크 요청을 보여줍니다. 터미널의 수동 시험만으로 드러나지 않는 목적지나 차단 요청을 확인할 수 있습니다.

위치조회 방법
빌드 페이지Logs에서 Network egress logs 필터 적용
Control PanelNetwork egress에서 정책을 선택하고 Observability 탭 열기

정책의 Observability에서는 소스별 집계 로그와 정책 사용량 메트릭을 볼 수 있습니다.

외부 통신 문제가 의심되면 다음을 함께 확인합니다.

  1. 소스에 연결한 정책의 호스트, 포트와 프로토콜.
  2. 소스 터미널에서 같은 호스트와 포트에 연결한 결과.
  3. 실제 빌드의 외부 요청 중 차단된 요청.

인증 단계에 도달하기 전에 실패한다면 외부 통신 구성을 우선 조사합니다.

미리보기, 탐색과 실행 로그

소스 페이지 오른쪽의 Preview는 연결이 성립하는지 확인하는 출발점입니다. Explore에서는 원천의 테이블과 파일, 데이터 미리보기를 확인합니다.

탐색은 성공하지만 특정 동기화만 실패한다면 소스 전체의 연결보다 해당 동기화의 설정에 문제가 있을 가능성이 높습니다.

실행 중이거나 최근 끝난 동기화는 Job tracker에서 선택하여 상태, 단계와 로그를 확인합니다. JDBC 동기화에서는 _data-ingestion.log도 조사할 수 있습니다.

서버 인증서와 클라이언트 인증서

이 연결에서는 Foundry가 클라이언트이고 외부 시스템이 서버입니다.

구분역할제공할 자료
서버 인증서외부 서버가 자신의 신원을 증명합니다. Foundry는 인증서 체인을 신뢰하는 루트 인증 기관까지 검증합니다.서버 인증서 또는 인증서 번들. 서버의 개인 키는 제공하지 않음
클라이언트 인증서Foundry가 외부 서버에 자신의 신원을 증명합니다. mTLS에서는 양쪽이 서로의 신원을 검증합니다.클라이언트 인증서와 개인 키 쌍

잘 알려진 공개 인증 기관의 인증서는 보통 기본 신뢰 목록으로 검증합니다. 자체 서명 인증서나 조직 내부 인증 기관이 발급한 인증서처럼 기본 목록으로 신뢰할 수 없는 경우에는 Foundry의 신뢰 저장소에 해당 서버 인증서를 추가해야 합니다.

Foundry 워커는 소스 설정에 인증서를 구성하고, 에이전트 워커는 에이전트에 구성합니다. 설정 화면은 소스 인증서 추가에서 설명합니다.

인증서 체인 오류

다음 오류는 소스 구성에 필요한 서버 인증서가 빠졌는지 확인할 때 사용합니다.

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain

Python의 안전한 연결에서는 기반 OpenSSL 라이브러리가 인증서 체인을 검증합니다. 서버가 제시하는 인증서 체인을 보려면 다음과 같이 실행합니다.

openssl s_client -connect my-server.example.com:443 \
  -showcerts </dev/null

대상 네트워크에 접근할 수 있는 위치에서 실행해야 합니다. Foundry 워커는 소스 터미널을 사용하고, 에이전트 워커는 에이전트 호스트 또는 같은 네트워크에 접근할 수 있는 호스트를 사용합니다.

TLS 1.0과 TLS 1.1은 안전하지 않은 이전 프로토콜이므로 사용이 권장되지 않습니다. 암호 스위트 호환성은 TLS 지원 범위와 함께 확인합니다.

OAuth와 외부 인증 애플리케이션

외부 인증 애플리케이션을 사용하는 소스는 호출 사용자를 대신하여 외부 OAuth 2.0 제공자에 인증합니다. 예약 함수나 자동화처럼 대화형 화면이 없는 실행을 사용하기 전에, 해당 사용자가 대화형 인가 절차를 최소 한 번 완료해야 합니다.

HTTP 401: Unauthorized

함수나 워크플로에서 이 오류가 발생하면 다음을 확인합니다.

  • 호출 사용자가 대화형 인가 절차를 완료했는지.
  • Control Panel에서 외부 인증 애플리케이션이 Enabled인지.
  • 애플리케이션의 OAuth 범위가 요청한 API 리소스에 필요한 권한을 포함하는지.

Credentials expired and no refresh handler provided

Python 또는 TypeScript 함수에서 이 오류가 나면 캐시된 갱신 토큰이 만료되었거나 외부 서버에서 폐기되었는지 확인합니다. 사용자는 같은 외부 인증 애플리케이션을 사용하는 대화형 워크플로에서 인가를 다시 완료해야 합니다.

Control Panel의 외부 인증 애플리케이션에서 Your authorization → Set up authorization으로 인가를 수행할 수 있습니다. Workshop에서 인가 화면을 열어야 한다면 함수 기반 액션으로 호출합니다. Workshop의 함수 기반 변수나 위젯 내용처럼 함수를 직접 호출하는 경로는 인가 팝업을 열 수 없습니다.

Resolved source credentials are not present on the Source

이 오류는 소스에 외부 인증 애플리케이션이 구성되지 않았거나 호출 신원을 인가된 사용자로 연결하지 못한 경우에 나타납니다.

소스의 도메인 인증이 OAuth 2.0으로 설정되어 있는지 확인합니다. 또한 함수가 서비스 계정이 아니라 인증된 최종 사용자를 대신하여 실행되는지 확인해야 합니다.

연결 기능과 에이전트 자체의 문제 구분

소스 연결이 성립한 뒤 발생하는 증분 JDBC 동작, 간헐적인 동기화 실패와 멈춤, REQUEST_ENTITY_TOO_LARGE, BadPaddingException, 예상과 다른 타입은 동기화의 실행 로그와 설정을 조사합니다.

에이전트 상태, Agent Manager 또는 Bootstrapper 시작 실패, 메모리 부족과 다운로드 문제는 에이전트 호스트와 구성 요소의 상태를 조사해야 합니다. 예약 실행, 중복 행과 스키마 불일치는 운영 FAQ에서도 확인할 수 있습니다.