Infograb logo
Teleport 구성

Teleport는 YAML 파일 형식을 사용하여 구성합니다. 아래에 전체 구성 참고 파일이 나와 있습니다. 이 파일은 주석과 teleport.yaml 의 모든 사용 가능한 옵션을 제공합니다.

기본적으로 Teleport는 /etc/teleport.yaml 에서 구성 파일을 읽습니다.

이 참조를 사용하기 전에

이 예시 구성을 운영 환경에서 사용하지 마십시오.

귀하의 환경에 맞게 구성 파일을 수정해야 합니다. 참조 구성을 복사하여 사용하면 의도하지 않은 효과가 발생할 수 있습니다. 시작점으로 사용할 수 있는 구성 파일을 만들려면 다음 명령어를 실행하십시오:

teleport configure -o file

SSH 서비스 및 데이터베이스 서비스에 사용할 수 있는 configure 명령도 있습니다. Teleport CLI Reference에서 teleport node configureteleport db configure 에 대한 문서를 참조하십시오.

변경하기 전에 구성 파일을 백업해야 합니다. 이를 통해 필요할 경우 이전 구성으로 롤백할 수 있습니다.

Teleport 서비스 활성화

teleport 프로세스는 여러 서비스를 실행할 수 있습니다.

일부 서비스는 시작하기 위해 Teleport 구성 내에서 서비스를 활성화해야 합니다. 다른 서비스는 기본적으로 활성화되어 있습니다.

서비스를 활성화하거나 비활성화하려면, 다음을 Teleport 구성에 포함시키고 service_name 을 서비스 이름으로 바꿉니다(서비스 이름 목록은 아래에 있습니다):

service_name:
  enabled: "no"

Teleport는 다음 서비스를 지원합니다:

서비스구성 섹션기본 활성화
애플리케이션 서비스app_service
인증 서비스auth_service
데이터베이스 서비스db_service
발견 서비스discovery_service
Kubernetes 서비스kubernetes_service
프록시 서비스proxy_service
SSH 서비스ssh_service
데스크톱 서비스windows_desktop_service
Jamf 서비스jamf_service

Teleport Cloud는 인증 서비스 및 프록시 서비스를 관리합니다. Teleport 서비스 인스턴스(예: 애플리케이션 서비스 및 데이터베이스 서비스)는 예기치 않은 효과를 방지하기 위해 다음 구성 옵션을 포함해야 합니다:

auth_service:
  enabled: false

proxy_service:
  enabled: false

참조 구성

이 예시 구성은 올바른 들여쓰기를 보여주기 위해 YAML 형식의 모든 가능한 구성 옵션을 포함합니다.

어떤 Teleport 서비스를 선택하여 애플리케이션 구성 옵션을 확인하십시오:

인스턴스 전체 설정

이 설정은 모든 teleport 인스턴스에 적용됩니다:

# 기본적으로 이 파일은 /etc/teleport.yaml에 저장되어야 합니다.

# 설정 파일 버전. 현재 버전은 "v3"입니다.
version: v3

# 이 설정 파일의 이 섹션은 모든 Teleport 서비스에 적용됩니다.
teleport:
    # nodename은 이 노드에 할당할 대체 이름을 지정할 수 있습니다.
    # 기본값은 호스트 이름과 동일합니다.
    nodename: graviton

    # Teleport 데몬이 데이터를 저장하는 데이터 디렉토리입니다.
    data_dir: /var/lib/teleport

    # Teleport 프로세스를 위한 PID 파일
    #pid_file: /var/run/teleport.pid

    # 클러스터에 가입하는 데 사용되는 초대 토큰 또는 토큰을 포함한 파일의 절대 경로입니다.
    # 이는 첫 실행 시에만 사용되며 이후 시작 시에는 사용되지 않습니다.
    #
    # 파일 경로 예시:
    # auth_token: /var/lib/teleport/tokenjoin
    #
    # 이는 join_params.method를 "token"으로 설정하고 join_params.token_name을 auth_token 값으로 설정하는 것과 동일합니다.
    # auth_token 또는 join_params 중 하나만 사용해야 합니다.
    auth_token: xxxx-token-xxxx

    # 클러스터에 EC2, IAM 또는 토큰을 통해 가입할 때 사용하는 매개변수입니다.
    join_params:
        # `method`가 "token"으로 설정된 경우, 이는 위의 `auth_token`을 사용하는 것과 동일합니다.
        # auth_token 또는 join_params 중 하나만 사용해야 합니다.
        method: "token"|"ec2"|"iam"|"github"|"circleci"|"kubernetes"

        # method가 "token"이 아닌 경우, token_name은 EC2 또는 IAM 가이드에서 생성된
        # "ec2-token" 또는 "iam-token"과 같은 가입 토큰 리소스의 이름이 됩니다.

        # method가 "token"인 경우, token_name은 클러스터에 가입하는 데 사용되는 초대 토큰
        # 또는 토큰을 포함한 파일의 절대 경로가 됩니다. 이는 첫 실행 시에만 사용되며 이후 시작 시에는 사용되지 않습니다.
        #
        # 파일 경로 예시:
        # token_name: /var/lib/teleport/tokenjoin
        token_name: "token-name"

    # Auth 서비스의 CA 핀(인증서 핀)을 선택적으로 지정할 수 있습니다. CA 핀을 지정하면
    # 새로운 에이전트가 Auth 서비스를 통해 Teleport 클러스터를 신뢰할 수 있습니다.
    #
    # ca_pin 필드에 CA 핀의 실제 값을 할당하거나 파일의 절대 경로를 지정할 수 있습니다.
    # 파일을 지정한 경우, 해당 파일에는 CA 핀만 포함되어야 합니다.
    #
    # YAML 목록 형식으로 여러 CA 핀이나 파일 경로를 지정할 수도 있습니다:
    #
    # ca_pin:
    #   - /var/lib/teleport/pin1
    #   - /var/lib/teleport/pin2
    ca_pin:
      "sha256:7e12c17c20d9cb504bbcb3f0236be3f446861f1396dcbb44425fe28ec1c108f1"

    # 멀티홈 또는 NAT 환경에서 Teleport 노드는 다른 노드가 접근 가능한 IP를 알아야 합니다.
    #
    # 이 값은 FQDN(예: host.example.com)으로도 지정할 수 있습니다.
    advertise_ip: 10.1.0.5

    # Teleport는 모니터링 목적으로 HTTP 엔드포인트를 제공합니다. 기본적으로 비활성화되어 있지만,
    # 진단 주소를 통해 활성화할 수 있습니다.
    diag_addr: "127.0.0.1:3000"

    # auth_server 또는 proxy_server 중 하나만 사용하세요.
    #
    # 애플리케이션 서비스나 데이터베이스 서비스를 활성화한 경우, 프록시를 통한 터널링만 지원되므로 proxy_server를 지정해야 합니다.
    # 다른 서비스는 프록시를 통한 터널링과 Auth 서버에 직접 연결 모두를 지원하므로, auth_server나 proxy_server 중 하나를 지정할 수 있습니다.

    # 연결할 Auth 서버 주소와 포트입니다. Teleport Auth 서버를 고가용성(HA) 구성으로 실행하는 경우,
    # 주소는 로드 밸런서를 가리켜야 합니다.
    # NAT 뒤에 위치한 노드를 추가하려면 Proxy URL(예: teleport-proxy.example.com:443)을 사용하고,
    # 대신 `proxy_server`를 설정하세요.
    auth_server: 10.1.0.5:3025

    # 연결할 Proxy 서버 주소와 포트입니다. Teleport Proxy 서버를 고가용성(HA) 구성으로 실행하는 경우,
    # 주소는 로드 밸런서를 가리켜야 합니다.
    proxy_server: teleport-proxy.example.com:443

    # cache:
    #  # 캐시는 기본적으로 활성화되어 있으며, 이 플래그로 비활성화할 수 있습니다.
    #  enabled: true

    # Teleport는 각 클라이언트 IP 주소에서 오는 연결 수를 제한하여 남용을 방지할 수 있습니다.
    # 이러한 제한은 SSH, Kubernetes 등 각 서비스별로 개별적으로 적용됩니다.
    connection_limits:
        max_connections: 1000

    # 로깅 설정입니다. 가능한 출력 값은 디스크('/var/lib/teleport/teleport.log'),
    # 'stdout', 'stderr', 'syslog'입니다. 가능한 심각도 값은 DEBUG, INFO(기본값), WARN, ERROR입니다.
    log:
        output: /var/lib/teleport/teleport.log
        severity: INFO

        # 로그 형식 설정
        # 가능한 출력 값은 'json' 및 'text'(기본값)입니다.
        # 가능한 extra_fields 값에는 timestamp, component, caller 및 level이 포함됩니다.
        # 모든 추가 필드는 기본적으로 포함됩니다.
        format:
          output: text
          extra_fields: [level, timestamp, component, caller]

추가 읽기:

Proxy Service

이 설정은 Teleport Proxy Service에 적용됩니다:

Teleport Enterprise Cloud가 Proxy Service를 관리하므로 이러한 구성 설정을 지정할 필요가 없습니다.

# 이 섹션은 '프록시 서비스'를 구성합니다.

proxy_service:

# '프록시' 역할을 활성화합니다. 기본값은 'yes'입니다.

enabled: yes

# proxy_protocol은 HAProxy PROXY 프로토콜 지원을 제어합니다.

# 기본값은 지정되지 않으며, 가능한 값은 다음과 같습니다:

# 'on' - PROXY 프로토콜이 활성화되고 필수입니다.

# 'off' - PROXY 프로토콜이 비활성화되고 금지됩니다.

