InfoGrab DocsInfoGrab Docs

Teleport Agent 아키텍처

요약

Teleport Agent는 인프라의 리소스로/에서 트래픽을 라우팅합니다. Teleport Agent는 teleport 바이너리의 실행 인스턴스이며, 베어메탈, Linux VM, Docker 컨테이너, 쿠버네티스 클러스터의 파드 등 모든 Linux 플랫폼에서 실행할 수 있습니다.

Teleport Agent는 인프라의 리소스로/에서 트래픽을 라우팅합니다. 이 가이드에서는 Teleport가 이 경로를 통해 트래픽을 안전하게 관리할 수 있도록 하는 아키텍처를 설명합니다.

Teleport Agent는 teleport 바이너리의 실행 인스턴스이며, 베어메탈, Linux VM, Docker 컨테이너, 쿠버네티스 클러스터의 파드 등 모든 Linux 플랫폼에서 실행할 수 있습니다. 관리형 Teleport Enterprise 계정을 포함하여 에이전트를 배포하고 관리하는 것은 Teleport 관리자의 몫입니다.

하나의 에이전트는 여러 서비스를 실행할 수 있으며, 각 서비스는 여러 대상 리소스에 연결할 수 있습니다. 예를 들어 Linux VM에서 실행되는 단일 teleport 프로세스는 Teleport SSH 서비스와 Teleport 쿠버네티스 서비스를 모두 실행할 수 있으며, 각각 여러 터미널 세션과 쿠버네티스 클러스터에 연결할 수 있습니다.

서비스#

에이전트는 하나 이상의 서비스를 실행할 수 있습니다. 다음은 사용 가능한 에이전트 서비스 목록입니다:

서비스 프록시하는 트래픽
SSH 서비스 서비스가 실행되는 호스트로의 SSH 트래픽.
Teleport 쿠버네티스 서비스 쿠버네티스 API 서버로/에서의 HTTPS 트래픽.
Teleport 데이터베이스 서비스 Postgres, MySQL과 같은 데이터베이스 네이티브 와이어 프로토콜, DynamoDB와 같은 HTTP 기반 데이터베이스 프로토콜.
Teleport 애플리케이션 서비스 내부 웹 애플리케이션을 위한 HTTPS 및 TCP 포워딩, 선택적으로 JSON 웹 토큰 사용 가능. 클라우드 제공업체 API를 위한 서명된 HTTPS 메시지.
Teleport 데스크톱 서비스 RDP 서버로/에서의 원격 데스크톱 프로토콜(Remote Desktop Protocol) 트래픽.

에이전트는 Teleport Discovery 서비스도 실행할 수 있습니다. Discovery 서비스는 서비스 디스커버리 엔드포인트를 쿼리하여 인프라의 리소스 목록을 조회하고, Auth 서비스 백엔드에 동적 구성을 생성하여 Teleport 클러스터가 이러한 리소스로 트래픽을 라우팅하도록 구성합니다. 위에 나열된 에이전트 서비스는 이후 Discovery 서비스에 의해 등록된 리소스를 프록시할 수 있습니다.

구성 요소#

Teleport Agent 배포의 구성 요소

관리자가 리소스를 등록한 Teleport 클러스터에는 다음 구성 요소가 포함됩니다:

  • Teleport 프록시 서비스: 인증 게이트웨이 역할을 수행하고, Web UI를 서비스하며, 클라이언트 연결을 수락하는 상태 비저장 서비스입니다. 관리형 Teleport Enterprise 계정에서는 이 서비스가 Teleport 계정 URL(예: example.teleport.sh)에서 접근 가능합니다.
  • Teleport Auth 서비스: 클러스터의 인증 기관(certificate authority) 역할을 하며, 사용자 인증/인가를 처리하고 단기 클라이언트 인증서를 발급합니다.
  • Teleport Agent: 에이전트는 인프라 리소스에 대한 인증을 수행하고, 사용자 트래픽을 해당 리소스로 라우팅하며, 프로토콜 파싱을 수행합니다.
  • Teleport 클라이언트 도구(tsh, Teleport Connect, Teleport Web UI): Teleport Agent와 Teleport 프록시 서비스를 통해 인프라의 리소스에 연결합니다.
  • 로컬 프록시: 경우에 따라 tsh는 Teleport에 인증하고 클라이언트 도구(예: 데이터베이스 클라이언트 및 AWS SDK 애플리케이션)로부터 트래픽을 포워딩하는 로컬 프록시 서버를 구동합니다.
  • 인프라 리소스: Teleport는 자체 호스팅 인프라뿐만 아니라 클라우드 제공업체가 관리하는 인프라에 대한 접근도 보호할 수 있습니다.

