Teleport guide

Teleport 가이드

서버 SSH(Secure Shell), Kubernetes, 데이터베이스, 웹 앱 접근을 하나의 아이덴티티 계층으로 통제하는 방법을 기본 개념, 설치와 구축, Kubernetes 접근 제어 데모 순서로 안내합니다.

3종구성 요소: Auth, Proxy, Agent
1개외부에 여는 포트: 443/TCP
9편 · 총 16:06데모 영상
v18기준 버전: Teleport Enterprise
처음 도입을 검토하는 팀은 2장과 3장을 먼저 보십시오 Kubernetes 접근 통제가 목적인 팀은 4장과 6장을 먼저 보십시오
Concepts

구성 요소 3종과 접근 흐름

Teleport는 인프라 앞에 서는 아이덴티티 계층입니다. 모든 접근 주체에게 수명이 짧은 인증서를 발급하고, 프로토콜을 프록시하며, 그 행위를 구조화된 감사 이벤트로 남깁니다.

Control plane

Auth Service

인증 기관 CA(Certificate Authority)로서 호스트와 사용자 인증서를 서명합니다. 역할, 사용자, 등록된 리소스 같은 클러스터 설정을 보관하고 감사 이벤트와 세션 기록을 수집합니다. 사설망에 두는 것이 기본 구성입니다.

Control plane

Proxy Service

사용자의 단일 진입점입니다. Web UI(웹 관리 화면)를 제공하고 SSH, Kubernetes, 데이터베이스, 웹 앱 트래픽을 중계하며 Agent가 맺은 리버스 터널의 종단 역할을 합니다. 공중망에서 주소를 지정할 수 있어야 하는 구성 요소는 Proxy Service 하나입니다.

Data plane

Agent (Service)

teleport 바이너리 인스턴스이며 물리 서버, 가상 머신, 컨테이너, Kubernetes Pod 어디에서나 동작합니다. SSH, Kubernetes, Database, Application, Desktop 5종 서비스로 나뉘고, 리소스를 자동으로 찾아 등록하는 Discovery Service가 더해집니다.

접근 흐름 5단계

01

SSO(Single Sign-On) 로그인

사내 IdP(Identity Provider)에서 OIDC(OpenID Connect) 또는 SAML(Security Assertion Markup Language) 인증을 받습니다. Teleport에 사용자 목록을 따로 만들지 않습니다.

02

단기 인증서 발급

Auth Service가 수명이 짧은 TLS(Transport Layer Security)·SSH 인증서를 발급합니다. 사용자의 역할이 이 인증서 안에 인코딩됩니다.

03

Proxy 경유 접속

사용자는 Proxy Service에만 연결합니다. Proxy는 Agent가 미리 맺어 둔 리버스 터널로 요청을 실제 리소스에 전달합니다.

04

역할로 범위 결정

Agent가 인증서에 실린 역할을 확인해 어느 리소스까지 닿을 수 있는지 판정합니다. 접근 시점마다 컨트롤 플레인을 다시 호출하지 않습니다.

05

감사 기록

세션과 요청이 JSON(JavaScript Object Notation) 형식의 감사 이벤트로 남습니다. 프로토콜에 따라 세션 기록이 함께 저장되며 외부 로그 플랫폼으로 내보낼 수 있습니다.

보호 대상 리소스

리소스사용자가 쓰는 도구남는 기록
서버 (SSH)tsh ssh, 표준 SSH 클라이언트터미널 출력 전체 기록과 재생
Kuberneteskubectl, tsh kubekubectl exec 세션의 터미널 출력 기록과 재생
Databasepsql 등 표준 데이터베이스 클라이언트쿼리와 데이터베이스 감사 이벤트
Application (웹 앱)브라우저 (HTTPS)요청 단위 감사 이벤트 (app.session.request)
Windows Desktop브라우저 기반 원격 데스크톱화면과 마우스 입력 기록
Machine & Workload Identitytbot이 발급받는 단기 자격 증명발급과 갱신 감사 이벤트

Teleport가 아닌 것

Not a vault

비밀번호 금고가 아닙니다

대상 시스템의 비밀번호를 보관했다가 대신 입력하는 방식이 아닙니다. 접속할 때마다 수명이 짧은 인증서를 새로 발급하므로, 교체하거나 보관해야 할 상시 자격 증명이 대상 시스템에 남지 않습니다.

