Teleport Agent 아키텍처
Teleport Agent는 인프라의 리소스로/에서 트래픽을 라우팅합니다. Teleport Agent는 teleport 바이너리의 실행 인스턴스이며, 모든 Linux 플랫폼(예: 베어 메탈, Linux VM, Docker 컨테이너, Kubernetes 클러스터의 파드)에서 실행할 수 있습니다.
Teleport Agent는 인프라의 리소스로/에서 트래픽을 라우팅합니다. 이 가이드에서는 Teleport가 이 경로를 통해 트래픽을 안전하게 관리할 수 있도록 하는 아키텍처를 설명합니다.
Teleport Agent는 teleport 바이너리의 실행 인스턴스이며, 모든 Linux 플랫폼(예: 베어 메탈, Linux VM, Docker 컨테이너, Kubernetes 클러스터의 파드)에서 실행할 수 있습니다. 관리되는 Teleport Enterprise 계정을 포함하여 Agent를 배포하고 관리하는 것은 Teleport 관리자의 책임입니다.
단일 Agent는 여러 서비스를 실행할 수 있으며, 각 서비스는 여러 대상 리소스에 연결할 수 있습니다. 예를 들어, Linux VM에서 실행 중인 단일 teleport 프로세스는 Teleport SSH 서비스와 Teleport Kubernetes 서비스를 모두 실행할 수 있으며, 각각 여러 터미널 세션과 Kubernetes 클러스터에 연결할 수 있습니다.
서비스#
Agent는 하나 이상의 서비스를 실행할 수 있습니다. 다음과 같은 Agent 서비스를 사용할 수 있습니다:
| 서비스 | 프록시하는 트래픽 |
|---|---|
| SSH 서비스 | 서비스가 실행 중인 호스트로의 SSH 트래픽. |
| Teleport Kubernetes 서비스 | Kubernetes API 서버와의 HTTPS 트래픽. |
| Teleport Database 서비스 | Postgres, MySQL과 같은 데이터베이스 네이티브 와이어 프로토콜, DynamoDB와 같은 HTTP 기반 데이터베이스 프로토콜. |
| Teleport Application 서비스 | 내부 웹 애플리케이션을 위한 HTTPS 및 TCP 포워딩(선택적 JSON 웹 토큰 포함). 클라우드 공급자 API를 위한 서명된 HTTPS 메시지. |
| Teleport Desktop 서비스 | RDP 서버와의 Remote Desktop Protocol 트래픽. |
Agent는 Teleport Discovery 서비스도 실행할 수 있습니다. Discovery 서비스는 서비스 검색 엔드포인트를 쿼리하여 인프라의 리소스를 나열하고, Auth 서비스 백엔드에 동적 구성을 생성하여 이러한 리소스로 트래픽을 라우팅하도록 Teleport 클러스터를 구성합니다. 위에 나열된 Agent 서비스는 Discovery 서비스가 등록한 리소스를 프록시할 수 있습니다.
구성 요소#

관리자가 리소스를 등록한 Teleport 클러스터에는 다음 구성 요소가 포함됩니다:
- Teleport 프록시 서비스: 인증 게이트웨이 역할을 수행하고, Web UI를 제공하며, 클라이언트 연결을 수락하는 stateless 서비스입니다. 관리되는 Teleport Enterprise 계정에서 이 서비스는 Teleport 계정 URL(예:
example.teleport.sh)에서 접근할 수 있습니다. - Teleport Auth 서비스: 클러스터의 인증 기관 역할을 하며, 사용자 인증/권한 부여를 처리하고 단명 클라이언트 인증서를 발급합니다.
- Teleport Agent: Agent는 인프라 리소스에 대해 인증을 수행하고, 사용자 트래픽을 해당 리소스로 라우팅하며, 프로토콜 파싱을 수행합니다.
- Teleport 클라이언트 도구(
tsh, Teleport Connect 및 Teleport Web UI): Teleport Agent와 Teleport 프록시 서비스를 통해 인프라의 리소스에 연결합니다. - 로컬 프록시: 일부 경우,
tsh는 Teleport에 인증하고 클라이언트 도구(예: 데이터베이스 클라이언트 및 AWS SDK 애플리케이션)의 트래픽을 포워딩하는 로컬 프록시 서버를 시작합니다. - 인프라 리소스: Teleport는 자체 호스팅 인프라뿐만 아니라 클라우드 공급자가 관리하는 인프라에 대한 접근을 보호할 수 있습니다.
Teleport Agent와 Teleport Auth 서비스#
Teleport Auth 서비스는 Agent가 클러스터에 처음 참가할 때 호스트 인증서를 발급하는 인증 기관을 운영합니다. Agent를 Teleport 클러스터에 참가시키는 데 사용할 수 있는 방법에 대해서는 클러스터에 서비스 참가를 참조하세요.
Teleport 클러스터의 모든 Agent는 주기적인 핑 메시지를 통해 Auth 서비스에 상태를 업데이트합니다. 클라이언트는 Auth 서비스 API 또는 CLI를 통해 클러스터의 모든 Agent 인스턴스 목록에 접근할 수 있습니다.
Agent의 ID는 클러스터 내에 등록한 후 수신하는 SSH 호스트 인증서로 표현됩니다:
이 인증서에는 다음을 포함한 Agent에 대한 정보가 포함됩니다:
- 호스트 ID, Agent에 고유한 생성된 UUID.
- 호스트 이름, 기본적으로 Agent 호스트에서
hostname명령의 반환 값이지만 구성할 수 있습니다. - 클러스터 이름. 클라우드 호스팅 Teleport Enterprise 클러스터에서는
teleport.sh의 서브도메인입니다. 자체 호스팅 클러스터에서 기본값은 Teleport Auth 서비스의hostname이며, 사용자가 구성할 수 있습니다. - Agent의 역할이 인증서 확장으로 인코딩됩니다. 예를 들어,
app,db역할은 Agent가 Application 서비스와 Database 서비스를 실행할 수 있도록 권한을 부여합니다. - 인증서의 만료 시간.
Auth 서비스는 클러스터의 호스트 CA에 서명된 단명 X.509 인증서도 생성하며, 클라이언트의 ID와 인프라 리소스에 대한 라우팅 정보가 인코딩됩니다.
Teleport Agent와 Teleport 프록시 서비스#
대부분의 경우, Agent가 Teleport 클러스터에 참가할 때 프록시 서비스로 SSH 역방향 터널을 설정합니다. 따라서 사용자는 Agent나 연결된 리소스에 직접 연결할 필요가 없습니다. Agent가 클러스터의 프록시 서비스에 다시 연결할 수 있는 한, 방화벽 뒤에 위치할 수 있습니다.

