InfoGrab Docs

내부 및 외부 Proxy Service 트래픽 분리

요약

Teleport Cloud에 배포된 클러스터를 포함한 일반적인 Teleport 클러스터에서 Teleport Proxy Service는 공개 인터넷의 사용자와 프라이빗 네트워크에서 실행되는 인프라 리소스 모두에 단일 HTTPS 포트를 노출합니다.

Teleport Cloud에 배포된 클러스터를 포함한 일반적인 Teleport 클러스터에서 Teleport Proxy Service는 공개 인터넷의 사용자와 프라이빗 네트워크에서 실행되는 인프라 리소스 모두에 단일 HTTPS 포트를 노출합니다. 이를 필요로 하는 보안 요구사항이 있는 자체 호스팅 Teleport 클러스터의 경우, 공개 인터넷 또는 내부 네트워크에서 발생하는지에 따라 Proxy Service로의 트래픽을 다르게 처리하도록 클러스터를 구성할 수 있습니다.

이 가이드는 내부 및 외부 클라이언트에 대한 Proxy Service HTTPS 트래픽을 분리하기 위해 자체 호스팅 Teleport 클러스터를 설정하는 방법을 설명합니다.

아키텍처#

원본에 따라 Teleport Proxy Service 트래픽을 다르게 처리하려면 별도의 Proxy Service 로드 밸런서를 배포할 수 있습니다:

  • 공개 인터넷의 최종 사용자 트래픽을 위한 로드 밸런서
  • 프라이빗 네트워크의 Teleport 에이전트 트래픽을 위한 로드 밸런서

각 로드 밸런서는 별도의 IP 주소를 가집니다. 두 로드 밸런서 모두 같은 AWS 타겟 그룹과 같이 동일한 Teleport Proxy Service 인스턴스 풀로 트래픽을 라우팅합니다.

클라이언트는 적절한 주소의 Proxy Service 로드 밸런서에 연결합니다. Teleport 에이전트는 내부 로드 밸런서에 연결하여 Proxy Service로 SSH 역방향 터널을 설정하고, 외부 클라이언트는 외부 로드 밸런서를 사용하여 Proxy Service에 연결합니다.

최종 사용자가 인프라 리소스에 연결할 때(예: tsh proxy db 사용 또는 Teleport 보호 애플리케이션에 HTTP 요청 전송), 외부 로드 밸런서에 연결하면 트래픽이 Teleport Proxy Service로 전달됩니다. 그런 다음 Proxy Service는 역방향 터널을 선택하여 트래픽을 적절한 인프라 리소스로 라우팅합니다.

적절한 로드 밸런서로 트래픽 라우팅#

외부 Proxy Service 클라이언트용과 내부 클라이언트용의 두 개의 로드 밸런서를 배포했다고 가정하면, Teleport 에이전트와 최종 사용자에서 적절한 로드 밸런서로 트래픽을 라우팅하는 세 가지 전략이 있습니다:

경고

분할 DNS 접근 방식을 강력히 권장합니다. 논의하는 세 가지 방법 중 이 방법이 Teleport 클러스터에 가장 덜 방해적인 변경을 요구하며, 다른 권장 구성을 지원하는 유일한 방법입니다.

분할 DNS#

Teleport 클러스터의 단일 공개 주소가 최종 사용자에게 외부 엔드포인트로, 내부 네트워크의 인프라 리소스에 내부 엔드포인트로 확인되도록 인프라를 설정할 수 있습니다.

별도의 내부 및 외부 Proxy Service 로드 밸런서를 유지하기 위해 이 접근 방식을 강력히 권장합니다. 이것은 클러스터에 대한 다른 권장 구성을 유지하면서 구현할 수 있는 유일한 접근 방식입니다: TLS 다중화와 Proxy Service 공개 주소에 대한 단일 값.

  1. Teleport Proxy Service에 사용할 공개 주소를 결정합니다. 예: proxy.example.com.

  2. 내부 네트워크에는 내부 로드 밸런서의 IP 주소를, 공개 인터넷에는 외부 로드 밸런서를 반환하도록 DNS 인프라를 구성합니다.

    예를 들어 Amazon Route 53에서 동일한 도메인에 대한 공개 및 프라이빗 호스팅 영역을 생성하고 각 호스팅 영역에 별도의 레코드를 추가할 수 있습니다(AWS 문서).

  3. 공개 주소에 단일 값을 포함하도록 Proxy Service 구성을 편집합니다:

    proxy_service:
      enabled: true
      public_addr: proxy.example.com:3080
    