Not a firewall

네트워크 방화벽을 대체하지 않습니다

접근 경로를 하나로 모으고 그 경로에 신원과 권한을 붙이는 계층입니다. 망 분리, 방화벽 정책, 네트워크 구간 설계는 그대로 유지합니다.

Not a new client

별도 접속 도구를 강제하지 않습니다

kubectl, psql, 브라우저 같은 기존 도구를 그대로 씁니다. 인증과 경로만 Teleport를 지나며, 사용자는 자격 증명 파일을 따로 받지 않습니다.

근거: Teleport 공식 Architecture 문서와 Agent Architecture 문서, 그리고 인포그랩 내부 위키의 Teleport 아키텍처 정리본입니다.

Deployment

배포 형태와 구축 순서

배포 형태를 먼저 정한 뒤 네트워크, 이름과 인증서, 사양 순서로 확정하면 구축 과정에서 되돌아갈 일이 줄어듭니다.

Option 1

단일 노드 셀프호스팅

Auth Service와 Proxy Service를 한 프로세스로 올립니다. 기능 검증과 PoC(Proof of Concept)에 적합합니다. 클러스터 상태와 감사 기록, 세션 기록을 로컬 디스크에 두므로 디스크 용량을 넉넉히 잡습니다.

Option 2

Kubernetes Helm 차트

teleport-cluster 차트로 컨트롤 플레인을, teleport-kube-agent 차트로 에이전트를 배포합니다. 규모가 커지는 셀프호스팅 구성에서 공식 문서가 권장하는 방식입니다.

Option 3

Teleport Cloud

Auth Service와 Proxy Service를 Teleport가 운영합니다. 고객은 에이전트만 설치하며 컨트롤 플레인의 이중화, 백업, 업그레이드를 직접 다루지 않습니다.

네트워크 요건

TLS routing 기본 모드 기준. 방화벽 신청서에 그대로 옮겨 쓸 수 있는 형태입니다.
#출발목적지포트방향비고
1사용자 PC와 브라우저Proxy Service443/TCP인바운드Web UI, tsh 로그인, kubectl, 웹 앱 접근이 모두 이 한 포트를 씁니다
2Agent (Pod 또는 가상 머신)Proxy Service443/TCP아웃바운드리버스 터널입니다. 대상 클러스터와 서버 쪽 인바운드 개방은 필요하지 않습니다
3Teleport 노드사내 IdP443/TCP아웃바운드OIDC 디스커버리와 토큰 교환 경로입니다
4Proxy ServiceAuth Service3025/TCP내부 전용Auth gRPC API(Application Programming Interface)입니다. 외부에 노출하지 않습니다
5Proxy ServiceProxy Service3021/TCP내부 전용Proxy Peering을 켠 경우에만 씁니다. 로드밸런서를 경유하면 안 됩니다

TLS routing은 기본값이며 이 모드에서 Proxy Service는 Web UI, HTTPS, Kubernetes, SSH, 모든 데이터베이스를 443 한 포트로 처리합니다. TLS routing을 끄면 3023(SSH 클라이언트), 3024(리버스 터널), 3080(Web)으로 포트가 갈립니다. 전체 표는 Networking Reference에 있습니다.

DNS(Domain Name System)와 인증서

DNS

기본 도메인과 와일드카드

Proxy Service 주소로 쓸 이름 하나가 필요합니다. 웹 앱 접근(Application Access)을 쓰면 와일드카드 이름 *.teleport.example.com이 추가로 필요합니다. Teleport가 앱마다 <앱 이름>.<도메인> 주소를 부여하기 때문이며, 와일드카드를 쓰면 앱 수와 상관없이 DNS 레코드 하나와 인증서 한 장으로 처리됩니다. 와일드카드를 쓸 수 없으면 앱마다 public_addr로 개별 레코드를 지정하는 대안이 있습니다.

TLS

인증서는 Proxy가 보유합니다