Agent가 프록시 서비스로 역방향 SSH 터널을 설정하면, 프록시 서비스는 인증서를 기반으로 Agent를 식별합니다. 인증서는 Agent의 시스템 역할(예: node,app,kube)과 Agent의 UUID를 인코딩합니다. Teleport 사용자의 다이얼 요청이 프록시 서비스에 도달하면, 프록시 서비스는 대상 리소스의 주소를 사용하여 적절한 Agent를 찾은 다음, Agent와 연관된 역방향 터널을 통해 사용자 연결을 프록시합니다.
역방향 터널 없이 Agent에 연결하기
Teleport Auth 서비스를 통해 Teleport Agent를 클러스터에 참가시킬 수 있습니다. Agent가 Teleport Auth 서비스를 통해 클러스터에 참가하면, Teleport 프록시 서비스는 역방향 터널을 생성하지 않고 Agent에 직접 다이얼합니다. 이 모드는 다음 서비스를 지원합니다:
- Teleport SSH 서비스
- Teleport Desktop 서비스
- Teleport Kubernetes 서비스
- Teleport Discovery 서비스
직접 모드에서 SSH 서비스 인스턴스는 클라이언트 SSH 인증서만 허용하는 OpenSSH 서버처럼 작동합니다. 사용자는 Teleport 프록시 서비스를 점프 호스트로 사용하거나 직접 SSH 서버에 연결할 수 있습니다:

직접 모드는 레거시 사용 사례를 위해 설계되었으며 자체 호스팅 Teleport 클러스터만 지원합니다. 자체 호스팅 Teleport 배포에서 불가능한 경우가 아니라면, Teleport 프록시 서비스와 역방향 터널 시스템을 통해 Agent를 참가시키는 것을 권장합니다.
Agent에서 인프라 리소스로#
Teleport Agent는 사용자 트래픽을 인프라의 리소스로/에서 라우팅합니다. Agent는 대상 리소스에 사용 가능한 기법을 사용하여 인프라 리소스에 인증하며, 종종 공개 키 암호화 형식을 사용합니다. 비포괄적인 예시 목록은 다음과 같습니다:
- SSH 서버: Teleport 프록시 서비스는 Teleport Auth 서비스가 서명한 인증서를 제시하며, 대상 호스트에서 실행 중인 Teleport SSH 서비스 인스턴스가 이를 검증합니다.
- Kubernetes 클러스터: Teleport Kubernetes 서비스가 대상 클러스터의 파드로 실행되는 경우, 서비스는 파드의 서비스 계정 자격 증명을 사용하여 인증합니다. Kubernetes 서비스는 서비스 계정 자격 증명이 포함된 kubeconfig를 사용하거나 AWS 자격 증명을 사용하여 Amazon Elastic Kubernetes Service 클러스터에 인증할 수도 있습니다.
- 데이터베이스: 자체 호스팅 데이터베이스의 경우, 관리자는 데이터베이스 인스턴스에 상호 TLS 자격 증명을 배포해야 합니다. 클라우드 공급자가 관리하는 리소스의 경우, Teleport는 클라우드 공급자를 통해 사용 가능한 IAM(Identity and Access Management) 솔루션을 활용합니다.
- Windows 데스크탑: Teleport Desktop 서비스는 RDP를 통해 Windows 데스크탑에 인증하기 위해 스마트 카드를 사용합니다.
- 애플리케이션: Teleport Application 서비스는 HTTP 요청과 TCP 스트림을 대상 애플리케이션으로 포워딩하며, 선택적으로 HTTP 요청 헤더에 Teleport 서명 JSON 웹 토큰을 추가합니다. 대상 애플리케이션이 Teleport 서명 JWT를 인증하는 것은 대상 애플리케이션의 책임입니다.
Agent가 인프라 리소스에 인증하는 메커니즘에 대해 자세히 알아보려면 Teleport 클러스터에 해당 리소스를 등록하는 가이드를 참조하세요:
클라이언트에서 Agent로#
클라이언트 도구는 Teleport 인증 기관이 서명한 인증서를 제시하여 Teleport Agent에 인증하고, Teleport 프록시 서비스와 Agent 사이에 설정된 SSH 역방향 터널을 통해 트래픽을 Agent로 포워딩합니다. 클라이언트는 인증서를 가져온 다음, Agent를 통해 인프라 리소스에 연결해야 합니다.
Teleport 클라이언트의 자격 증명#
사용자가 tsh login 명령으로 클러스터에 로그인하면, Teleport Auth 서비스는 user 인증 기관을 사용하여 인증서에 서명합니다. 작동 방식에 대한 자세한 내용은 사용자 인증서 발급을 참조하세요. 사용자가 Teleport Web UI를 통해 인증하면, 브라우저는 세션 쿠키를 가져오며, 이는 프록시 서비스가 해당 사용자를 대신하여 저장한 사용자 인증서에 해당합니다.
대부분의 경우, Teleport 사용자는 Teleport로 보호된 리소스에 접근하기 위해 다른 사용자 인증서를 가져와야 합니다. 인증서는 사용자가 애플리케이션이나 데이터베이스와 같은 특정 리소스에 접근할 수 있도록 권한을 부여합니다. 다음 표는 사용자가 다양한 종류의 리소스에 대해 이 인증서를 얻는 방법을 나타냅니다:
| 리소스 종류 | 사용자가 인증서를 얻는 방법 |
|---|---|
| 데이터베이스 | 사용자는 tsh db login을 사용하여 데이터베이스에 연결하기 전에 클라이언트 인증서를 가져올 수 있습니다. tsh db connect 및 tsh proxy db 명령도 인증서를 가져옵니다. Teleport Database 서비스는 사용자가 데이터베이스에 연결할 때 인증서를 검증합니다. |
| Kubernetes 클러스터 | 사용자는 tsh kube login을 실행하여 로컬 kubeconfig를 Teleport 사용자 CA가 서명한 인증서를 포함하도록 업데이트합니다. 그런 다음 사용자는 Teleport로 보호된 Kubernetes 클러스터에 대해 kubectl 명령을 실행할 수 있습니다. |
| 서버 | tsh login 실행 후, 사용자는 서버에 대한 권한 부여 정보가 포함된 인증서를 받습니다. SSH 서비스는 사용자가 Teleport로 보호된 서버에 인증할 때 인증서를 확인합니다. |
| 웹 애플리케이션 | 사용자는 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 Desktop 서비스로 트래픽을 포워딩합니다. Desktop 서비스는 원하는 RDP 서버로 RDP 트래픽을 포워딩합니다. |
대부분의 경우, 사용자는 Teleport 프록시 서비스에 대한 연결을 통해 Auth 서비스에서 인증서를 받습니다. Auth 서비스와 프록시 서비스는 상호 TLS를 사용하여 서로 연결합니다.
Teleport Connect는 그래픽 클라이언트를 위한 사용자 인증서와 kubeconfig를 관리하는 tsh 데몬인 tshd를 실행합니다.
Agent를 통해 인프라 리소스에 연결#
Teleport는 Agent를 통해 인프라 리소스에 접근하기 위한 여러 클라이언트 도구를 제공합니다:
클라이언트 자격 증명을 가져온 후, 이 도구들은 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 로드 밸런서 뒤의 Kubernetes 클러스터 |
리소스에 연결하는 tsh 명령은 종종 tsh proxy 명령과 동일한 로컬 프록시를 시작합니다. 예를 들어, 데이터베이스에 따라 tsh db connect는 로컬 프록시를 시작한 다음 데이터베이스 클라이언트를 사용하여 트래픽을 전송합니다.
감사 이벤트 제출#
Teleport Agent는 Teleport 프록시 서비스를 통해 Teleport Auth 서비스에 연결하며, 사용자가 로그인, 리소스 연결, 리소스 상호작용 및 로그아웃하는 등 사용자 세션의 생명주기 내 다양한 시점에 감사 이벤트를 제출합니다. Agent는 이벤트를 감지하기 위해 인프라 리소스로 포워딩하는 와이어 프로토콜 메시지를 해석합니다.
Teleport 감사 이벤트에 대해 자세히 알아보려면 감사 이벤트 레퍼런스를 참조하세요.
추가 읽기#
- Agent 배포 지침은 Teleport Agent 가이드를 참조하세요.
