Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Secure tunnel로 사설 시스템에 연결하기

Secure tunnel은 고객 네트워크 안의 initiator가 Foundry 쪽으로 연결을 열고, Foundry의 외부 요청을 그 터널로 전달하는 방식입니다. 목적지 시스템을 Foundry의 신규 인바운드 연결에 공개하지 않고도 애플리케이션은 직접 연결하는 것처럼 사용할 수 있습니다.

구성 요소

요소위치역할
Initiator고객 네트워크Control plane과 responder로 아웃바운드 연결을 만들고 목적지에 트래픽을 전달합니다.
Control planePalantir 플랫폼Initiator를 인증하고 접근 토큰을 발급 및 갱신하며 네트워크 구성을 제공합니다.
ResponderPalantir 플랫폼Initiator가 연 터널을 받아 플랫폼 서비스의 egress 요청을 터널로 전달합니다.

고객 네트워크와 플랫폼 사이의 연결은 TLS로 암호화합니다. 목적지 시스템은 initiator 호스트의 연결을 허용해야 하며, initiator의 자체 허용 목록과 Foundry egress 정책도 모두 충족해야 합니다.

Initiator는 Envoy의 reverse tunnel 기능을 사용하는 전용 프록시입니다. Control plane이 발급한 짧은 수명의 토큰으로 인증하고 자동 교체하므로 고객 네트워크에 장기 자격 증명을 저장하는 구조가 아닙니다.

클러스터와 배포 방식

클러스터는 같은 네트워크 및 목적지에 접근하는 하나 이상의 initiator를 묶습니다. Egress 정책은 개별 initiator가 아니라 클러스터를 참조합니다. 여러 initiator를 두면 연결을 분산하고 하나를 정비할 때 다른 initiator가 계속 처리할 수 있습니다. 각 initiator는 자신의 아웃바운드 터널을 유지합니다.

Data Connection 에이전트로 관리하면 에이전트가 initiator를 배포, 재시작 및 업그레이드합니다. 메모리 부족 등으로 프로세스가 멈추면 다시 시작하며 기존 Data Connection 작업과 Agent proxy 처리도 병행할 수 있습니다.

Apollo 관리형 배포에서는 준비한 환경에 Helm chart로 배포합니다. 그 환경에서 Palantir 플랫폼으로 아웃바운드 연결이 가능해야 합니다. Apollo는 Control plane 주소, 플랫폼 TLS 인증서를 검증할 trust bundle과 최초 인증용 토큰을 구성합니다. 실행 후 initiator가 토큰을 자동 교체하고 responder 터널을 열며 상태를 Apollo에 보고합니다.

에이전트로 첫 initiator 배포

먼저 플랫폼에서 클러스터와 initiator를 생성해 RID를 발급합니다. 이 식별자로 control plane에 인증하고 클러스터에 등록합니다.

  1. Control Panel의 Network egress에서 Secure tunnels 탭을 엽니다.

  1. Create cluster를 선택하고 Cluster details에 이름을 입력한 뒤 생성합니다.

  1. Create your first initiator에서 이름을 입력하고 Create initiator를 선택합니다.

  1. Deploy your first initiator에서 배포를 맡을 Data Connection 에이전트를 선택하고 Save를 누릅니다. 선택한 에이전트의 Owner 권한이 필요하며, 에이전트 하나는 동시에 initiator 하나만 배포할 수 있습니다.

  1. Next steps의 Open agent에서 에이전트 관리 화면을 열고 재시작합니다. 에이전트는 다음 재시작 때 initiator를 배포합니다.

  1. 생성 대화상자로 돌아와 Done으로 닫습니다.

에이전트 자체가 없다면 먼저 에이전트를 설치합니다.

Initiator의 egress allowlist

허용 목록은 initiator가 연결할 목적지 IPv4 범위와 포트를 정합니다. 어떤 항목에도 일치하지 않으면 거부하며 명시적으로 빈 목록은 모든 egress를 차단합니다.

각 항목에는 cidrBlock과 port가 필요합니다. endPort를 선택적으로 지정하면 port부터 endPort까지의 포트를 모두 허용합니다. 다음 예시는 한 호스트의 7000~9000번 포트와 한 서브넷의 443번 포트에 연결을 허용합니다.

allowListedCidrs:
  - cidrBlock: '192.168.1.1/32'
    port: 7000
    endPort: 9000
  - cidrBlock: '192.168.2.0/24'
    port: 443

에이전트가 initiator를 배포할 때의 자동 기본 설정은 다음과 같이 모든 IPv4 주소의 1~65535 포트를 허용합니다. 운영에 필요한 범위가 좁다면 이 항목을 필요한 CIDR 및 포트로 교체합니다.

allowListedCidrs:
  - cidrBlock: '0.0.0.0/0'
    port: 1
    endPort: 65535

관리 에이전트의 Agent settings > Configuration > Advanced > Envoy에서 allowListedCidrs를 편집합니다. Apollo 관리형은 Apollo 제품의 구성 페이지에서 바꿉니다.

어떤 허용 목록을 사용하더라도 IPv4 link-local 범위 169.254.0.0/16은 항상 거부합니다.

Foundry 작업에 연결

Initiator 자체 허용 목록만으로 Foundry 작업이 터널을 사용할 수 있는 것은 아닙니다. Control Panel에서 Secure tunnel egress 정책을 만들고 Data Connection 소스에 붙입니다.

클러스터가 존재하면 정책은 initiator가 실행되기 전이나 후에 만들 수 있습니다. 실제 연결에는 initiator 실행 상태, 목적지 네트워크 접근, 자체 allowlist와 소스의 egress 정책이 모두 준비되어야 합니다.