위 두 이름을 SAN(Subject Alternative Name)에 포함한 인증서 한 장을 준비합니다. 앞단에 로드밸런서를 두는 경우 TLS를 종단하지 않고 그대로 통과시키는 L4(Layer 4) 구성이어야 합니다. 앞단이 TLS를 종단하면 Kubernetes 접근의 SNI(Server Name Indication) 라우팅과 프로토콜 분기가 깨집니다. 고가용성 구성에서는 Teleport 내장 자동 발급 기능을 쓰지 않고 별도 발급 경로를 둡니다.

사양 참고

구축 6단계 체크리스트

01

Teleport 노드 설치와 라이선스 배치

패키지를 설치하고 Enterprise 라이선스 파일을 /var/lib/teleport/license.pem에 둡니다. 폐쇄망이면 패키지, Helm 차트, 컨테이너 이미지를 오프라인 번들로 준비합니다. 라이선스 산정 기준은 문의해 주십시오.

02

DNS와 인증서

기본 도메인과, 웹 앱 접근을 쓸 경우 와일드카드 이름을 준비합니다. 두 이름을 SAN에 포함한 인증서 한 장을 발급하고 Proxy Service에 배치합니다. 사내 CA로 발급하면 사용자 PC에 루트 인증서 신뢰 등록이 필요합니다.

03

SSO 커넥터 구성

kind: oidc 또는 kind: saml 커넥터를 만들고 그룹을 역할에 연결합니다. OIDC 리다이렉트 주소는 https://<Proxy 주소>/v1/webapi/oidc/callback 형태입니다. OIDC와 SAML 기반 SSO는 Teleport Enterprise 기능입니다.

04

Agent 등록

대상 클러스터와 서버에 에이전트를 배포하고 Proxy Service로 아웃바운드 리버스 터널을 맺습니다. 대상 쪽 인바운드 규칙은 필요하지 않습니다. 같은 클러스터에 에이전트를 둘 이상 두면 Proxy가 그 사이에서 트래픽을 분산합니다.

05

역할, Access Request, 리뷰어

역할을 3종에서 5종 정도로 설계하고 라벨 체계를 정합니다. 상시 권한과 임시 권한을 나눈 뒤 Access Request의 승인자 수와 유효 시간을 역할마다 지정합니다. 승인 알림은 기존 업무 도구로 보낼 수 있습니다.

06

감사 로그와 세션 기록 저장소

감사 이벤트 백엔드와 세션 기록 오브젝트 스토리지를 각각 지정합니다. 두 저장소는 클러스터 상태 저장소와 별개입니다. 보존 기간과 위변조 방지 설계는 저장소 쪽에서 함께 정합니다.

근거: 인포그랩 내부 위키의 네트워크·포트, 고가용성, SSO 정리본과 Teleport 공식 Networking Reference, Scaling, Self-hosted High Availability 문서입니다.

Kubernetes

Teleport 역할과 Kubernetes RBAC을 함께 쓰는 방법

Kubernetes 접근 통제가 목적이라면 확인할 지점은 다섯 가지입니다. RBAC(Role Based Access Control)은 역할 기반 접근 제어를 뜻합니다. 신원 연결, 범위 지정, 증적, 임시 권한, 그리고 두 층의 권한이 겹칠 때의 규칙입니다.

Identity

SSO 그룹과 역할 연결

OIDC groups 클레임을 Teleport 역할로 연결해 조직 기준 권한을 그대로 유지합니다. 사용자 목록을 Teleport에 따로 만들지 않으므로 입사와 퇴사 처리가 IdP 한 곳에서 끝납니다.

Access

Kubernetes 중심 제어

클러스터, 네임스페이스, Pod 접근을 역할과 라벨로 나눕니다. kubernetes_labels로 어느 클러스터인지 정하고, kubernetes_resources로 종류, 네임스페이스, 이름, 동사 범위를 정합니다.

Evidence

감사와 세션 증적

JSON 감사 이벤트와 kubectl exec 세션 기록이 남습니다. 세션은 tsh play와 Web UI에서 재생하고, 감사 이벤트는 외부 로그 플랫폼으로 내보내 보관할 수 있습니다.

Governance

JIT(Just In Time) 승인

상시 권한 대신 필요한 때만 권한을 올립니다. Access Request로 역할이나 개별 리소스를 요청하고, 승인자 수와 유효 시간을 요청 종류마다 정합니다. 두 명 승인도 설정할 수 있습니다.