여러 공개 주소#

SSH 호스트 인증서에 여러 주소를 광고하도록 Teleport Proxy Service를 구성할 수 있습니다. 이를 통해 내부 클라이언트(예: Teleport 에이전트)는 내부 주소의 Proxy Service에 연결하고 외부 클라이언트는 외부 주소에서 연결하도록 지시할 수 있습니다. 인프라가 분할 DNS를 지원하지 않고 클러스터에 TLS 다중화가 활성화된 경우 이 접근 방식을 사용할 수 있습니다.

  1. 내부 및 외부 Teleport Proxy Service 로드 밸런서에 대한 두 개의 DNS 레코드를 각각 생성합니다. 이 섹션에서는 다음 레코드를 생성했다고 가정합니다:

    도메인 이름 IP 주소
    external_proxy.example.com 외부 로드 밸런서
    internal_proxy.example.com 내부 로드 밸런서
  2. 여러 공개 주소 값을 사용하도록 Teleport Proxy Service를 구성합니다:

    proxy_service:
      enabled: true
      public_addr:
        - external_proxy.example.com:443
        - internal_proxy.example.com:443
    
  3. Teleport 에이전트 호스트에서 내부 Proxy Service 로드 밸런서 주소에 할당된 TELEPORT_TUNNEL_PUBLIC_ADDR 환경 변수로 teleport 프로세스를 시작합니다.

    TELEPORT_TUNNEL_PUBLIC_ADDR을 설정하면 에이전트가 첫 번째 나열된 공개 주소를 사용하여 Proxy Service 인증서를 확인하는 기본 동작 대신 환경 변수 값을 사용하도록 재정의됩니다.

    이 단계는 Managed Updates v2를 사용하여 Linux 서버에 Teleport를 설치했는지 또는 teleport-kube-agent Helm 차트를 사용했는지에 따라 다릅니다:

    Linux 서버:

    Managed Updates v2 기반의 Teleport 설치는 기본적으로 teleport systemd 유닛이 /etc/default/teleport 파일에서 환경 변수를 읽도록 구성합니다.

    내부 Proxy Service 로드 밸런서 주소를 포함하는 값으로 업데이트하여 터널 공개 주소를 지정하도록 환경 파일을 편집합니다:

    TELEPORT_TUNNEL_PUBLIC_ADDR=internal_proxy.example.com:443
    

    Kubernetes:

    teleport-kube-agent 설치의 values 파일에서 다음 필드를 할당합니다:

    extraEnv:
      - name: TELEPORT_TUNNEL_PUBLIC_ADDR
        value: "internal_proxy.example.com:443"
    

    릴리즈 이름에 을 할당하여 teleport-kube-agent Helm 릴리즈를 업그레이드합니다. 이 명령은 values 파일 경로가 values.yaml이라고 가정합니다:

    $ helm upgrade  teleport/teleport-kube-agent --values values.yaml
    

이 설정에서 최종 사용자는 tsh와 같은 클라이언트 도구를 사용할 때 외부 주소 external_proxy.example.com:443에 연결합니다.

터널 공개 주소#

클러스터에서 TLS 다중화가 비활성화된 경우 Teleport 에이전트와 같은 내부 클라이언트가 최종 사용자가 연결하는 HTTPS 포트와 별도의 포트를 통해 Teleport Proxy Service에 연결하도록 구성할 수 있습니다. 클러스터에서 TLS 다중화가 이미 비활성화되어 있지 않은 경우 분할 DNS 또는 여러 공개 Proxy Service 주소를 사용하는 것을 권장합니다.

  1. 역방향 터널 설정을 위한 공개 주소를 설정하도록 Teleport Proxy Service 구성을 편집합니다:

    proxy_service:
      enabled: true
      public_addr: external_proxy.example.com:3080
      tunnel_public_addr: internal_proxy.example.com:3024
    
  2. Teleport Proxy Service에 대한 두 개의 DNS 레코드를 생성합니다:

    • internal_proxy.example.com의 내부 Proxy Service 로드 밸런서 레코드
    • external_proxy.example.com의 외부 Proxy Service 로드 밸런서 레코드

이 시점에서 Teleport 에이전트는 에이전트 구성 파일에 다음 필드를 설정한 경우 내부 주소를 사용하여 Proxy Service에 연결할 수 있습니다:

teleport:
  proxy_server: internal_proxy.example.com:3024

최종 사용자는 external_proxy.example.com:3080에서 Teleport Proxy Service에 연결할 수 있습니다.