Teleport Agent에서 Teleport Auth 서비스로#

Teleport Auth 서비스는 에이전트가 처음 클러스터에 조인할 때 호스트 인증서를 발급하는 인증 기관을 실행합니다. 에이전트를 Teleport 클러스터에 조인하는 데 사용할 수 있는 방법에 대해서는 Teleport 클러스터에 서비스 조인하기를 읽어보세요.

Teleport 클러스터의 모든 에이전트는 주기적인 핑 메시지로 Auth 서비스에 자신의 상태를 계속 업데이트합니다. 클라이언트는 Auth 서비스 API 또는 CLI를 통해 클러스터 내 모든 에이전트 인스턴스 목록에 접근할 수 있습니다.

에이전트의 아이덴티티는 클러스터에 등록된 후 받는 SSH 호스트 인증서로 표현됩니다:

호스트 인증서

이 인증서에는 다음을 포함한 에이전트에 대한 정보가 포함되어 있습니다:

  • 에이전트에 고유하게 생성된 UUID인 호스트 ID.
  • 에이전트 호스트에서 hostname 명령의 반환 값으로 기본 설정되지만 구성할 수 있는 호스트 이름.
  • 클러스터 이름. 클라우드 호스팅 Teleport Enterprise 클러스터에서는 teleport.sh의 서브도메인입니다. 자체 호스팅 클러스터에서는 기본값이 Teleport Auth 서비스의 hostname이며, 사용자가 이를 구성할 수 있습니다.
  • 인증서 확장으로 인코딩된 에이전트의 역할. 예를 들어 app,db 역할은 에이전트가 애플리케이션 서비스와 데이터베이스 서비스를 실행하도록 인가합니다.
  • 인증서의 만료 시간.

Auth 서비스는 클러스터의 호스트 CA로 서명된 단기 X.509 인증서도 생성하며, 여기에는 클라이언트의 아이덴티티와 인프라 리소스에 대한 라우팅 정보가 인코딩됩니다.

Teleport Agent에서 Teleport 프록시 서비스로#

대부분의 경우 에이전트가 Teleport 클러스터에 조인할 때 프록시 서비스로의 SSH 리버스 터널을 설정합니다. 따라서 사용자는 에이전트나 에이전트가 연결된 리소스에 직접 연결할 필요가 없습니다. 에이전트가 클러스터의 프록시 서비스로 다이얼백(dial back)할 수 있는 한, 방화벽 뒤에 위치할 수 있습니다.

터널 모드

에이전트가 프록시 서비스로 리버스 SSH 터널을 설정하면, 프록시 서비스는 인증서를 기반으로 에이전트를 식별합니다. 이 인증서는 에이전트의 시스템 역할(예: node,app,kube)과 에이전트의 UUID를 인코딩합니다. Teleport 사용자로부터의 다이얼 요청이 프록시 서비스에 도달하면, 프록시 서비스는 대상 리소스의 주소를 사용해 적절한 에이전트를 찾은 다음, 해당 에이전트와 연결된 리버스 터널을 통해 사용자 연결을 프록시합니다.

리버스 터널 없이 에이전트에 연결하기

Teleport Auth 서비스를 통해 Teleport Agent를 클러스터에 조인하는 것도 가능합니다. 에이전트가 Teleport Auth 서비스를 통해 클러스터에 조인하면, Teleport 프록시 서비스는 리버스 터널을 생성하지 않고 에이전트에 직접 다이얼합니다. 이 모드는 다음 서비스를 지원합니다:

  • Teleport SSH 서비스
  • Teleport 데스크톱 서비스
  • Teleport 쿠버네티스 서비스
  • Teleport Discovery 서비스

다이렉트 모드에서는 SSH 서비스 인스턴스가 클라이언트 SSH 인증서만 수락하는 OpenSSH 서버처럼 동작합니다. 사용자는 Teleport 프록시 서비스를 점프 호스트로 사용하거나 직접 SSH 서버에 연결할 수 있습니다:

표준 모드

다이렉트 모드는 레거시 사용 사례를 위해 설계되었으며 자체 호스팅 Teleport 클러스터만 지원합니다. 자체 호스팅 Teleport 배포에서 불가능한 경우가 아니라면, Teleport 프록시 서비스와 리버스 터널 시스템을 통해 에이전트를 조인하는 것을 권장합니다.