Layering

두 층 RBAC

Teleport 역할과 클러스터 RBAC 중 좁은 쪽이 남습니다. 어느 쪽도 우선하지 않고 두 범위의 교집합이 실효 권한이 됩니다. Teleport에는 누가 어디까지 닿는지를, 클러스터에는 닿은 다음 무엇을 할 수 있는지를 둡니다.

구성할 때 미리 알아 둘 것: Teleport는 자기 신원으로 API 서버를 호출하지 않고 impersonation 헤더를 붙여 요청합니다. 따라서 클러스터 감사 로그에도 최종 사용자가 남고, 클러스터 RBAC을 우회할 방법도 없습니다. 다만 역할의 kubernetes_resources를 비워 두면 역할 버전 v7과 v8에서는 전체 허용이 기본값이 되므로, 좁히려고 만든 역할이 아무것도 좁히지 않는 상태가 될 수 있습니다. 주고받는 역할 정의에는 버전을 항상 명시하십시오.

근거: 인포그랩 내부 위키의 두 층 RBAC 정리본과 Teleport 공식 Kubernetes Access Controls, Access Requests 문서입니다.

Reference architecture

레퍼런스 아키텍처

특정 환경을 그대로 옮긴 도면이 아니라, 공식 문서의 셀프호스팅 고가용성 제약을 반영해 그린 참조 구성입니다. 개념도, 논리 구조, 상세 기술 구조 순서로 보시면 됩니다.

읽는 법: 왼쪽의 인증에서 시작해 권한, 접근, 감사로 이어지는 한 줄이 Teleport가 담당하는 범위입니다. 각 단계가 서로 다른 제품으로 나뉘어 있던 것을 하나의 계층으로 합치는 구조입니다.
Demo

데모 영상 9편

로그인부터 Pod 단위 접근, 감사, 임시 권한 승인까지 하나의 운영 흐름으로 보여 줍니다. 카드를 누르면 영상이 재생됩니다. 라벨 CORE는 기본 흐름이고 라벨 OPT는 필요할 때 보시면 되는 선택 항목입니다.

01

SSO로 인증

IdP의 그룹 클레임을 Teleport 역할로 연결합니다.

02

역할 기반 Pod 접근

역할이 다른 두 사용자가 서로 다른 Kubernetes 권한으로 접근합니다.

03

감사와 세션 증적

감사 이벤트를 검색하고 Kubernetes 세션 기록을 재생합니다.

04

임시 권한 승인

필요한 접근만 요청하고 승인하며 만료 조건을 적용합니다.

영상은 인포그랩이 자체 구성한 검증 환경에서 촬영했습니다. 화면에 보이는 클러스터 이름과 사용자 이름은 예시 값입니다.

FAQ

자주 묻는 질문

도입 검토 단계에서 반복해서 나오는 질문 여덟 개입니다. 각 답변에는 근거가 되는 공식 문서를 함께 두었습니다.

1. 대상 서버와 클러스터에 인바운드 포트를 열어야 합니까?

열지 않습니다. 에이전트가 Proxy Service로 443 아웃바운드 리버스 터널을 맺고, 사용자 트래픽은 그 터널을 거꾸로 타고 들어갑니다. 공중망에서 주소를 지정할 수 있어야 하는 구성 요소는 Proxy Service 하나뿐입니다. 예외는 셀프호스팅에서 에이전트를 Auth Service에 직접 조인시키는 방식이며, 이때만 대상 호스트에 3022, 3026, 3028이 열립니다. 이 방식은 웹 앱과 데이터베이스, 자동 검색 기능을 쓸 수 없어 권장하지 않습니다.

공식 문서: Networking Reference

2. SSO 그룹을 Teleport 역할로 어떻게 연결합니까?

커넥터 리소스의 매핑 항목으로 연결합니다. OIDC 커넥터는 claims_to_rolesclaim, value, roles 세 값을 목록으로 적고, SAML 커넥터는 attributes_to_roles에 같은 구조로 적습니다. {{external.*}} 템플릿을 쓰면 역할 하나로 여러 그룹을 처리할 수 있어 사용자별 역할을 따로 관리하지 않아도 됩니다. OIDC와 SAML 기반 SSO는 Teleport Enterprise 기능이며, Community Edition에서 쓸 수 있는 SSO는 GitHub 하나입니다.