내부 및 외부 Proxy Service 트래픽 분리

원문 보기
요약

Teleport Cloud에 배포된 클러스터를 포함한 일반적인 Teleport 클러스터에서 Teleport Proxy Service는 공개 인터넷의 사용자와 프라이빗 네트워크에서 실행되는 인프라 리소스 모두에 단일 HTTPS 포트를 노출합니다.

Teleport Cloud에 배포된 클러스터를 포함한 일반적인 Teleport 클러스터에서 Teleport Proxy Service는 공개 인터넷의 사용자와 프라이빗 네트워크에서 실행되는 인프라 리소스 모두에 단일 HTTPS 포트를 노출합니다. 이를 필요로 하는 보안 요구사항이 있는 자체 호스팅 Teleport 클러스터의 경우, 공개 인터넷 또는 내부 네트워크에서 발생하는지에 따라 Proxy Service로의 트래픽을 다르게 처리하도록 클러스터를 구성할 수 있습니다.

이 가이드는 내부 및 외부 클라이언트에 대한 Proxy Service HTTPS 트래픽을 분리하기 위해 자체 호스팅 Teleport 클러스터를 설정하는 방법을 설명합니다.

아키텍처#

원본에 따라 Teleport Proxy Service 트래픽을 다르게 처리하려면 별도의 Proxy Service 로드 밸런서를 배포할 수 있습니다:

  • 공개 인터넷의 최종 사용자 트래픽을 위한 로드 밸런서
  • 프라이빗 네트워크의 Teleport 에이전트 트래픽을 위한 로드 밸런서

각 로드 밸런서는 별도의 IP 주소를 가집니다. 두 로드 밸런서 모두 같은 AWS 타겟 그룹과 같이 동일한 Teleport Proxy Service 인스턴스 풀로 트래픽을 라우팅합니다.

클라이언트는 적절한 주소의 Proxy Service 로드 밸런서에 연결합니다. Teleport 에이전트는 내부 로드 밸런서에 연결하여 Proxy Service로 SSH 역방향 터널을 설정하고, 외부 클라이언트는 외부 로드 밸런서를 사용하여 Proxy Service에 연결합니다.

최종 사용자가 인프라 리소스에 연결할 때(예: tsh proxy db 사용 또는 Teleport 보호 애플리케이션에 HTTP 요청 전송), 외부 로드 밸런서에 연결하면 트래픽이 Teleport Proxy Service로 전달됩니다. 그런 다음 Proxy Service는 역방향 터널을 선택하여 트래픽을 적절한 인프라 리소스로 라우팅합니다.

적절한 로드 밸런서로 트래픽 라우팅#

외부 Proxy Service 클라이언트용과 내부 클라이언트용의 두 개의 로드 밸런서를 배포했다고 가정하면, Teleport 에이전트와 최종 사용자에서 적절한 로드 밸런서로 트래픽을 라우팅하는 세 가지 전략이 있습니다:

경고

분할 DNS 접근 방식을 강력히 권장합니다. 논의하는 세 가지 방법 중 이 방법이 Teleport 클러스터에 가장 덜 방해적인 변경을 요구하며, 다른 권장 구성을 지원하는 유일한 방법입니다.

분할 DNS#

Teleport 클러스터의 단일 공개 주소가 최종 사용자에게 외부 엔드포인트로, 내부 네트워크의 인프라 리소스에 내부 엔드포인트로 확인되도록 인프라를 설정할 수 있습니다.

별도의 내부 및 외부 Proxy Service 로드 밸런서를 유지하기 위해 이 접근 방식을 강력히 권장합니다. 이것은 클러스터에 대한 다른 권장 구성을 유지하면서 구현할 수 있는 유일한 접근 방식입니다: TLS 다중화와 Proxy Service 공개 주소에 대한 단일 값.

  1. Teleport Proxy Service에 사용할 공개 주소를 결정합니다. 예: proxy.example.com.

  2. 내부 네트워크에는 내부 로드 밸런서의 IP 주소를, 공개 인터넷에는 외부 로드 밸런서를 반환하도록 DNS 인프라를 구성합니다.

    예를 들어 Amazon Route 53에서 동일한 도메인에 대한 공개 및 프라이빗 호스팅 영역을 생성하고 각 호스팅 영역에 별도의 레코드를 추가할 수 있습니다(AWS 문서).

  3. 공개 주소에 단일 값을 포함하도록 Proxy Service 구성을 편집합니다:

    proxy_service:
      enabled: true
      public_addr: proxy.example.com:3080
    