에이전트에서 인프라 리소스로#

Teleport Agent는 인프라의 리소스로/에서 사용자 트래픽을 라우팅합니다. 에이전트는 대상 리소스에서 사용 가능한 기법(주로 공개 키 암호화의 한 형태)을 사용하여 인프라 리소스에 인증합니다. 아래는 예시의 (전체가 아닌) 일부 목록입니다:

  • SSH 서버: Teleport 프록시 서비스는 Teleport Auth 서비스가 서명한 인증서를 제시하며, 대상 호스트에서 실행 중인 Teleport SSH 서비스 인스턴스가 이를 검증합니다.
  • 쿠버네티스 클러스터: Teleport 쿠버네티스 서비스가 대상 클러스터에서 파드로 실행되는 경우, 서비스는 해당 파드의 서비스 계정 자격 증명을 사용해 인증합니다. 쿠버네티스 서비스는 서비스 계정 자격 증명이 포함된 kubeconfig를 사용하거나, AWS 자격 증명을 사용하여 Amazon Elastic Kubernetes Service 클러스터에 인증할 수도 있습니다.
  • 데이터베이스: 자체 호스팅 데이터베이스의 경우, 관리자는 데이터베이스 인스턴스에 상호(mutual) TLS 자격 증명을 배포해야 합니다. 클라우드 제공업체가 관리하는 리소스의 경우, Teleport는 클라우드 제공업체가 제공하는 IAM(identity and access management) 솔루션을 활용합니다.
  • Windows 데스크톱: Teleport 데스크톱 서비스는 스마트 카드를 사용하여 RDP를 통해 Windows 데스크톱에 인증합니다.
  • 애플리케이션: Teleport 애플리케이션 서비스는 선택적으로 Teleport가 서명한 JSON 웹 토큰을 HTTP 요청 헤더에 추가하여 HTTP 요청과 TCP 스트림을 대상 애플리케이션으로 포워딩합니다. Teleport가 서명한 JWT를 인증하는 것은 대상 애플리케이션의 몫입니다.

에이전트가 인프라 리소스에 인증하는 데 사용하는 메커니즘에 대해 자세히 알아보려면, Teleport 클러스터에 해당 리소스를 등록하는 가이드를 읽어보세요:

클라이언트에서 에이전트로#

클라이언트 도구는 Teleport 인증 기관이 서명한 인증서를 제시하여 Teleport Agent에 인증하며, Teleport 프록시 서비스와 에이전트 간에 설정된 SSH 리버스 터널을 통해 에이전트로 트래픽을 포워딩합니다. 클라이언트는 인증서를 가져온 다음, 에이전트를 통해 인프라 리소스에 연결해야 합니다.

Teleport 클라이언트를 위한 자격 증명#

사용자가 tsh login 명령으로 클러스터에 로그인하면, Teleport Auth 서비스는 user 인증 기관을 사용하여 인증서에 서명합니다. 이 과정이 어떻게 동작하는지 자세히 알아보려면 사용자 인증서 발급을 참고하세요. 사용자가 Teleport Web UI를 통해 인증하는 경우, 브라우저는 세션 쿠키를 가져오며, 이는 프록시 서비스가 해당 사용자를 대신하여 저장하는 사용자 인증서에 대응합니다.

대부분의 경우 Teleport 사용자는 Teleport로 보호되는 리소스에 접근하기 위해 또 다른 사용자 인증서를 가져와야 합니다. 이 인증서는 사용자가 애플리케이션이나 데이터베이스와 같은 특정 리소스에 접근하도록 인가합니다. 다음 표는 리소스 종류별로 사용자가 이 인증서를 얻는 방법을 나타냅니다:

리소스 종류 사용자가 인증서를 얻는 방법
데이터베이스 사용자는 tsh db login으로 데이터베이스에 연결하기 전에 클라이언트 인증서를 가져올 수 있습니다. tsh db connecttsh proxy db 명령도 인증서를 가져옵니다. 사용자가 데이터베이스에 연결할 때 Teleport 데이터베이스 서비스가 인증서를 검증합니다.
쿠버네티스 클러스터 사용자는 tsh kube login을 실행하며, 이는 로컬 kubeconfig를 업데이트하여 Teleport 사용자 CA가 서명한 인증서를 포함하도록 합니다. 이후 사용자는 Teleport로 보호되는 쿠버네티스 클러스터에 대해 kubectl 명령을 실행할 수 있습니다.
서버 tsh login을 실행한 후, 사용자는 서버에 대한 인가 정보가 포함된 인증서를 받습니다. 사용자가 Teleport로 보호되는 서버에 인증할 때 SSH 서비스가 인증서를 확인합니다.
웹 애플리케이션 사용자는 Teleport Web UI에 인증한 다음 Teleport로 보호되는 애플리케이션을 방문합니다. Teleport 프록시 서비스는 애플리케이션이 검증할 수 있는 Teleport 서명 JSON 웹 토큰과 함께 트래픽을 애플리케이션으로 포워딩합니다. HTTP API 애플리케이션, TCP 애플리케이션, 클라우드 제공업체 API의 경우 사용자는 tsh apps login을 실행하여 인증서를 가져옵니다.
Windows 데스크톱 사용자는 Teleport Web UI에 인증합니다. Web UI는 Teleport 프록시 서비스와 WebSocket 세션을 시작하며, 프록시 서비스는 선택적 리버스 SSH 터널을 통해 mTLS로 트래픽을 Teleport 데스크톱 서비스로 포워딩합니다. 데스크톱 서비스는 RDP 트래픽을 원하는 RDP 서버로 포워딩합니다.

대부분의 경우 사용자는 Teleport 프록시 서비스로의 연결을 통해 Auth 서비스로부터 인증서를 받습니다. Auth 서비스와 프록시 서비스는 상호 TLS를 사용하여 서로 연결합니다.

Teleport Connect는 그래픽 클라이언트를 위해 사용자 인증서와 kubeconfig를 관리하는 tsh 데몬인 tshd를 실행합니다.

에이전트를 통해 인프라 리소스에 연결하기#

Teleport는 에이전트를 통해 인프라 리소스에 접근할 수 있는 여러 클라이언트 도구를 제공합니다:

클라이언트 자격 증명을 가져온 후, 이러한 도구들은 Teleport 프록시 서비스에 인증되어 프록시 서비스를 통해 Teleport Agent로 트래픽을 전송할 수 있습니다. 클라이언트가 사용하는 프로토콜은 업스트림 리소스에 따라 다릅니다. 클라이언트 도구가 Teleport 프록시 서비스와 프로토콜 협상을 수행하는 방법에 대해서는 TLS 라우팅을 참고하세요.

사용자가 연결하려는 업스트림 인프라 리소스에 따라, tsh 클라이언트 도구는 하나 이상의 로컬 프록시 서버를 구동할 수 있습니다. 이들은 Teleport 프록시 서비스에 인증한 다음, psql, kubectl과 같은 로컬 클라이언트 도구로부터 트래픽을 수락하는 리스너를 생성합니다. 이후 사용자는 마치 원격 리소스에 연결하는 것처럼 클라이언트 도구로 로컬 프록시에 연결할 수 있습니다.

사용 가능한 로컬 프록시

다음 표는 tsh CLI를 통해 사용 가능한 로컬 프록시를 요약한 것입니다:

tsh 명령 업스트림 인프라 리소스
tsh proxy app HTTP 및 TCP 애플리케이션
tsh proxy aws AWS SDK 애플리케이션
tsh proxy azure Azure SDK 애플리케이션
tsh proxy gcloud Google Cloud SDK 애플리케이션
tsh proxy ssh OpenSSH 클라이언트 트래픽
tsh proxy db 네이티브 데이터베이스 클라이언트
tsh proxy kube L7 로드 밸런서 뒤에 있는 쿠버네티스 클러스터

리소스에 연결하는 tsh 명령은 종종 tsh proxy 명령과 동일한 로컬 프록시를 구동합니다. 예를 들어, 데이터베이스에 따라 tsh db connect는 데이터베이스 클라이언트를 사용해 트래픽을 전송하기 전에 로컬 프록시를 시작합니다.

감사 이벤트 제출#

Teleport Agent는 Teleport 프록시 서비스를 통해 Teleport Auth 서비스에 연결하고, 사용자 세션의 라이프사이클 중 다양한 시점(사용자가 로그인할 때, 리소스에 연결할 때, 리소스와 상호 작용할 때, 로그아웃할 때 등)에 감사 이벤트를 제출합니다. 에이전트는 인프라 리소스로 포워딩하는 와이어 프로토콜 메시지를 해석하여 이벤트를 감지합니다.

Teleport 감사 이벤트에 대해 자세히 알아보려면 감사 이벤트 참조를 확인하세요.

추가 자료#