# 지정되지 않은 경우, PROXY 프로토콜이 허용되지만 필수는 아닙니다.
# 이는 테스트 환경에 적합하지만 프로덕션 환경에서는 권장되지 않습니다.
# Teleport의 IP 고정 기능은 이 필드를 지정하지 않고 PROXY 헤더를 받으면 작동하지 않습니다.
# L4 로드 밸런서 뒤에서 PROXY 헤더를 보내는 프록시 서비스가 실행되는 경우 `on`으로 설정하세요. 
# 그렇지 않으면 `off`로 설정하세요.

proxy_protocol: on

# SSH 포워딩/프록시 주소입니다. 명령줄(CLI) 클라이언트는 항상 이 포트에 연결하여 SSH 세션을 시작합니다.

# 설정되지 않은 경우, 동작은 구성 파일 버전에 따라 달라집니다:

# v2 이상: 리스너가 생성되지 않으며, SSH는 web_listen_addr에서 멀티플렉싱됩니다.
# v1: 기본값은 0.0.0.0:3023입니다.

listen_addr: 0.0.0.0:3023

# Reverse 터널 리스닝 주소입니다. 인증 서버(CA)는 이 주소로 방화벽 뒤에서 
# 아웃바운드 연결을 설정할 수 있습니다.
# 이를 통해 외부 CA 사용자가 방화벽 뒤 노드에 연결할 수 있습니다.

# 설정되지 않은 경우, 동작은 구성 파일 버전에 따라 달라집니다:

# v2 이상: 리스너가 생성되지 않으며, reverse 터널 트래픽은 web_listen_addr에서 멀티플렉싱됩니다.
# v1: 기본값은 0.0.0.0:3024입니다.

tunnel_listen_addr: 0.0.0.0:3024

# Proxy Peering 리스닝 주소입니다. Teleport 프록시 서비스가 이 주소에 바인딩하여
# Proxy Peering 모드에서 다이얼링 에이전트의 수신 연결을 수신합니다.

peer_listen_addr: 0.0.0.0:3021

# Proxy Peering 공개 주소입니다. Teleport 프록시 서비스가 Proxy Peering 모드에서
# 다이얼링 에이전트에 대해 이 주소를 광고합니다.
# 참고: 이 주소는 각 프록시에 대해 고유해야 하며 로드 밸런서를 가리키면 안 됩니다.
# 로드 밸런서 주소를 사용하는 경우 예측할 수 없는 결과와 연결 지연이 발생할 수 있습니다.

peer_public_addr: teleport-proxy-host-1.example.com:3021

# Web UI와 사용자 인증을 제공하는 HTTPS 리스닝 주소입니다.
# Database Service가 활성화된 경우 PostgreSQL 프록시를 처리합니다.

web_listen_addr: 0.0.0.0:3080

# 클러스터 사용자가 접근할 수 있는 프록시 HTTPS 엔드포인트의 DNS 이름입니다.
# 지정되지 않은 경우 프록시의 호스트 이름이 기본값으로 사용됩니다.
# 여러 프록시를 로드 밸런서 뒤에서 실행하는 경우, 이 이름은 로드 밸런서를 가리켜야 합니다.
# 애플리케이션 액세스가 활성화된 경우, public_addr는 올바른 리디렉션을 작성하는 데 사용됩니다.
# 데이터베이스 액세스가 활성화된 경우, Database 클라이언트는 이 호스트 이름을 통해
# 프록시에 연결합니다.

public_addr: proxy.example.com:3080

# 클러스터 사용자가 접근할 수 있는 프록시 SSH 엔드포인트의 DNS 이름입니다.
# 지정되지 않은 경우 프록시의 호스트 이름이 기본값으로 사용됩니다.
# 여러 프록시를 로드 밸런서 뒤에서 실행하는 경우, 이 이름은 로드 밸런서를 가리켜야 합니다.
# 이 포트는 SSH 프로토콜을 사용하므로 TCP 로드 밸런서를 사용하세요.

ssh_public_addr: proxy.example.com:3023

# Teleport IoT/노드 터널링을 통해 신뢰된 클러스터 및 노드가 
# 클러스터에 접근할 수 있는 터널 SSH 엔드포인트의 DNS 이름입니다.
# 지정되지 않은 경우 프록시의 호스트 이름이 기본값으로 사용됩니다.
# 여러 프록시를 로드 밸런서 뒤에서 실행하는 경우, 이 이름은 로드 밸런서를 가리켜야 합니다.
# 이 포트는 SSH 프로토콜을 사용하므로 TCP 로드 밸런서를 사용하세요.

tunnel_public_addr: proxy.example.com:3024

# HTTPS 연결을 위한 TLS 인증서입니다. 이를 올바르게 구성하는 것은 
# Teleport 보안에 매우 중요합니다.

https_keypairs:
- key_file: /var/lib/teleport/webproxy_key.pem
  cert_file: /var/lib/teleport/webproxy_cert.pem