여러 공개 주소#

SSH 호스트 인증서에 여러 주소를 광고하도록 Teleport Proxy Service를 구성할 수 있습니다. 이를 통해 내부 클라이언트(예: Teleport 에이전트)는 내부 주소의 Proxy Service에 연결하고 외부 클라이언트는 외부 주소에서 연결하도록 지시할 수 있습니다. 인프라가 분할 DNS를 지원하지 않고 클러스터에 TLS 다중화가 활성화된 경우 이 접근 방식을 사용할 수 있습니다.

  1. 내부 및 외부 Teleport Proxy Service 로드 밸런서에 대한 두 개의 DNS 레코드를 각각 생성합니다. 이 섹션에서는 다음 레코드를 생성했다고 가정합니다:

    도메인 이름 IP 주소
    external_proxy.example.com 외부 로드 밸런서
    internal_proxy.example.com 내부 로드 밸런서
  2. 여러 공개 주소 값을 사용하도록 Teleport Proxy Service를 구성합니다:

    proxy_service:
      enabled: true
      public_addr:
        - external_proxy.example.com:443
        - internal_proxy.example.com:443
    
  3. Teleport 에이전트 호스트에서 내부 Proxy Service 로드 밸런서 주소에 할당된 TELEPORT_TUNNEL_PUBLIC_ADDR 환경 변수로 teleport 프로세스를 시작합니다.

    TELEPORT_TUNNEL_PUBLIC_ADDR을 설정하면 에이전트가 첫 번째 나열된 공개 주소를 사용하여 Proxy Service 인증서를 확인하는 기본 동작 대신 환경 변수 값을 사용하도록 재정의됩니다.

    이 단계는 Managed Updates v2를 사용하여 Linux 서버에 Teleport를 설치했는지 또는 teleport-kube-agent Helm 차트를 사용했는지에 따라 다릅니다:

    Linux 서버:

    Managed Updates v2 기반의 Teleport 설치는 기본적으로 teleport systemd 유닛이 /etc/default/teleport 파일에서 환경 변수를 읽도록 구성합니다.

    내부 Proxy Service 로드 밸런서 주소를 포함하는 값으로 업데이트하여 터널 공개 주소를 지정하도록 환경 파일을 편집합니다:

    TELEPORT_TUNNEL_PUBLIC_ADDR=internal_proxy.example.com:443
    

    Kubernetes:

    teleport-kube-agent 설치의 values 파일에서 다음 필드를 할당합니다:

    extraEnv:
      - name: TELEPORT_TUNNEL_PUBLIC_ADDR
        value: "internal_proxy.example.com:443"
    

    릴리즈 이름에 을 할당하여 teleport-kube-agent Helm 릴리즈를 업그레이드합니다. 이 명령은 values 파일 경로가 values.yaml이라고 가정합니다:

    $ helm upgrade  teleport/teleport-kube-agent --values values.yaml
    

이 설정에서 최종 사용자는 tsh와 같은 클라이언트 도구를 사용할 때 외부 주소 external_proxy.example.com:443에 연결합니다.

터널 공개 주소#

클러스터에서 TLS 다중화가 비활성화된 경우 Teleport 에이전트와 같은 내부 클라이언트가 최종 사용자가 연결하는 HTTPS 포트와 별도의 포트를 통해 Teleport Proxy Service에 연결하도록 구성할 수 있습니다. 클러스터에서 TLS 다중화가 이미 비활성화되어 있지 않은 경우 분할 DNS 또는 여러 공개 Proxy Service 주소를 사용하는 것을 권장합니다.

  1. 역방향 터널 설정을 위한 공개 주소를 설정하도록 Teleport Proxy Service 구성을 편집합니다:

    proxy_service:
      enabled: true
      public_addr: external_proxy.example.com:3080
      tunnel_public_addr: internal_proxy.example.com:3024
    
  2. Teleport Proxy Service에 대한 두 개의 DNS 레코드를 생성합니다:

    • internal_proxy.example.com의 내부 Proxy Service 로드 밸런서 레코드
    • external_proxy.example.com의 외부 Proxy Service 로드 밸런서 레코드

이 시점에서 Teleport 에이전트는 에이전트 구성 파일에 다음 필드를 설정한 경우 내부 주소를 사용하여 Proxy Service에 연결할 수 있습니다:

teleport:
  proxy_server: internal_proxy.example.com:3024

최종 사용자는 external_proxy.example.com:3080에서 Teleport Proxy Service에 연결할 수 있습니다.