Teleport Agent 아키텍처

Teleport v18.9
원문 보기
요약

Teleport Agent는 인프라의 리소스로/에서 트래픽을 라우팅합니다. Teleport Agent는 teleport 바이너리의 실행 인스턴스이며, 베어메탈, Linux VM, Docker 컨테이너, 쿠버네티스 클러스터의 파드 등 모든 Linux 플랫폼에서 실행할 수 있습니다.

Teleport Agent는 인프라의 리소스로/에서 트래픽을 라우팅합니다. 이 가이드에서는 Teleport가 이 경로를 통해 트래픽을 안전하게 관리할 수 있도록 하는 아키텍처를 설명합니다.

Teleport Agent는 teleport 바이너리의 실행 인스턴스이며, 베어메탈, Linux VM, Docker 컨테이너, 쿠버네티스 클러스터의 파드 등 모든 Linux 플랫폼에서 실행할 수 있습니다. 관리형 Teleport Enterprise 계정을 포함하여 에이전트를 배포하고 관리하는 것은 Teleport 관리자의 몫입니다.

하나의 에이전트는 여러 서비스를 실행할 수 있으며, 각 서비스는 여러 대상 리소스에 연결할 수 있습니다. 예를 들어 Linux VM에서 실행되는 단일 teleport 프로세스는 Teleport SSH 서비스와 Teleport 쿠버네티스 서비스를 모두 실행할 수 있으며, 각각 여러 터미널 세션과 쿠버네티스 클러스터에 연결할 수 있습니다.

서비스#

에이전트는 하나 이상의 서비스를 실행할 수 있습니다. 다음은 사용 가능한 에이전트 서비스 목록입니다:

서비스 프록시하는 트래픽
SSH 서비스 서비스가 실행되는 호스트로의 SSH 트래픽.
Teleport 쿠버네티스 서비스 쿠버네티스 API 서버로/에서의 HTTPS 트래픽.
Teleport 데이터베이스 서비스 Postgres, MySQL과 같은 데이터베이스 네이티브 와이어 프로토콜, DynamoDB와 같은 HTTP 기반 데이터베이스 프로토콜.
Teleport 애플리케이션 서비스 내부 웹 애플리케이션을 위한 HTTPS 및 TCP 포워딩, 선택적으로 JSON 웹 토큰 사용 가능. 클라우드 제공업체 API를 위한 서명된 HTTPS 메시지.
Teleport 데스크톱 서비스 RDP 서버로/에서의 원격 데스크톱 프로토콜(Remote Desktop Protocol) 트래픽.

에이전트는 Teleport Discovery 서비스도 실행할 수 있습니다. Discovery 서비스는 서비스 디스커버리 엔드포인트를 쿼리하여 인프라의 리소스 목록을 조회하고, Auth 서비스 백엔드에 동적 구성을 생성하여 Teleport 클러스터가 이러한 리소스로 트래픽을 라우팅하도록 구성합니다. 위에 나열된 에이전트 서비스는 이후 Discovery 서비스에 의해 등록된 리소스를 프록시할 수 있습니다.

구성 요소#

Teleport Agent 배포의 구성 요소

관리자가 리소스를 등록한 Teleport 클러스터에는 다음 구성 요소가 포함됩니다:

  • Teleport 프록시 서비스: 인증 게이트웨이 역할을 수행하고, Web UI를 서비스하며, 클라이언트 연결을 수락하는 상태 비저장 서비스입니다. 관리형 Teleport Enterprise 계정에서는 이 서비스가 Teleport 계정 URL(예: example.teleport.sh)에서 접근 가능합니다.
  • Teleport Auth 서비스: 클러스터의 인증 기관(certificate authority) 역할을 하며, 사용자 인증/인가를 처리하고 단기 클라이언트 인증서를 발급합니다.
  • Teleport Agent: 에이전트는 인프라 리소스에 대한 인증을 수행하고, 사용자 트래픽을 해당 리소스로 라우팅하며, 프로토콜 파싱을 수행합니다.
  • Teleport 클라이언트 도구(tsh, Teleport Connect, Teleport Web UI): Teleport Agent와 Teleport 프록시 서비스를 통해 인프라의 리소스에 연결합니다.
  • 로컬 프록시: 경우에 따라 tsh는 Teleport에 인증하고 클라이언트 도구(예: 데이터베이스 클라이언트 및 AWS SDK 애플리케이션)로부터 트래픽을 포워딩하는 로컬 프록시 서버를 구동합니다.
  • 인프라 리소스: Teleport는 자체 호스팅 인프라뿐만 아니라 클라우드 제공업체가 관리하는 인프라에 대한 접근도 보호할 수 있습니다.