공식 문서: Single Sign-On with OIDC

3. Teleport 역할과 Kubernetes RBAC이 다르면 무엇이 우선합니까?

우선순위가 없습니다. 두 범위의 교집합이 실효 권한이며, 좁은 쪽이 남습니다. 요청은 먼저 Teleport 역할의 범위에서 걸러지고, 통과한 요청만 impersonation 헤더를 달고 API 서버로 가서 클러스터 RBAC 판정을 한 번 더 받습니다. 두 범위가 겹치지 않으면 남는 권한이 없습니다. Teleport 역할에 넓은 동사를 적어도 클러스터에서 부여받지 않은 권한은 생기지 않습니다.

공식 문서: Kubernetes Access Controls

4. 세션 기록은 어떤 형태로 남습니까?

프로토콜마다 다릅니다. SSH와 kubectl exec 세션은 터미널 출력 전체가 남아 tsh play와 Web UI에서 재생할 수 있습니다. 웹 앱은 화면 녹화가 아니라 요청 단위 감사 이벤트(app.session.request)로 남으며 5분 단위로 묶입니다. Windows 데스크톱은 화면과 마우스 입력을 기록하고 Web UI에서 재생합니다. 데이터베이스는 쿼리와 관련 감사 이벤트로 남습니다. 브라우저로 쓰는 웹 앱을 화면 재생 수준으로 남겨야 한다면 요건을 먼저 확인해야 합니다.

공식 문서: Session Recording

5. 권한 변경은 언제 반영됩니까?

다음 로그인부터 반영됩니다. 역할이 발급된 인증서 안에 인코딩되므로, IdP에서 그룹을 바꾸어도 이미 발급된 인증서에는 반영되지 않습니다. 즉시 회수가 필요하면 Lock을 씁니다. Lock은 진행 중인 세션까지 끊습니다. 따라서 정기적인 권한 정리는 그룹 변경으로, 사고 대응은 Lock으로 나누어 운영합니다.

공식 문서: Session and Identity Locking

6. Auth Service나 IdP에 장애가 나면 기존 세션은 어떻게 됩니까?

이미 발급된 인증서는 TTL(Time To Live)이 남아 있는 동안 계속 유효하고, 신규 로그인은 실패합니다. 에이전트는 장애 중에도 기존 터널을 유지합니다. IdP만 장애면 기존 인증서는 살아 있고 새 SSO 로그인만 막힙니다. 다만 진행 중인 모든 세션이 유지된다고 일괄 보장하지는 않습니다. 만료 인증서 강제 종료 설정이나 엄격한 잠금 모드를 켠 클러스터는 일부 장애 조건에서 세션을 의도적으로 종료합니다.

공식 문서: Self-hosted High Availability

7. Enhanced Session Recording의 커널 요건은 무엇입니까?

공식 문서 기준 Linux 커널 5.8 이상이며, RHEL과 CentOS 계열에도 같은 기준이 적용됩니다. 이 기능은 BPF(Berkeley Packet Filter) 기반이며, 노드별로 켜고 끄는 선택 기능이고 기본값은 꺼짐입니다. 표준 세션 기록에는 커널 요건이 없으므로, 요건을 맞추지 못해도 잃는 것은 이 기능 하나입니다. 적용 대상은 SSH 프로토콜이며 Kubernetes, 웹 앱, 데이터베이스 접근에는 영향이 없습니다. 실행된 명령을 우회할 수 없게 남겨야 하는 규제 요건이 있는지부터 확인하시면 판단이 빨라집니다.

공식 문서: Enhanced Session Recording with BPF

8. 고가용성 구성의 핵심은 무엇입니까?

Proxy는 상태를 갖지 않아 다중화가 쉽고, Auth는 다중화 전에 외부 고가용성 백엔드로 먼저 전환해야 합니다. 앞단 로드밸런서는 TLS를 종단하지 않는 L4여야 하며, 사용자용 공개 로드밸런서 하나와 Proxy에서 Auth로 향하는 사설 로드밸런서 하나가 필요합니다. 세션 어피니티는 켜지 않습니다. Teleport가 에이전트 수준에서 세션을 배분하기 때문입니다. 업그레이드는 Auth, Proxy, 에이전트 순서로 진행합니다.