- key_file: /etc/letsencrypt/live/*.teleport.example.com/privkey.pem
  cert_file: /etc/letsencrypt/live/*.teleport.example.com/fullchain.pem

# 인증서 키 쌍을 다시 로드하는 시도 간의 간격입니다.
# 키 쌍 중 하나를 로드하지 못하면 어떤 키 쌍도 다시 로드되지 않습니다.
# 0(기본값)으로 설정하면 주기적인 다시 로딩이 비활성화됩니다.
# 이 기능을 올바르게 사용하려면 인증서 파일을 원자적으로 업데이트해야 합니다.

https_keypairs_reload_interval: 1h

# Kubernetes 프록시 리스닝 주소입니다.

# 설정되지 않은 경우, 동작은 구성 파일 버전에 따라 달라집니다:
# v2 이상: 리스너가 생성되지 않으며, Kubernetes 트래픽은 web_listen_addr에서 멀티플렉싱됩니다.
# v1: 기본값은 0.0.0.0:3026입니다.

kube_listen_addr: 0.0.0.0:3026

# Kubernetes 접근을 위한 다른 공개 주소를 설정하려면 선택적으로 사용하세요.

kube_public_addr: kube.example.com:3026

# MySQL 프록시 리스닝 주소입니다.

# 설정되지 않은 경우, 동작은 구성 파일 버전에 따라 달라집니다:
# v2 이상: 리스너가 생성되지 않으며, MySQL 트래픽은 web_listen_addr에서 멀티플렉싱됩니다.
# v1: 기본값은 0.0.0.0:3036입니다.

mysql_listen_addr: "0.0.0.0:3036"

# PostgreSQL 프록시 리스너 주소입니다. 제공된 경우, 프록시는 web_listener_addr에서 
# PostgreSQL 프로토콜을 멀티플렉싱하는 대신 별도의 리스너를 사용합니다.

postgres_listen_addr: "0.0.0.0:5432"

# MongoDB 프록시 리스너 주소입니다. 제공된 경우, 프록시는 web_listener_addr에서 
# Mongo 프로토콜을 멀티플렉싱하는 대신 별도의 리스너를 사용합니다.

mongo_listen_addr: "0.0.0.0:27017"

# MySQL 클라이언트에 광고되는 주소입니다. 설정되지 않은 경우 public_addr가 사용됩니다.

mysql_public_addr: "mysql.teleport.example.com:3306"

# PostgreSQL 클라이언트에 광고되는 주소입니다. 설정되지 않은 경우 public_addr가 사용됩니다.

postgres_public_addr: "postgres.teleport.example.com:443"

# MongoDB 클라이언트에 광고되는 주소입니다. 설정되지 않은 경우 public_addr가 사용됩니다.

mongo_public_addr: "mongo.teleport.example.com:443"

# Letsencrypt.org에서 ACME를 통해 TLS_ALPN-01 챌린지를 사용하여 자동 인증서를 가져옵니다.
# ACME를 사용할 때 'proxy_service'는 포트 443을 통해 공개적으로 접근 가능해야 합니다.
# CLI 명령으로도 설정할 수 있습니다:
#
# 'teleport configure --acme --acme-email=email@example.com \
# --cluster-name=tele.example.com -o file'
#
# 고가용성(HA) Teleport 배포에서는 이 기능을 활성화하지 마세요.
# HA에서 사용하는 경우 너무 많은 실패한 인증 시도로 인해 ACME 프로세스가 잠길 수 있습니다
# (https://letsencrypt.org/docs/failed-validation-limit/).

#acme:
#  enabled: yes
#  email: user@example.com

# ID 공급자 구성입니다. Teleport의 ID 공급자를 자세히 구성합니다.
# 현재는 SAML만 지원됩니다.

idp:

# SAML ID 공급자 구성입니다.

saml:

# SAML ID 공급자를 활성화합니다. 기본값은 'yes'입니다.

enabled: yes

# Proxy 서비스에서 제공하는 Web UI의 구성 옵션입니다.

ui:

# 터미널에서 스크롤백의 양을 설정합니다. 스크롤백은 초기 뷰포트를 넘어서는
# 줄이 스크롤될 때 유지되는 행의 수를 의미합니다. 세션 녹화 보기에는 적용되지 않습니다.

scrollback_lines: 1000

# Web UI 리소스 페이지에서 표시할 리소스를 설정합니다.
# 사용자가 접근할 수 있는 리소스와 요청 가능한 리소스가 포함됩니다.
# 기본적으로 두 유형 모두 포함됩니다. 사용자가 접근 가능한 리소스만 보이도록 하려면
# 이를 "accessible_only"로 설정하세요.

show_resources: 'requestable'

# Proxy 서비스가 웹 API를 위한 "X-Forwarded-For" 헤더에서 클라이언트 소스 IP를 가져오도록 활성화합니다.
# IP 스푸핑을 방지하려면 Proxy 서비스를 클라이언트 IP를 "X-Forwarded-For" 헤더에 설정하는 
# Layer 7 로드 밸런서 또는 리버스 프록시 뒤에 배치해야 합니다.
# 여러 개의 IP가 포함된 요청은 거부됩니다.

trust_x_forwarded_for: false

# 에이전트 자동 업데이트를 위한 내장 버전 서버 구성입니다.
# 이 구성을 설정하지 않으면 기본 채널이 생성되며 Proxy 서비스에서 실행 중인 Teleport 버전을 제공합니다.

automatic_upgrades_channels:

# 기본 버전 채널 재정의

default:

static_version: v14.2.1

# 정적 버전을 가진 새로운 버전 채널 정의

additional/channel/static:

static_version: v14.2.0
critical: true

# 업스트림 버전 서버로 요청을 전달하는 새로운 버전 채널 정의

additional/channel/remote:

forward_url: https://updates.releases.teleport.dev/v1/stable/cloud

Auth Service

이 설정은 Teleport Auth Service에 적용됩니다:

Teleport Enterprise Cloud가 Auth Service를 관리하므로 이러한 구성 설정을 지정할 필요가 없습니다.

teleport:

    # 클러스터 상태와 감사 로그에 사용되는 스토리지 백엔드 구성. 여러 백엔드 유형을 지원합니다.
    storage:
        # 기본적으로 Teleport는 로컬 파일 시스템의 `data_dir` 디렉토리에 SQLite 데이터베이스를 사용합니다.
        type: sqlite

        # 감사 로그 이벤트가 저장될 위치 목록입니다. 기본적으로 `/var/lib/teleport/log`에 저장됩니다.
        #
        # 이렇게 여러 대상을 지정할 경우, Teleport Web UI에서 이벤트를 표시하는 데 사용하는
        # 고가용성 스토리지 방법(예: DynamoDB 또는 Firestore)을 먼저 지정해야 합니다.
        audit_events_uri:
          - 'dynamodb://events_table_name'
          - 'firestore://events_table_name'
          - 'postgresql://user_name@database-address/events_table_name'
          - 'file:///var/lib/teleport/log'
          - 'stdout://'

        # Teleport를 AWS S3 버킷이나 GCP Storage('gs://')를 사용하여 녹화된 세션을 저장하도록 구성할 때 이 설정을 사용합니다.
        audit_sessions_uri: 's3://example.com/path/to/bucket?region=us-east-1'

        # SQLite 관련 섹션:

        # 기본 경로는 `data_dir`의 `backend` 디렉토리입니다.
        path: /var/lib/teleport/backend/
        # SQLite의 `synchronous` 프래그마는 시스템 충돌에 대한 신뢰성을 희생하고 쓰기 성능을 개선하기 위해 `"OFF"`로 설정할 수 있습니다
        # (https://www.sqlite.org/pragma.html#pragma_synchronous 참조).
        sync: FULL
        # SQLite의 `journal_mode` 프래그마는 기본적으로 WAL 모드를 사용하는 데이터베이스 파일이 아닌 경우 SQLite 기본값(DELETE)에서 변경되지 않습니다.
        # 신뢰성을 희생하지 않고 성능을 개선하려면 `journal`을 `WAL`로 설정하고 `sync`를 `NORMAL`로 설정할 수 있지만,
        # 잠금을 지원하는 파일 시스템에서만 가능합니다 (https://www.sqlite.org/pragma.html#pragma_journal_mode 참조).
        #journal: DELETE

        # DynamoDB 관련 섹션:

        # continuous_backups는 연속 백업을 활성화하는 데 사용됩니다.
        # 기본값: false
        continuous_backups: true

        # auto_scaling은 자동 확장을 활성화하고 설정을 정의하는 데 사용됩니다.
        # 기본값: false
        auto_scaling: true

        # 기본적으로 Teleport는 AWS TTL이 1년인 감사 이벤트를 저장합니다.
        # 아래와 같이 이 값을 구성할 수 있습니다. 0초로 설정하면 TTL이 비활성화됩니다.
        #
        # 참고: DynamoDB 이벤트 백엔드만 retention_period를 준수합니다. 다른 이벤트 백엔드는
        # audit_events_uri의 쿼리 매개변수를 통해 보존 기간을 소비합니다. 아래 예시에서 다른 백엔드에 대한 보존 기간을 구성하는 방법을 참조하십시오.
        # Firestore: firestore://events_table_name?eventRetentionPeriod=10d
        # Postgres: postgresql://user_name@database-address/teleport_audit?retention_period=10d
        retention_period: 365d

        # 읽기 용량 최소/최대 단위
        read_min_capacity: int
        read_max_capacity: int
        read_target_value: float
        # 쓰기 용량 최소/최대 단위
        write_min_capacity: int
        write_max_capacity: int
        write_target_value: float

    # SSH에 대한 기본 암호 알고리즘. 기본값을 재정의하려는 경우에만 이 섹션을 설정해야 합니다.
    ciphers:
      - aes128-ctr
      - aes192-ctr
      - aes256-ctr
      - aes128-gcm@openssh.com
      - aes256-gcm@openssh.com
      - chacha20-poly1305@openssh.com

    # SSH에 대한 기본 키 교환 알고리즘(KEX). 기본값을 재정의하려는 경우에만 이 섹션을 설정해야 합니다.
    kex_algos:
      - curve25519-sha256
      - curve25519-sha256@libssh.org
      - ecdh-sha2-nistp256
      - ecdh-sha2-nistp384
      - ecdh-sha2-nistp521
      - diffie-hellman-group14-sha256

    # SSH에 대한 기본 메시지 인증 코드(MAC) 알고리즘. 기본값을 재정의하려는 경우에만 이 섹션을 설정해야 합니다.
    mac_algos:
      - hmac-sha2-256-etm@openssh.com
      - hmac-sha2-512-etm@openssh.com
      - hmac-sha2-256
      - hmac-sha2-512

    # TLS에 대한 기본 암호화 스위트. 이 섹션이 지정되지 않으면 기본 암호화 스위트만 활성화됩니다.
    ciphersuites:
       - tls-ecdhe-rsa-with-aes-128-gcm-sha256
       - tls-ecdhe-ecdsa-with-aes-128-gcm-sha256
       - tls-ecdhe-rsa-with-aes-256-gcm-sha384
       - tls-ecdhe-ecdsa-with-aes-256-gcm-sha384
       - tls-ecdhe-rsa-with-chacha20-poly1305
       - tls-ecdhe-ecdsa-with-chacha20-poly1305

# 이 섹션은 'auth 서비스'를 구성합니다:
auth_service:
    # 'auth' 역할을 활성화합니다. 기본값은 'yes'입니다.
    enabled: yes

    # cluster_name은 새 클러스터를 시작할 때 사용하는 이름입니다.
    # 클러스터 이름은 이 CA가 생성한 인증서 서명의 일부로 사용됩니다.
    #
    # 여러 클러스터 간의 신뢰를 구성할 때 중요해지므로 의미 있는 이름으로 명시적으로 설정하는 것을 강력히 권장합니다.
    #
    # 기본적으로 자동으로 생성된 이름이 사용됩니다(권장하지 않음).
    #
    # 중요: 이 필드에 대한 변경 사항은 이미 생성된 클러스터에 영향을 미치지 않습니다.
    # 기존 클러스터의 이름을 변경하려면 'POST /v2/configuration/name' 엔드포인트를 사용할 수 있지만,
    # 이는 생성된 모든 인증서와 키를 무효화합니다(필요한 경우 /var/lib/teleport 디렉토리를 초기화해야 할 수 있음).
    cluster_name: "main"

    # proxy_protocol은 HAProxy PROXY 프로토콜 지원을 제어합니다.
    # 기본값은 지정되지 않으며, 가능한 값은 다음과 같습니다:
    # 'on' - PROXY 프로토콜이 활성화되고 필수입니다.
    # 'off' - PROXY 프로토콜이 비활성화되고 금지됩니다.
    #
    # 지정되지 않은 경우, PROXY 프로토콜은 허용되지만 필수는 아닙니다. 이는 테스트 환경에 적합하지만
    # 프로덕션 환경에서는 권장되지 않습니다. Teleport의 IP 고정 기능은 이 필드를 지정하지 않고 PROXY 헤더를
    # 수신하면 작동하지 않습니다. Auth 서비스가 PROXY 헤더를 보내는 L4 로드 밸런서 뒤에서 실행되는 경우
    # `on`으로 설정하고, 그렇지 않은 경우 `off`로 설정하십시오.
    proxy_protocol: on

    authentication:
        # 기본 인증 유형. 가능한 값은 'local'과 'github'이며,
        # Teleport Community Edition에서는 'oidc'와 'saml'이 추가로 지원됩니다.
        # 오픈 소스 버전에서는 로컬 인증(Teleport 자체 사용자 DB) 및 GitHub만 지원됩니다.
        type: local

        # 로컬 인증이 다른 인증 유형과 함께 활성화되는지 여부를 설정합니다. 기본값은 true입니다.
        # FedRAMP / FIPS에서는 local_auth가 'false'여야 합니다.
        #local_auth: true

        # 사용자 로그인 세션에서 세션별 MFA 또는 PIV-하드웨어 키 제한을 강제 적용합니다.
        # 가능한 값: true, false, "hardware_key", "hardware_key_touch".
        # 기본값은 false입니다.
        require_session_mfa: false

        # second_factor는 'on', 'otp', 또는 'webauthn'일 수 있습니다.
        # - 'on'은 otp 또는 webauthn 두 번째 요소를 요구합니다.
        # - 'otp'와 'webauthn'은 해당 두 번째 요소를 요구합니다.
        second_factor: otp

        # 비밀번호 없는 인증을 허용할지 설정합니다.
        # 비밀번호 없는 인증에는 WebAuthn이 필요합니다.
        # 기본값은 "true"입니다.
        #passwordless: true

        # 헤드리스 인증을 허용할지 설정합니다.
        # 헤드리스 인증에는 WebAuthn이 필요합니다.
        # 기본값은 "true"입니다.
        #headless: true

        # 클러스터의 기본 인증 커넥터를 설정합니다:
        # - 로컬 인증(password, WebAuthn 등)을 위해 'local'
        # - 비밀번호 없는 인증을 위해 'passwordless'
        # - 헤드리스 인증을 위해 'headless'
        # - 특정 SSO 커넥터 이름
        # 기본값은 "local"입니다.
        #connector_name: local

        # 이 섹션은 second_factor가 'on', 'optional', 또는 'webauthn'으로 설정된 경우 사용됩니다.
        webauthn:
          # Teleport 프록시의 공개 도메인, 프로토콜(`https://`) 및 포트 번호 제외
          #
          # 중요: rp_id는 클러스터의 수명 동안 절대 변경되어서는 안 됩니다. 이는 두 번째 요소
          # 인증 장치의 등록 데이터에 기록되기 때문입니다. rp_id가 변경되면 기존 모든 인증 장치 등록이
          # 무효화되며 WebAuthn을 두 번째 요소로 사용하는 모든 사용자가 재등록해야 합니다.
          rp_id: "localhost"

          # [장치 검증](https://developers.yubico.com/WebAuthn/WebAuthn_Developer_Guide/Attestation.html)을 위한
          # 인증 기관(CA)의 선택적 허용 목록(로컬 파일 경로 또는 인라인 PEM 인증서 문자열).
          #
          attestation_allowed_cas:
          - /path/to/allowed_ca.pem
          - |
            -----BEGIN CERTIFICATE-----
            ...
            -----END CERTIFICATE-----

          attestation_denied_cas:
          - /path/to/denied_ca.pem
          - |
            -----BEGIN CERTIFICATE-----
            ...
            -----END CERTIFICATE-----

          disabled: false

        u2f:
            app_id: https://localhost:3080

        locking_mode: best_effort

        device_trust:
          mode: optional

        default_session_ttl: 12h


		# IP 및 바인딩할 포트. 다른 Teleport 노드들이 이 포트("Auth API" 또는 "Cluster API")에 연결하여
		# 클라이언트 인증서를 검증합니다.
		listen_addr: 0.0.0.0:3025
		# 로드 밸런서 뒤에 위치한 인증 서버의 선택적 DNS 이름.
		public_addr: auth.example.com:3025
		# 클러스터에 새 노드를 추가하기 위한 사전 정의된 토큰. 각 토큰은 새 노드가 허용될 역할을 지정합니다.
		# 새 노드를 추가하는 더 안전한 방법은 자동 만료 토큰을 생성하기 위해 `tctl nodes add --ttl` 명령을 사용하는 것입니다.
		#
		# 32바이트 이상의 충분히 랜덤한 토큰을 생성하려면 `pwgen` 같은 도구를 사용하는 것을 권장합니다.
		tokens:
		    - "proxy,node:xxxxx"
		    - "auth:yyyy"
		# 세션 기록을 구성하는 선택적 설정. 가능한 값은 다음과 같습니다:
		#    "node"      : (기본값) 세션이 노드에서 기록되고 스토리지 서비스로 업로드된 후 주기적으로 정리됩니다.
		#    "node-sync" : 세션 기록이 노드 -> 인증 -> 스토리지 서비스로 스트리밍되며 디스크에 저장되지 않습니다.
		#    "proxy"     : 세션이 프록시에서 기록되고 스토리지 서비스로 업로드된 후 주기적으로 정리됩니다.
		#    "proxy-sync : 세션 기록이 프록시 -> 인증 -> 스토리지 서비스로 스트리밍되며 디스크에 저장되지 않습니다.
		#    "off"   : 세션 기록이 비활성화됩니다.
		#
		session_recording: "node"
		# Teleport 프록시가 엄격한 호스트 키 확인을 수행하는지 여부를 설정합니다.
		# session_recording=proxy인 경우에만 적용됩니다.
		proxy_checks_host_keys: yes
		# 클라이언트의 활동이 없어진 후 클러스터 리소스에 대한 세션이 강제로 종료되는지 여부를 결정합니다(유휴 클라이언트).
		# 예시: "30m", "1h", 또는 "1h30m"
		client_idle_timeout: never
		# 비활성 상태로 인해 클라이언트가 연결 해제될 때 사용자에게 전송되는 사용자 지정 메시지입니다.
		# 빈 문자열은 메시지가 전송되지 않음을 나타냅니다.
		# (현재 서버 액세스 연결에서만 지원됨)
		client_idle_timeout_message: ""
		# Web UI의 유휴 시간 제한을 설정합니다. 기본값은 10m입니다.
		web_idle_timeout: 10m
		# 활성 세션 중간에 클라이언트 인증서가 만료되면 클라이언트를 강제로 연결 해제할지 여부를 결정합니다(기본값은 'no').
		disconnect_expired_cert: no
		# Teleport가 클라이언트 및 역방향 터널 연결을 위해 keep-alive 메시지를 보내는 간격을 결정합니다.
		# 기본값은 5분(300초)으로, 일반적인 로드 밸런서 타임아웃인 350초보다 낮게 설정되어 있습니다.
		# keep_alive_count_max는 Teleport 클러스터가 클라이언트 또는 서비스와의 연결을 종료하기 전에
		# 누락된 keep-alive 메시지 수를 나타냅니다.
		keep_alive_interval: 5m
		keep_alive_count_max: 3
		# tsh ssh 및 Web UI를 통해 SSH 연결을 설정하는 데 사용되는 클러스터 전체 다이얼 타임아웃을 지정합니다.
		# 기본값인 30초는 대부분의 사용 사례에 충분해야 합니다. 그러나 대상 호스트에 도달하기 위해 여러 네트워크 홉이 필요한 경우
		# 다이얼 타임아웃 실패를 방지하기 위해 이 값을 필요에 따라 증가시킬 수 있습니다.
		ssh_dial_timeout: 30s
		# 엔터프라이즈 max_connections 및 max_sessions와 함께 사용되는 내부 세션 제어 타임아웃 클러스터 전체 값을 결정합니다.
		# 이 값을 변경할 필요는 거의 없습니다.
		# session_control_timeout: 2m
		# 노드에 연결하는 데 사용되는 라우팅 전략을 결정합니다. 'unambiguous_match'(기본값) 또는 'most_recent'일 수 있습니다.
		routing_strategy: unambiguous_match
		# 인증 서버와 함께 시작할 라이센스 파일. 이 설정은 Teleport Community Edition에서는 무시되며,
		# Teleport Pro, Business 및 Enterprise 구독 플랜에서만 필요합니다.
		#
		# 경로는 절대 경로나 구성된 `data_dir`에 상대적일 수 있으며 Teleport 다운로드 포털에서 얻은 라이센스 파일을 가리켜야 합니다.
		#
		# 설정되지 않은 경우 기본적으로 Teleport는 구성된 `data_dir`에서 `license.pem` 파일을 찾습니다.
		license_file: /var/lib/teleport/license.pem
		# 클러스터에 로그인하는 사용자에게 표시되는 배너 메시지를 구성하며, 사용자가 로그인하기 전에 이를 승인해야 합니다.
		# 로그인 전에 표시되므로 기밀 정보를 포함해서는 안 됩니다.
		# 기본값은 빈 문자열이며, 이는 메시지 또는 승인이 필요하지 않음을 의미합니다.
		message_of_the_day: ""
		# 클러스터가 TLS 라우팅 모드에서 실행 중인지 여부를 클라이언트에게 나타냅니다. 모든 프로토콜이 프록시의 web_listen_addr에서 멀티플렉싱됩니다.
		#
		# 가능한 값은 다음과 같습니다:
		#
		# "multiplex": 클라이언트가 TLS 라우팅 모드에서 Teleport 프록시의 웹 리스너에 연결합니다.
		# "separate":  클라이언트가 Teleport 프록시의 개별 리스너(tunnel_listen_addr, mysql_listen_addr 등)에 연결합니다.
		#
		proxy_listener_mode: multiplex
		tunnel_strategy:
		  # 가능한 터널 전략 유형:
		  #
		  # "agent_mesh": 기본 동작으로, 에이전트가 모든 Teleport 프록시 서비스 인스턴스에 연결합니다.
		  # "proxy_peering": 에이전트가 프록시 서비스 인스턴스 하위 집합에 연결하며,
		  #                  클라이언트는 프록시 서비스 인스턴스를 통해 엔드투엔드 연결을 위해 라우팅됩니다.
		  type: proxy_peering
		  # 에이전트가 생성하려고 시도하는 역방향 터널 연결 수입니다. 이 필드는 "proxy_peering" 터널 전략 유형을 사용할 때만 사용할 수 있습니다.
		  # 고가용성을 위해 이 값을 2 이상으로 설정하는 것을 권장합니다.
		  agent_connection_count: 1
		load_all_cas: false
		case_insensitive_routing: false
		access_monitoring:
		  enabled: yes
		  role_arn: arn:aws:iam::123456789012:role/AccessMonitoringRole
		  report_results: s3://audit-long-term/report_results
		  workgroup: access_monitoring_workgroup

추가 자료:

  • Storage Backends 참조: DynamoDB, S3, etcd 및 기타 고가용성 백엔드 구성에 대한 안내입니다.
  • Passwordless: passwordless 인증 옵션에 대한 추가 정보.
  • Headless WebAuthn: headless 인증 옵션.
  • Single Sign-On: Teleport이 특정 SSO 인증 커넥터를 사용하도록 구성할 수 있도록 SSO 구성하기.
  • Locking: locking_mode 옵션 구성하기.
  • Device Trust: device_trust 섹션 구성하기.
  • Recording Proxy Mode: Recording Proxy Mode를 구성하는 경우, proxy_checks_host_keys 를 활성화하는 것을 고려하십시오.

SSH Service

이 설정은 Teleport SSH Service에 적용됩니다:

ssh_service:
    # 'ssh' 역할을 활성화합니다. 기본값은 'yes'입니다.
    enabled: yes

    # SSH 서비스가 바인딩할 IP와 포트를 설정합니다.
    listen_addr: 0.0.0.0:3022

    # SSH 서비스의 선택적 공개 주소입니다. 관리자가 Teleport 프록시를 우회하여
    # 사용자가 노드에 직접 연결하도록 허용하려는 경우 유용합니다.
    public_addr: node.example.com:3022

    labels:
        role: leader
        type: postgres

    # 주기적으로 실행할 명령어 목록입니다. 명령어 출력은 노드 레이블로 사용됩니다.
    commands:
    # 이 명령어는 노드에 'arch=x86_64' 레이블을 추가합니다.
    - name: arch
      command: ['/bin/uname', '-p']
      period: 1h0m0s

    # 세션 생성 전에 서버에서 ~/.tsh/environment를 읽는 기능을 활성화합니다.
    # 기본적으로 비활성화되어 있습니다. 여기에서 활성화하거나 `--permit-user-env` 플래그를 통해 활성화할 수 있습니다.
    permit_user_env: false

    # 이 SSH 노드에서 호스트 사용자를 자동으로 생성하는 기능을 비활성화합니다.
    # 기본값은 false입니다.
    disable_create_host_user: true

    # 향상된 세션 기록 기능
    enhanced_recording:
       # 이 노드에 대해 향상된 감사 기능을 활성화하거나 비활성화합니다. 기본값은 false입니다.
       enabled: false

       # command_buffer_size는 선택 사항이며 기본값은 8 페이지입니다.
       command_buffer_size: 8

       # disk_buffer_size는 선택 사항이며 기본값은 128 페이지입니다.
       disk_buffer_size: 128

       # network_buffer_size는 선택 사항이며 기본값은 8 페이지입니다.
       network_buffer_size: 8

       # cgroupv2 계층이 마운트되는 위치를 제어합니다. 기본

추가 자료:

Kubernetes Service

이 설정은 Teleport Kubernetes Service에 적용됩니다:

kubernetes_service:
    enabled: "yes"
    # 선택적 Public & Listen Addr: 만약 리버스 터널을 사용하는 대신
    # Kubernetes 클러스터 내부에서 실행 중인 Teleport에 연결하려면 이를 설정하세요.
    #
    # 선택적 Public Addr
    public_addr: [k8s.example.com:3026]
    # 선택적 Listen Addr
    listen_addr: 0.0.0.0:3026
    # 선택적 kubeconfig_file 및 kube_cluster_name: 이 중 하나만 반드시 설정해야 합니다.
    #
    # Teleport가 Kubernetes 클러스터 외부에서 실행 중이라면,
    # kubeconfig_file을 사용하여 Teleport에 클러스터 자격 증명을 제공하세요.
    #
    # Teleport가 Kubernetes 클러스터의 pod 내부에서 실행 중이라면,
    # kube_cluster_name을 사용하여 사용자에게 표시되는 이름을 제공하세요. Teleport는 pod 서비스 계정 자격 증명을 사용하여 로컬 Kubernetes API에 인증합니다.
    kubeconfig_file: /secrets/kubeconfig
    kube_cluster_name:
    # "tctl create" 명령 또는 Kubernetes 자동 검색으로 생성된 동적 Kubernetes 클러스터 리소스에 대한 매처입니다.
    # 'discovery_service'에 의해 리소스가 생성된 경우, 'kubernetes_service'는 필요한 권한을 가져야 합니다.
    resources:
    - labels:
        "*": "*"
      # 선택적 AWS 역할: Teleport Kubernetes Service가 EKS 클러스터에 접근하기 위해 가정할 역할입니다.
      aws:
        assume_role_arn: "arn:aws:iam::123456789012:role/example-role-name"
        external_id: "example-external-id"
    # 선택적 라벨: RBAC 규칙과 결합하여 애플리케이션 접근을 제한하는 데 사용할 수 있습니다.
    # 위의 kubeconfig_file을 사용하는 경우, 이러한 라벨은 kubeconfig에 지정된 모든 Kubernetes 클러스터에 적용됩니다.
    labels:
      env: "prod"
    # 선택적 동적 라벨
    commands:
    - name: "os"
       command: ["/usr/bin/uname"]
       period: "5s"
    # GKE에서 클러스터 이름 가져오기.
    - name: cluster-name
      command: 
        - 'curl'
        - 'http://metadata.google.internal/computeMetadata

Application Service

이 설정은 Teleport Application Service에 적용됩니다:

app_service:
    # 'app' 역할을 활성화합니다. 기본값은 'no'입니다.
    enabled: yes
    # Teleport에는 작은 디버그 앱이 포함되어 있습니다. 이를 사용하여 
    # 애플리케이션 서비스가 제대로 작동하는지 확인할 수 있습니다. 
    # 디버그 앱은 JWT를 출력하므로 애플리케이션을 확장할 때 유용할 수 있습니다.
    debug_app: true

    # 동적 애플리케이션 리소스를 위한 매처
    #
    # 모든 애플리케이션 리소스에는 미리 정의된 "teleport.dev/origin" 레이블이 있으며,
    # 다음 값 중 하나를 가질 수 있습니다:
    # "dynamic": `tctl` 또는 Teleport Terraform provider와 같은 인증 서비스 API 클라이언트를 통해 생성된 애플리케이션 리소스
    # "config": 아래의 "apps" 배열에 정의된 애플리케이션 리소스
    resources:
      - labels:
          "*": "*"

    apps:
    - name: "kubernetes-dashboard"
      # 선택 사항: 클라우드 제공자 API에 액세스하려면 클라우드 제공자를 지정하세요.
      # 허용되는 값은 "AWS", "Azure", "GCP"입니다.
      cloud: ""
      # 선택 사항: 애플리케이션에 대한 자유 형식의 설명입니다.
      description: "개발 클러스터용 Kubernetes Dashboard"
      # 애플리케이션의 URI. TCP 애플리케이션의 경우 tcp를 사용하세요, 예: tcp://localhost:5432.
      uri: "http://10.0.1.27:8000"
      # TLS 검증을 생략할지 여부를 선택합니다. 기본값은 false입니다.
      # insecure_skip_verify: true
      # 선택 사항: 공개 주소
      public_addr: "example.com"
      # 선택 사항: RBAC 규칙과 결합하여 애플리케이션 액세스를 제한하는 데 사용할 수 있는 레이블입니다.
      labels:
         env: "prod"

      # 선택 사항: 이 앱이 정상적으로 작동하기 위해 세션이 필요한 Teleport 애플리케이션 이름 목록입니다.
      # 이 앱을 실행할 때 여기에 나열된 모든 앱도 실행되며 세션이 생성됩니다.
      # 이러한 세션은 각각의 RBAC 정책을 따릅니다.
      # required_apps:
      #   - "my-api"
      #   - "prod-database"
      #   # 필요한 다른 앱 이름을 추가하세요.

      # 선택 사항: CORS 정책은 사전 요청(preflight request)에만 사용됩니다. 
      # 각 라우트의 포함된 앱의 CORS 정책을 덮어쓰지는 않으며, Teleport가 인증되지 않은 OPTION 요청에 응답하는 데 사용됩니다.
      cors:
        # 교차 출처 요청을 허용하는 원본을 지정합니다.
        allowed_origins:
          - "https://example.com"
          - "https://app.example.com"
        # 리소스에 액세스할 때 허용되는 HTTP 메서드입니다.
        allowed_methods:
          - "GET"
          - "POST"
          - "PUT"
          - "DELETE"
          - "OPTIONS"
        # 실제 요청에서 사용할 수 있는 HTTP 헤더입니다.
        allowed_headers:
          - "Content-Type"
          - "Authorization"
          - "X-Custom-Header"
        # 브라우저에서 액세스할 수 있는 헤더입니다.
        exposed_headers:
          - "Content-Type"
          - "X-Custom-Response-Header"
        # 요청에 자격 증명을 포함할 수 있는지 여부를 나타냅니다.
        allow_credentials: true
        # 사전 요청(preflight request)의 결과를 캐시할 수 있는 기간(초)입니다.
        max_age: 3600

      # 선택 사항: 동적 레이블
      commands:
      - name: "os"
        command: ["/usr/bin/uname"]
        period: "5s"

      ## 선택 사항: 요청 및 응답에 적용할 재작성 규칙 목록
      rewrite:
        ## 선택 사항: Location 헤더 간단 재작성
        ## 리디렉션 응답에서 호스트를 이 애플리케이션의 공개 주소로 대체하여 
        ## 'Location' 헤더를 재작성합니다.
        redirect:
          - "localhost"
          - "jenkins.internal.dev"

        ## 선택 사항: 요청에 추가 헤더를 삽입합니다.
        headers:
          For example:
          - "Host: jenkins.example.com"

        ## 선택 사항: JWT 토큰의 일부를 제거하도록 재작성합니다.
        ## 세 가지 옵션 중 하나일 수 있습니다:
        ## - roles-and-traits: JWT 토큰에 역할과 특성을 모두 포함합니다.
        ## - roles: JWT 토큰에 역할만 포함합니다.
        ## - traits: JWT 토큰에 특성만 포함합니다.
        ## - none: JWT 토큰에 역할이나 특성을 포함하지 않습니다.
        ## 기본값은 roles-and-traits입니다.
        jwt_claims: roles-and-traits

Database Service

이 설정은 Teleport Database Service에 적용됩니다:

db_service:
  # 데이터베이스 서비스를 활성화합니다.
  enabled: "yes"

  # "tctl create" 명령이나 디스커버리 서비스를 통해 생성된 데이터베이스 리소스에 대한 매처입니다.
  resources:
  - labels:
      "*": "*"
    # 데이터베이스에 접근하기 위해 데이터베이스 서비스가 사용할 AWS 역할 (선택 사항).
    aws:
      assume_role_arn: "arn:aws:iam::123456789012:role/example-role-name"
      external_id: "example-external-id"

  # AWS에 호스팅된 데이터베이스를 등록하기 위한 매처입니다.
  aws:
    # 데이터베이스 유형. 유효한 옵션은 다음과 같습니다:
    # 'rds' - Amazon RDS 및 Aurora 데이터베이스를 검색하고 등록합니다.
    # 'rdsproxy' - Amazon RDS Proxy 데이터베이스를 검색하고 등록합니다.
    # 'redshift' - Amazon Redshift 데이터베이스를 검색하고 등록합니다.
    # 'redshift-serverless' - Amazon Redshift Serverless 데이터베이스를 검색하고 등록합니다.
    # 'elasticache' - Amazon ElastiCache Redis 데이터베이스를 검색하고 등록합니다.
    # 'memorydb' - Amazon MemoryDB Redis 데이터베이스를 검색하고 등록합니다.
    # 'opensearch' - Amazon OpenSearch 데이터베이스를 검색하고 등록합니다.
    # 'docdb' - Amazon DocumentDB 데이터베이스를 검색하고 등록합니다.
  - types: ["rds", "rdsproxy", "redshift", "redshift-serverless", "elasticache", "memorydb", "opensearch"]
    # 데이터베이스를 등록할 AWS 지역입니다.
    regions: ["us-west-1", "us-east-2"]
    # AWS에 호스팅된 데이터베이스를 검색 및 등록하기 위해 데이터베이스 서비스가 사용할 AWS 역할 (선택 사항).
    # 발견된 데이터베이스는 이 역할을 통해서도 데이터베이스 서비스가 접근합니다.
    assume_role_arn: "arn:aws:iam::123456789012:role/example-role-name"
    # 외부 AWS 계정에서 역할을 맡기 위해 데이터베이스 서비스가 사용할 외부 ID (선택 사항).
    external_id: "example-external-id"
    # 데이터베이스를 등록할 때 일치시킬 AWS 리소스 태그입니다.
    tags:
      "*": "*"

  # Azure에 호스팅된 데이터베이스를 등록하기 위한 매처입니다.
  azure:
    # 데이터베이스 유형. 유효한 옵션은 다음과 같습니다:
    # 'mysql' - Azure MySQL 데이터베이스를 검색하고 등록합니다.
    # 'postgres' - Azure PostgreSQL 데이터베이스를 검색하고 등록합니다.
    # 'redis' - Azure Cache for Redis 데이터베이스를 검색하고 등록합니다.
    # 'sqlserver' - Azure SQL Server 데이터베이스를 검색하고 등록합니다.
  - types: ["mysql", "postgres", "redis", "sqlserver"]
    # Azure 지역에서 데이터를 등록할 지역. 유효한 옵션은 다음과 같습니다:
    # '*' - 모든 지역에서 데이터를 검색 (기본값).
    # 유효한 Azure 지역 이름. Azure CLI에서 모든 유효한 지역을 나열할 수 있습니다: `az account list-locations -o table`
    regions: ["eastus", "westus"]
    # Azure 구독 ID에서 데이터를 등록할 구독 ID. 유효한 옵션은 다음과 같습니다:
    # '*' - 모든 구독에서 데이터를 검색 (기본값).
    subscriptions: ["11111111-2222-3333-4444-555555555555"]
    # Azure 리소스 그룹에서 데이터를 등록할 리소스 그룹. 유효한 옵션은 다음과 같습니다:
    # '*' - 구성된 구독 내 모든 리소스 그룹에서 데이터를 검색 (기본값).
    resource_groups: ["group1", "group2"]
    # Azure 리소스를 등록할 때 일치시킬 태그입니다.
    tags:
      "*": "*"

  # 이 에이전트가 프록시하는 정적으로 등록된 데이터베이스 목록입니다.
  databases:
    # CLI에서 참조할 수 있는 데이터베이스 프록시 인스턴스 이름입니다.
  - name: "prod"

    # 데이터베이스 프록시 인스턴스에 대한 자유 형식 설명입니다.
    description: "Production database"

    # 데이터베이스 프로토콜. 유효한 옵션은 다음과 같습니다:
    # "cassandra"
    # "clickhouse"
    # "clickhouse-http"
    # "cockroachdb"
    # "dynamodb"
    # "elasticsearch"
    # "mongodb"
    # "mysql"
    # "oracle"
    # "postgres"
    # "redis"
    # "snowflake"
    # "spanner"
    # "sqlserver"
    protocol: "postgres"

    # 데이터베이스 연결 엔드포인트. Database Service에서 접근 가능해야 합니다.
    uri: "postgres.example.com:5432"

    # 선택적 TLS 구성입니다.
    tls:
      # TLS 검증 모드. 유효한 옵션은 다음과 같습니다:
      # 'verify-full' - 전체 인증서 검증 수행 (기본값).
      # 'verify-ca' - `verify-full`과 동일하지만 서버 이름 검증을 생략합니다.
      # 'insecure' - 제공된 모든 인증서를 허용 (권장하지 않음).
      mode: verify-full
      # 선택적 데이터베이스 DNS 서버 이름. 연결 시 클라이언트 인증서의 DNS 이름을 재정의할 수 있습니다.
      server_name: db.example.com
      ca_cert_file: /path/to/pem
      trust_system_cert_pool: false

		# MySQL 전용 옵션.
		mysql:
		  # Teleport Proxy에서 보고하는 기본 MySQL 서버 버전.
		  # 이 옵션이 설정되면 Database Agent는 MySQL 서버 버전을 확인하려고 시도하지 않습니다.
		  server_version: 8.0.28
		
		# 자동 사용자 프로비저닝을 위한 선택적 관리자 사용자 구성.
		admin_user:
		  # 관리자 사용자 이름.
		  name: "teleport-admin"
		  # 관리자 사용자가 로그인하는 기본 데이터베이스 (선택 사항). 기본값은 개별 가이드를 참조하세요.
		  default_database: "teleport"
		
		# AWS에 호스팅된 데이터베이스를 위한 선택적 AWS 구성. AWS 지역 및 서비스별 구성은 보통 엔드포인트에서 자동으로 감지됩니다.
		aws:
		  # 데이터베이스가 배포된 지역.
		  region: "us-east-1"
		  # 이 데이터베이스에 접근하기 위해 Database Service가 사용할 선택적 AWS 역할.
		  assume_role_arn: "arn:aws:iam::123456789012:role/example-role-name"
		  # 외부 AWS 계정에서 역할을 맡기 위해 Database Service가 사용할 선택적 외부 ID.
		  external_id: "example-external-id"
		
		  # Redshift 전용 구성.
		  redshift:
		    # Redshift 클러스터 식별자.
		    cluster_id: "redshift-cluster-1"
		
		  # RDS 전용 구성.
		  rds:
		    # RDS 인스턴스 식별자.
		    instance_id: "rds-instance-1"
		    # RDS Aurora 클러스터 식별자.
		    cluster_id: "aurora-cluster-1"
		
		  # ElastiCache 전용 구성.
		  elasticache:
		    # ElastiCache 복제 그룹 식별자.
		    replication_group_id: "elasticache-replication-group-1"
		
		  # MemoryDB 전용 구성.
		  memorydb:
		    # MemoryDB 클러스터 이름.
		    cluster_name: "memorydb-cluster-1"
		
		  # ElastiCache 또는 MemoryDB 사용자를 관리하기 위한 선택적 AWS Secrets Manager 구성.
		  #
		  # 중요: 동일한 Teleport 관리 사용자를 공유하는 데이터베이스는 동일한 secret_store 구성을 가져야 합니다. 
		  # 이 구성은 고가용성(HA) 모드의 모든 Database Service에서도 일관성이 있어야 합니다.
		  secret_store:
		    # 서비스에서 생성된 모든 비밀의 접두사. 기본값은 'teleport/'입니다.
		    key_prefix: "teleport/"
		    # 비밀 암호화 및 설명에 사용되는 KMS 키 ID. 지정하지 않으면 Secrets Manager는 기본적으로 AWS 관리 키 'aws/secretsmanager'를 사용합니다.
		    kms_key_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
		
		  # DynamoDB 액세스를 위한 IAM 역할을 맡을 때 사용되는 선택적 세션 태그.
		  session_tags:
		    dynamodb_table_name: "table-a"
		
		# GCP Cloud SQL 및 Spanner 데이터베이스를 위한 GCP 전용 구성.
		gcp:
		  # GCP 프로젝트 ID.
		  project_id: "xxx-1234"
		  # Cloud SQL 인스턴스 ID.
		  instance_id: "example"
		
		# 예를 들어 SQL Server를 위한 Active Directory 인증에 특정한 설정입니다.
		ad:
		  # Kerberos keytab 파일 경로.
		  keytab_file: /path/to/keytab
		  # Active Directory 도메인 이름.
		  domain: EXAMPLE.COM
		  # Kerberos 티켓을 얻기 위한 Service Principal Name(SPN).
		  spn: MSSQLSvc/ec2amaz-4kn05du.dbadir.teleportdemo.net:1433
		  # Kerberos 구성 파일의 선택적 경로. 기본값은 /etc/krb5.conf입니다.
		  krb5_file: /etc/krb5.conf
		
		# Azure에 호스팅된 데이터베이스를 위한 선택적 구성입니다.
		azure:
		  # Azure 유연 서버를 사용하는 경우 is_flexi_server를 true로 설정합니다.
		  is_flexi_server: false
		  # Azure에서 데이터베이스의 리소스 ID. 이 필드는 Azure Cache for Redis 데이터베이스에 필요합니다.
		  resource_id: "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/example-group/providers/Microsoft.Cache/Redis/example-db-name"
		
		# 데이터베이스에 할당할 정적 레이블입니다. RBAC에서 사용됩니다.
		static_labels:
		  env: "prod"
		
		# 동적 레이블("명령"). RBAC에서 사용됩니다.
		dynamic_labels:
		- name: "hostname"
		  command: ["hostname"]
		  period: 1m0s

Discovery Service

이 설정은 Teleport Discovery Service에 적용됩니다:

discovery_service:
    enabled: "yes"
    # discovery_group는 발견된 리소스를 서로 다른 세트로 그룹화하는 데 사용됩니다.
    # 여러 Teleport Discovery 서비스를 실행할 때 필요합니다.
    # 발견된 서비스가 Teleport에서 발견된 리소스를 관리할 때 충돌하지 않도록 방지합니다.
    # 두 Discovery 서비스가 동일한 리소스를 매칭하면, 동일한 discovery_group에 있어야 합니다.
    # 두 Discovery 서비스가 서로 다른 리소스를 매칭하면, 서로 다른 discovery_group에 있어야 합니다.
    discovery_group: "disc-group"
    # poll_interval은 discovery 서버가 각 discovery 주기를 실행하는 빈도입니다.
    # 기본값은 5분(5m)입니다.
    poll_interval: 5m
    # AWS에서 호스팅된 리소스를 발견하기 위한 매처(Matchers).
    aws:
      # Teleport 클러스터에 등록할 AWS 리소스 유형들.
      # 유효한 옵션은 다음과 같습니다:
      # 'ec2' - Amazon EC2 인스턴스.
      # 'eks' - Amazon EKS 클러스터.
      # 'rds' - Amazon RDS 및 Aurora 데이터베이스.
      # 'rdsproxy' - Amazon RDS Proxy 데이터베이스.
      # 'redshift' - Amazon Redshift 데이터베이스.
      # 'redshift-serverless' - Amazon Redshift Serverless 데이터베이스.
      # 'elasticache' - Amazon ElastiCache Redis 데이터베이스.
      # 'memorydb' - Amazon MemoryDB Redis 데이터베이스.
      # 'opensearch' - Amazon OpenSearch Redis 데이터베이스.
    - types: ["ec2"]
      # 검색할 AWS 리소스의 지역들
      regions: ["us-east-1","us-west-1"]
      # 리소스를 등록할 때 매칭할 선택적 AWS 리소스 태그
      # 기본값은 모든 리소스를 매칭하는 와일드카드 선택자: "*":"*"
      tags:
        "*": "*"
      # Discovery Service가 AWS에서 호스팅된 데이터베이스와 EKS 클러스터를 발견하고 등록하기 위해 가정할 선택적 AWS 역할
      assume_role_arn: "arn:aws:iam::123456789012:role/example-role-name"
      # 외부 AWS 계정에서 역할을 가정하기 위해 Discovery Service가 사용할 선택적 AWS 외부 ID
      external_id: "example-external-id"
      # 선택적 섹션: install은 AWS SSM 문서에 대한 매개변수를 제공하는 데 사용됩니다.
      # install 섹션이 제공되지 않으면 아래 기본값이 사용됩니다.
      # EC2 발견에만 적용됩니다.
      install:
        join_params:
          # token_name은 사용할 Teleport 초대 토큰 이름입니다.
          # 선택 사항이며 기본값은 "aws-discovery-iam-token"입니다.
          token_name:  "aws-discovery-iam-token"
        # script_name은 사용할 Teleport 설치 스크립트 이름입니다.
        # 선택 사항이며 기본값은 "default-installer"입니다.
        script_name: "default-installer"
      # 선택적 섹션: ssm은 사용할 AWS SSM 문서를 구성하는 데 사용됩니다.
      # ssm 섹션이 제공되지 않으면 아래 기본값이 사용됩니다.
      ssm:
        # document_name은 매칭되는 노드에 Teleport를 설치할 때 실행해야 하는 SSM 문서 이름입니다.
        # 선택 사항이며 기본값은 "TeleportDiscoveryInstaller"입니다.
        document_name: "TeleportDiscoveryInstaller"
      # Discovery Service가 EKS 액세스 항목을 생성해야 하는 역할(선택 사항).
      # 설정되지 않은 경우 Discovery Service는 자신의 ID를 사용하여 액세스 항목을 생성하려고 시도합니다.
      setup_access_for_arn: arn:aws:iam::123456789012:role/kube-service-role
    azure:
      # Azure 리소스 유형. 유효한 옵션은 다음과 같습니다:
      # 'aks' - Azure AKS Kubernetes 클러스터를 발견하고 등록합니다.
      # 'vm' - Azure 가상 머신을 발견하고 등록합니다.
      regions: ["eastus", "westus"]

Windows Desktop Service

이 설정은 Windows Desktop Service에 적용됩니다:

windows_desktop_service:
  enabled: yes
  # windows_desktop_service가 수신 대기할 주소입니다.
  listen_addr: "0.0.0.0:3028"
  # (선택 사항) windows_desktop_service가 Teleport의 나머지 부분에 광고할 주소입니다.
  # 사용자는 프록시의 웹 UI를 통해 연결하며, proxy_service만 windows_desktop_service에 연결해야 합니다.
  public_addr: "desktop-access.example.com:3028"
  # (선택 사항) 데스크톱 세션에서 사용자가 선택한 배경화면을 표시할지 여부를 결정합니다.
  # 시스템 기본값인 단색 배경화면을 사용하는 경우 성능이 개선됩니다.
  # 기본값은 false입니다.
  show_desktop_wallpaper: false
  # (선택 사항) Teleport를 Active Directory 도메인에 연결할 때 사용하는 LDAP 설정 키입니다.
  # 이를 통해 Teleport 액세스가 구성된 Active Directory 도메인에 속한 Windows 데스크톱을 검색하는 서비스를 활성화합니다.
  ldap:
    # 안전한 LDAP 연결을 위한 LDAP 서버 주소입니다.
    # 일반적으로 이 주소는 포트 636을 사용하며, 예: ldap.example.com:636과 같습니다.
    # 최상의 결과를 위해 단일 도메인 컨트롤러 대신 고가용성 엔드포인트를 지정해야 합니다.
    addr: '$LDAP_SERVER_ADDRESS'
    # 선택 사항: LDAP 서버 인증서를 검증할 때 사용할 서버 이름입니다.
    # addr이 IP 주소지만 서버가 다른 호스트 이름으로 인증서를 제공하는 경우 유용합니다.
    server_name: '$LDAP_SERVER_NAME'
    # LDAPS 인증서 검증을 건너뛸 수 있습니다. 이 값을 true로 설정하면 됩니다.
    # 그러나 이 값을 false로 설정하고 인증서를 시스템의 신뢰 저장소에 추가하거나
    # ldap_ca_cert 변수를 사용하여 PEM 형식 인증서를 제공하는 것이 권장됩니다.
    # der_ca_file을 사용하여 파일 경로를 제공할 수도 있지만, 이 동작은 더 이상 권장되지 않습니다.
    insecure_skip_verify: false
    # PEM 형식의 LDAP CA 인증서입니다.
    ldap_ca_cert: |
      -----BEGIN CERTIFICATE-----
          *certificate data*
      -----END CERTIFICATE-----
    # DER 형식의 LDAP CA 인증서입니다.
    # 더 이상 권장되지 않으므로 ldap_ca_cert를 대신 사용하는 것이 좋습니다.
    der_ca_file: /path/to/cert
    # 연결하려는 Active Directory 도메인 이름입니다.
    domain: '$LDAP_DOMAIN_NAME'
    # 인증에 사용할 LDAP 사용자 이름입니다. 이 사용자 이름에는 도메인 NetBIOS 이름이 포함되어야 합니다.
    #
    # 예를 들어, 도메인이 "example.com"인 경우 NetBIOS 이름은 "EXAMPLE"일 가능성이 높습니다.
    # "svc-teleport" 사용자로 연결하려면 형식은 "EXAMPLE\svc-teleport"이어야 합니다.
    username: '$LDAP_USERNAME'
    # 위 username 필드에 지정된 서비스 계정의 보안 식별자(SID)입니다. SID는 "S-"로 시작하는 문자열처럼 보입니다.
    #
    # PowerShell에서 다음 명령어를 실행하여 AD 사용자 객체를 읽을 권한이 있는 모든 AD 사용자가 값을 얻을 수 있습니다:
    #
    # ```
    # Get-AdUser -Identity $LDAP_USERNAME | Select SID
    # ```
    #
    # LDAP를 통해 값을 얻으려면 필터 = (&(objectCategory=person)(objectClass=user)(sAMAccountName=$LDAP_USERNAME))로 쿼리를 구성하고
    # 요청 속성 = objectSid로 설정하면 됩니다.
    sid: '$LDAP_USER_SID'

  # (선택 사항) AD 지원이 사용되는 경우, Teleport가 PKI 작업에 사용하는 도메인을 재정의할 수 있습니다.
  # 비워두면 ldap 섹션에서 지정된 도메인이 사용됩니다. 이는 PKI가 루트 도메인에 구성되었지만,
  # Teleport가 하위 도메인에서 사용자와 컴퓨터에 대한 액세스를 제공하는 경우 유용합니다.
  pki_domain: root.example.com

  # (선택 사항) Kerberos Key Distribution Center(KDC)의 주소를 구성합니다. 이는 RDP 네트워크 수준 인증(NLA)을 지원하는 데 사용됩니다.
  # 비워두면 LDAP 주소가 대신 사용됩니다.
  #
  # 예시: kdc.example.com:88
  # 포트는 선택 사항이며 지정하지 않으면 기본적으로 포트 88이 사용됩니다.
  #
  # 참고: NLA는 Active Directory 환경에서만 지원되며, 로컬 Windows 사용자로 데스크톱에 연결할 때는 효과가 없습니다.
  kdc_address: '$KDC_SERVER_ADDRESS'

  # (선택 사항) static_hosts는 Teleport에서 WindowsDesktop 객체로 등록할 호스트 목록입니다.
  # 호스트 이름과 레이블을 직접 정의할 수 있습니다.
  static_hosts:
  - name: example1
    ad: false
    addr: win1.dev.example.com
    labels:
      datacenter: dc1
  - ad: true
    addr: win2.dev.example.com # 주소 기반으로 이름이 생성됩니다
    labels:
      controller: all

  # (선택 사항) LDAP를 통한 자동 데스크톱 검색 활성화를 위한 설정입니다.
  discovery:
    # 와일드카드 '*' 문자는 Active Directory 도메인의 모든 호스트를 검색하도록 Teleport에 지시합니다.
    # 검색 범위를 좁히려면 사용자 지정 DN을 지정하세요. 자동 검색을 비활성화하려면 이 필드를 비워두세요.
    base_dn: '*'
    # (선택 사항) LDAP 검색을 더욱 맞춤화하기 위한 LDAP 필터입니다.
    filters:
    - '(location=Oakland)'
    - '(!(primaryGroupID=516))' # 도메인 컨트롤러 제외
    # (선택 사항) Teleport 레이블로 변환될 LDAP 속성입니다.
    label_attributes:
    - location

  host_labels:
  - match: '^.*\.dev\.example\.com'
    labels:
      environment: dev
  - match: '^.*\.prod\.example\.com'
    labels:
      environment: prod
  - match: '^EC2AMAZ-'
    labels:
      environment: discovered-in-aws

  labels:
   teleport.internal/resource-id: "resource-id"

Jamf Service

이 설정은 Jamf Service에 적용됩니다:

# Jamf 서비스 설정 섹션입니다.
jamf_service:
  # Jamf 서비스를 활성화합니다. 기본값은 'no'입니다.
  enabled: yes

  # 서비스에 해당하는 동기화 소스 이름입니다.
  # 동일한 이름을 가진 Jamf 서비스 소스는 동일한 장치를 관리하며, 이는 특히 장치 제거 시에 중요합니다.
  # 여러 Jamf 소스를 사용하는 경우, 서로 구분이 가능한 설명적인 이름을 지정해야 합니다.
  # 기본값은 'jamf'입니다.
  name: jamf

  # Jamf Pro API의 API 엔드포인트입니다.
  # 필수 항목입니다.
  api_endpoint: https://yourtenant.jamfcloud.com

  # Jamf Pro API의 사용자 이름입니다.
  # client_id와 client_secret_file 사용을 권장합니다.
  # username+password와 client_id+client_secret이 모두 설정된 경우, 후자가 사용됩니다.
  username: teleport

  # Jamf Pro API 비밀번호가 포함된 파일 경로입니다.
  # 파일의 권한을 가능한 한 제한적으로 설정하는 것이 좋습니다.
  # client_id와 client_secret_file 사용을 권장합니다.
  # username+password와 client_id+client_secret이 모두 설정된 경우, 후자가 사용됩니다.
  password_file: /var/lib/teleport/jamf_password.txt

  # Jamf Pro API의 Client ID입니다.
  # 자세한 내용은 https://developer.jamf.com/jamf-pro/docs/client-credentials를 참조하세요.
  client_id: your-client-id

  # Jamf Pro API의 Client Secret이 포함된 파일 경로입니다.
  # 파일의 권한을 가능한 한 제한적으로 설정하는 것이 좋습니다.
  # 자세한 내용은 https://developer.jamf.com/jamf-pro/docs/client-credentials를 참조하세요.
  client_secret_file: /var/lib/teleport/jamf_client_secret.txt

  # 초기 동기화 지연 시간입니다.
  # 동기화를 짧은 랜덤 지연(최대 몇 분) 후에 시작하려면 '0'으로 설정합니다.
  # 시작 시 즉시 동기화를 수행하려면 '-1'로 설정합니다.
  # 기본값은 '0'입니다.
  sync_delay: 0

  # `true`로 설정하면 Teleport 프로세스가 모든 Jamf 동기화를 즉시 실행하고 완료되면 종료됩니다. `sync_delay=-1`를 암시합니다.
  # Jamf 동기화를 크론(cron)과 같은 방식으로 실행할 때 유용합니다.
  # 기본값은 `false`입니다.
  exit_on_sync: false

  # 인벤토리 동기화 항목입니다.
  # 각 항목은 자체 동기화 일정에 해당하며 서로 다른 필터 및 간격을 가질 수 있습니다.
  # 인벤토리 섹션이 없으면 미리 설정된 동기화 구성이 사용됩니다.
  inventory:
    # 부분 동기화 주기입니다.
    # 부분 동기화는 새 장치 및 수정된 장치를 가져오려고 시도하지만 전체 Jamf 인벤토리를 스캔하지 않습니다.
    # '0' 또는 '-1'로 설정하여 부분 동기화를 비활성화할 수 있습니다.
    - sync_period_partial: 6h

    # 전체 동기화 주기입니다.
    # 전체 동기화는 전체 Jamf 인벤토리를 스캔하여 새/수정된 장치 및 Jamf에서 제거된 장치를 처리합니다.
    # '0' 또는 '-1'로 설정하여 전체 동기화를 비활성화할 수 있습니다.
    sync_period_full: 24h

    # Jamf에는 없지만 Teleport에 존재하는 장치에 대해 수행할 작업입니다.
    # 유효한 옵션은 다음과 같습니다:
    # 'DELETE' - Jamf에서 제거된 장치를 Teleport에서도 제거합니다. (전체 동기화 필요)
    # 'NOOP' - Jamf에서 제거된 장치를 Teleport에 그대로 둡니다. 
    # 기본값은 'NOOP'입니다.
    on_missing: NOOP

    # Jamf Pro API 쿼리에 전달되는 장치 필터입니다. 
    # 가능한 필터 값은 https://developer.jamf.com/jamf-pro/reference/get_v1-computers-inventory를 참조하세요. 
    # 기본값은 ''입니다. 
    filter_rsql: ''

    # 인벤토리 쿼리의 사용자 지정 페이지 크기입니다. 
    # 페이지 길이로 인해 Jamf 읽기가 실패하는 경우 유용하지만, 그렇지 않은 경우 그대로 두는 것이 좋습니다. 
    # 누락되거나 음수로 설정된 경우 서버 기본값이 사용됩니다. 
    page_size: 0

Debug Service

이 설정은 Debug Service에 적용됩니다:

# 이 설정은 디버그 서비스에 적용됩니다:
debug_service:
    enabled: true

Configuration versions

기존 구성의 파손을 방지하기 위해 Teleport의 구성은 버전 관리됩니다. 새로운 구성 버전은 v3 입니다. 구성 파일에 version 이 지정되지 않은 경우, v1 이 기본값으로 설정됩니다.

일부 새로운 Teleport 기능은 사용자가 명시적으로 구성 업그레이드를 선택해야 사용할 수 있습니다.

Config v1

v1 은 Teleport 파일 구성의 원래 버전입니다. 오늘날에도 여전히 지원되지만, 대부분의 새로운 사용자는 최신 구성 버전으로 시작해야 합니다.

Config v2

구성 버전 v2 는 Teleport 8에서 Teleport의 TLS 라우팅 기능의 일환으로 도입되었습니다. TLS 라우팅을 통해 Teleport의 프록시는 단일 포트에서 수신 대기하며, ALPN 및 SNI를 사용하여 들어오는 트래픽을 올바른 Teleport 서비스로 라우팅합니다. 여러 프로토콜 전용 포트에서 수신 대기하는 대신입니다.

하위 호환성을 위해 구성 버전 v1 은 항상 이러한 프로토콜 전용 포트에서 수신 대기합니다. Teleport가 구성 버전 v2 를 사용하는 경우, 개별 프로토콜 전용 포트는 명시적으로 설정되지 않는 한 열리지 않습니다.

Config v3

구성 버전 v3 는 Teleport 11과 함께 도입되었습니다. 버전 3에서는 auth_servers 필드가 더 이상 지원되지 않으며, 에이전트는 Teleport 클러스터에 조인할 때 사용할 엔드포인트를 나타내기 위해 auth_server 또는 proxy_server 중 하나를 지정해야 합니다.

이전 버전의 Teleport는 auth_servers 가 인증 서버 또는 프록시 서버를 가리킬 수 있도록 허용했습니다. 그 결과 Teleport는 여러 가지 다양한 모드로 연결을 시도하며 혼란스러운 오류 메시지가 발생했습니다. 구성 버전 3에서는 Teleport가 단일 모드에서만 연결을 시도하므로 더 효율적이고 문제 해결이 더 용이합니다.

예를 들어, v2 구문의 이 발췌는 다음과 같은 변경으로 v3 로 변환될 수 있습니다.

-version: v2
+version: v3
teleport:
-  auth_servers: [ teleport.example.com:443 ]
+  proxy_server: teleport.example.com:443
Teleport 원문 보기