Teleport Agent에서 Teleport Auth 서비스로#

Teleport Auth 서비스는 에이전트가 처음 클러스터에 조인할 때 호스트 인증서를 발급하는 인증 기관을 실행합니다. 에이전트를 Teleport 클러스터에 조인하는 데 사용할 수 있는 방법에 대해서는 Teleport 클러스터에 서비스 조인하기를 읽어보세요.

Teleport 클러스터의 모든 에이전트는 주기적인 핑 메시지로 Auth 서비스에 자신의 상태를 계속 업데이트합니다. 클라이언트는 Auth 서비스 API 또는 CLI를 통해 클러스터 내 모든 에이전트 인스턴스 목록에 접근할 수 있습니다.

에이전트의 아이덴티티는 클러스터에 등록된 후 받는 SSH 호스트 인증서로 표현됩니다:

호스트 인증서

이 인증서에는 다음을 포함한 에이전트에 대한 정보가 포함되어 있습니다:

  • 에이전트에 고유하게 생성된 UUID인 호스트 ID.
  • 에이전트 호스트에서 hostname 명령의 반환 값으로 기본 설정되지만 구성할 수 있는 호스트 이름.
  • 클러스터 이름. 클라우드 호스팅 Teleport Enterprise 클러스터에서는 teleport.sh의 서브도메인입니다. 자체 호스팅 클러스터에서는 기본값이 Teleport Auth 서비스의 hostname이며, 사용자가 이를 구성할 수 있습니다.
  • 인증서 확장으로 인코딩된 에이전트의 역할. 예를 들어 app,db 역할은 에이전트가 애플리케이션 서비스와 데이터베이스 서비스를 실행하도록 인가합니다.
  • 인증서의 만료 시간.

Auth 서비스는 클러스터의 호스트 CA로 서명된 단기 X.509 인증서도 생성하며, 여기에는 클라이언트의 아이덴티티와 인프라 리소스에 대한 라우팅 정보가 인코딩됩니다.

Teleport Agent에서 Teleport 프록시 서비스로#

대부분의 경우 에이전트가 Teleport 클러스터에 조인할 때 프록시 서비스로의 SSH 리버스 터널을 설정합니다. 따라서 사용자는 에이전트나 에이전트가 연결된 리소스에 직접 연결할 필요가 없습니다. 에이전트가 클러스터의 프록시 서비스로 다이얼백(dial back)할 수 있는 한, 방화벽 뒤에 위치할 수 있습니다.

터널 모드

에이전트가 프록시 서비스로 리버스 SSH 터널을 설정하면, 프록시 서비스는 인증서를 기반으로 에이전트를 식별합니다. 이 인증서는 에이전트의 시스템 역할(예: node,app,kube)과 에이전트의 UUID를 인코딩합니다. Teleport 사용자로부터의 다이얼 요청이 프록시 서비스에 도달하면, 프록시 서비스는 대상 리소스의 주소를 사용해 적절한 에이전트를 찾은 다음, 해당 에이전트와 연결된 리버스 터널을 통해 사용자 연결을 프록시합니다.

리버스 터널 없이 에이전트에 연결하기

Teleport Auth 서비스를 통해 Teleport Agent를 클러스터에 조인하는 것도 가능합니다. 에이전트가 Teleport Auth 서비스를 통해 클러스터에 조인하면, Teleport 프록시 서비스는 리버스 터널을 생성하지 않고 에이전트에 직접 다이얼합니다. 이 모드는 다음 서비스를 지원합니다:

  • Teleport SSH 서비스
  • Teleport 데스크톱 서비스
  • Teleport 쿠버네티스 서비스
  • Teleport Discovery 서비스

다이렉트 모드에서는 SSH 서비스 인스턴스가 클라이언트 SSH 인증서만 수락하는 OpenSSH 서버처럼 동작합니다. 사용자는 Teleport 프록시 서비스를 점프 호스트로 사용하거나 직접 SSH 서버에 연결할 수 있습니다:

표준 모드

다이렉트 모드는 레거시 사용 사례를 위해 설계되었으며 자체 호스팅 Teleport 클러스터만 지원합니다. 자체 호스팅 Teleport 배포에서 불가능한 경우가 아니라면, Teleport 프록시 서비스와 리버스 터널 시스템을 통해 에이전트를 조인하는 것을 권장합니다.