공식 문서: Self-hosted High Availability
Proof of concept

PoC 진행 방식

PoC의 목표는 기능이 되는지 확인하는 것이 아니라, 운영팀과 보안팀이 함께 판단할 수 있는 증적이 나오는지 확인하는 것입니다. 4주 기본안은 설치에서 회수까지 한 바퀴를 도는 최소 구성입니다.

4주 기본안. 방화벽 신청과 변경 승인 리드타임은 별도로 잡습니다.
주차목표산출
0주 (3~5일)범위와 성공 기준 확정PoC 계획서, 성공 판정표, 네트워크 요건 문서
1주클러스터 기동설치 런북, 리소스 목록 화면, 첫 세션 증적
2주아이덴티티 통합역할 매트릭스, SSO 연동 문서, 개인 식별 접속 증적
3주승인 워크플로와 세션 증적승인 이력, 세션 재생 3건, 감사 이벤트 수집 화면
4주회수와 판정회수 로그, 결과 보고서, 확장 설계 입력값

성공 판정 기준

#항목합격선 예시증적
1개인 식별 접속공유 계정 없이 SSO 개인 신원으로 대상 리소스 전부 접속세션 시작 이벤트에 사용자 매핑된 샘플
2승인 왕복 시간요청에서 접근 가능까지 중위 5분 이내 (업무시간 기준)Access Request 이력, 승인 알림 화면
3세션 재현율무작위 20건 재생 성공률 100%재생 화면, tsh play 출력
4회수 소요 시간잠금 후 신규 접속 거부까지 60초 이내Lock 이력, 거부 이벤트
5감사 증적 제출 시간특정 인물의 지난 30일 접근 내역 산출 30분 이내검색 화면, 내보낸 파일

합격선은 예시입니다. 착수 전에 고객과 함께 숫자를 조정해 확정합니다. 판정 기준을 미리 정해 두어야 PoC 결과를 같은 기준으로 읽을 수 있습니다.

준비 항목

고객 준비

고객이 준비하는 것

  • 대상 Kubernetes 클러스터 1개. 개발 성격 클러스터를 권장하며 Helm 설치 권한이 필요합니다.
  • IdP 그룹 예시. 요청자와 승인자 역할에 해당하는 그룹 각각 1개 이상과 테스트 사용자 2명입니다.
  • DNS 이름과 TLS 인증서 발급 방식. 기본 도메인 1개, 웹 앱 검증이 범위에 들어가면 와일드카드 1개를 더 준비합니다.
  • 네트워크 경로 승인. 3장 네트워크 요건 표의 1번에서 3번 항목입니다.
인포그랩 제공

인포그랩이 제공하는 것

  • 평가용 Enterprise 라이선스와 설치 패키지. 폐쇄망이면 오프라인 번들로 준비합니다.
  • 구성 파일 초안. teleport.yaml, SSO 커넥터, 역할 세트, 자동 검색 설정을 포함합니다.
  • 시나리오별 측정 시트와 결과 보고서. 주차별 산출물을 재현 가능한 형태로 남깁니다.
도입 검토나 PoC 문의

InfoGrab은 한국 시장의 Teleport 파트너입니다. 구축, 검증, 교육, 라이선스 산정을 함께 진행합니다. 라이선스 산정 기준은 문의해 주십시오. https://infograb.net

References

참고 자료

이 가이드의 기술적 서술은 아래 공식 문서를 근거로 합니다. 수치와 설정값은 버전에 따라 바뀌므로 도입 시점에 원문을 다시 확인하십시오.

이 가이드가 다루지 않는 것

  • 가격과 견적. 라이선스 산정 기준은 문의해 주십시오.
  • 특정 고객 환경의 구성값과 sizing 결과. 환경마다 달라 일반화하지 않습니다.
  • 앞단 인그레스 제품별 상세 설정. 공식 문서에 제품별 페이지가 없는 항목은 PoC에서 실측합니다.
  • Windows 데스크톱, 데이터베이스, 머신 신원의 상세 구축 절차. 필요하시면 별도로 안내드립니다.

데모 영상

아키텍처

확대한 아키텍처 도면