에이전트에서 인프라 리소스로#

Teleport Agent는 인프라의 리소스로/에서 사용자 트래픽을 라우팅합니다. 에이전트는 대상 리소스에서 사용 가능한 기법(주로 공개 키 암호화의 한 형태)을 사용하여 인프라 리소스에 인증합니다. 아래는 예시의 (전체가 아닌) 일부 목록입니다:

  • SSH 서버: Teleport 프록시 서비스는 Teleport Auth 서비스가 서명한 인증서를 제시하며, 대상 호스트에서 실행 중인 Teleport SSH 서비스 인스턴스가 이를 검증합니다.
  • 쿠버네티스 클러스터: Teleport 쿠버네티스 서비스가 대상 클러스터에서 파드로 실행되는 경우, 서비스는 해당 파드의 서비스 계정 자격 증명을 사용해 인증합니다. 쿠버네티스 서비스는 서비스 계정 자격 증명이 포함된 kubeconfig를 사용하거나, AWS 자격 증명을 사용하여 Amazon Elastic Kubernetes Service 클러스터에 인증할 수도 있습니다.
  • 데이터베이스: 자체 호스팅 데이터베이스의 경우, 관리자는 데이터베이스 인스턴스에 상호(mutual) TLS 자격 증명을 배포해야 합니다. 클라우드 제공업체가 관리하는 리소스의 경우, Teleport는 클라우드 제공업체가 제공하는 IAM(identity and access management) 솔루션을 활용합니다.
  • Windows 데스크톱: Teleport 데스크톱 서비스는 스마트 카드를 사용하여 RDP를 통해 Windows 데스크톱에 인증합니다.
  • 애플리케이션: Teleport 애플리케이션 서비스는 선택적으로 Teleport가 서명한 JSON 웹 토큰을 HTTP 요청 헤더에 추가하여 HTTP 요청과 TCP 스트림을 대상 애플리케이션으로 포워딩합니다. Teleport가 서명한 JWT를 인증하는 것은 대상 애플리케이션의 몫입니다.

에이전트가 인프라 리소스에 인증하는 데 사용하는 메커니즘에 대해 자세히 알아보려면, Teleport 클러스터에 해당 리소스를 등록하는 가이드를 읽어보세요:

클라이언트에서 에이전트로#

클라이언트 도구는 Teleport 인증 기관이 서명한 인증서를 제시하여 Teleport Agent에 인증하며, Teleport 프록시 서비스와 에이전트 간에 설정된 SSH 리버스 터널을 통해 에이전트로 트래픽을 포워딩합니다. 클라이언트는 인증서를 가져온 다음, 에이전트를 통해 인프라 리소스에 연결해야 합니다.

Teleport 클라이언트를 위한 자격 증명#

사용자가 tsh login 명령으로 클러스터에 로그인하면, Teleport Auth 서비스는 user 인증 기관을 사용하여 인증서에 서명합니다. 이 과정이 어떻게 동작하는지 자세히 알아보려면 사용자 인증서 발급을 참고하세요. 사용자가 Teleport Web UI를 통해 인증하는 경우, 브라우저는 세션 쿠키를 가져오며, 이는 프록시 서비스가 해당 사용자를 대신하여 저장하는 사용자 인증서에 대응합니다.

대부분의 경우 Teleport 사용자는 Teleport로 보호되는 리소스에 접근하기 위해 또 다른 사용자 인증서를 가져와야 합니다. 이 인증서는 사용자가 애플리케이션이나 데이터베이스와 같은 특정 리소스에 접근하도록 인가합니다. 다음 표는 리소스 종류별로 사용자가 이 인증서를 얻는 방법을 나타냅니다:

리소스 종류 사용자가 인증서를 얻는 방법
데이터베이스 사용자는 tsh db login으로 데이터베이스에 연결하기 전에 클라이언트 인증서를 가져올 수 있습니다. tsh db connecttsh proxy db 명령도 인증서를 가져옵니다. 사용자가 데이터베이스에 연결할 때 Teleport 데이터베이스 서비스가 인증서를 검증합니다.
쿠버네티스 클러스터 사용자는 tsh kube login을 실행하며, 이는 로컬 kubeconfig를 업데이트하여 Teleport 사용자 CA가 서명한 인증서를 포함하도록 합니다. 이후 사용자는 Teleport로 보호되는 쿠버네티스 클러스터에 대해 kubectl 명령을 실행할 수 있습니다.
서버 tsh login을 실행한 후, 사용자는 서버에 대한 인가 정보가 포함된 인증서를 받습니다. 사용자가 Teleport로 보호되는 서버에 인증할 때 SSH 서비스가 인증서를 확인합니다.
웹 애플리케이션 사용자는 Teleport Web UI에 인증한 다음 Teleport로 보호되는 애플리케이션을 방문합니다. Teleport 프록시 서비스는 애플리케이션이 검증할 수 있는 Teleport 서명 JSON 웹 토큰과 함께 트래픽을 애플리케이션으로 포워딩합니다. HTTP API 애플리케이션, TCP 애플리케이션, 클라우드 제공업체 API의 경우 사용자는 tsh apps login을 실행하여 인증서를 가져옵니다.
Windows 데스크톱 사용자는 Teleport Web UI에 인증합니다. Web UI는 Teleport 프록시 서비스와 WebSocket 세션을 시작하며, 프록시 서비스는 선택적 리버스 SSH 터널을 통해 mTLS로 트래픽을 Teleport 데스크톱 서비스로 포워딩합니다. 데스크톱 서비스는 RDP 트래픽을 원하는 RDP 서버로 포워딩합니다.

대부분의 경우 사용자는 Teleport 프록시 서비스로의 연결을 통해 Auth 서비스로부터 인증서를 받습니다. Auth 서비스와 프록시 서비스는 상호 TLS를 사용하여 서로 연결합니다.

Teleport Connect는 그래픽 클라이언트를 위해 사용자 인증서와 kubeconfig를 관리하는 tsh 데몬인 tshd를 실행합니다.

에이전트를 통해 인프라 리소스에 연결하기#

Teleport는 에이전트를 통해 인프라 리소스에 접근할 수 있는 여러 클라이언트 도구를 제공합니다:

클라이언트 자격 증명을 가져온 후, 이러한 도구들은 Teleport 프록시 서비스에 인증되어 프록시 서비스를 통해 Teleport Agent로 트래픽을 전송할 수 있습니다. 클라이언트가 사용하는 프로토콜은 업스트림 리소스에 따라 다릅니다. 클라이언트 도구가 Teleport 프록시 서비스와 프로토콜 협상을 수행하는 방법에 대해서는 TLS 라우팅을 참고하세요.

사용자가 연결하려는 업스트림 인프라 리소스에 따라, tsh 클라이언트 도구는 하나 이상의 로컬 프록시 서버를 구동할 수 있습니다. 이들은 Teleport 프록시 서비스에 인증한 다음, psql, kubectl과 같은 로컬 클라이언트 도구로부터 트래픽을 수락하는 리스너를 생성합니다. 이후 사용자는 마치 원격 리소스에 연결하는 것처럼 클라이언트 도구로 로컬 프록시에 연결할 수 있습니다.

사용 가능한 로컬 프록시

다음 표는 tsh CLI를 통해 사용 가능한 로컬 프록시를 요약한 것입니다:

tsh 명령 업스트림 인프라 리소스
tsh proxy app HTTP 및 TCP 애플리케이션
tsh proxy aws AWS SDK 애플리케이션
tsh proxy azure Azure SDK 애플리케이션
tsh proxy gcloud Google Cloud SDK 애플리케이션
tsh proxy ssh OpenSSH 클라이언트 트래픽
tsh proxy db 네이티브 데이터베이스 클라이언트
tsh proxy kube L7 로드 밸런서 뒤에 있는 쿠버네티스 클러스터

리소스에 연결하는 tsh 명령은 종종 tsh proxy 명령과 동일한 로컬 프록시를 구동합니다. 예를 들어, 데이터베이스에 따라 tsh db connect는 데이터베이스 클라이언트를 사용해 트래픽을 전송하기 전에 로컬 프록시를 시작합니다.

감사 이벤트 제출#

Teleport Agent는 Teleport 프록시 서비스를 통해 Teleport Auth 서비스에 연결하고, 사용자 세션의 라이프사이클 중 다양한 시점(사용자가 로그인할 때, 리소스에 연결할 때, 리소스와 상호 작용할 때, 로그아웃할 때 등)에 감사 이벤트를 제출합니다. 에이전트는 인프라 리소스로 포워딩하는 와이어 프로토콜 메시지를 해석하여 이벤트를 감지합니다.

Teleport 감사 이벤트에 대해 자세히 알아보려면 감사 이벤트 참조를 확인하세요.

추가 자료#