Infograb logo
텔레포트 구성

텔레포트는 구성에 YAML 파일 형식을 사용합니다. 전체 구성 참조 파일은 아래에 표시됩니다. 이 파일은 주석과 teleport.yaml에 대한 모든 옵션을 제공합니다.

기본적으로 텔레포트는 /etc/teleport.yaml에서 구성을 읽습니다.

이 참조를 사용하기 전에

이 예제 구성을 프로덕션에서 사용하지 마세요.

환경의 요구 사항에 맞추어 구성 파일을 수정해야 합니다. 참조 구성을 복사하면 의도하지 않은 효과를 야기할 수 있습니다. 시작점으로 사용할 수 있는 구성 파일을 생성하려면 다음 명령을 실행하세요:

teleport configure -o file

SSH 서비스와 데이터베이스 서비스에 사용할 수 있는 configure 명령도 있습니다. 텔레포트 CLI 참조에서 teleport node configureteleport db configure에 대한 우리의 문서를 참조하세요.

변경하기 전에 구성 파일을 백업해야 합니다. 이는 이전 구성으로 롤백할 수 있도록 해줍니다.

텔레포트 서비스 활성화

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

일부 서비스의 경우, 시작하기 위해 텔레포트 구성 내에서 서비스를 활성화해야 합니다. 다른 서비스는 기본적으로 활성화되어 있습니다.

서비스를 활성화하거나 비활성화하려면 다음을 텔레포트 구성에 포함시키고, service_name을 서비스의 이름으로 교체하세요 (서비스 이름은 아래에 나열됩니다):

service_name:
  enabled: "no"

텔레포트는 다음과 같은 서비스를 지원합니다:

서비스구성 섹션기본적으로 활성화됨
애플리케이션 서비스app_service
인증 서비스auth_service
데이터베이스 서비스db_service
발견 서비스discovery_service
쿠버네티스 서비스kubernetes_service
프록시 서비스proxy_service
SSH 서비스ssh_service
데스크탑 서비스windows_desktop_service
Jamf 서비스jamf_service

텔레포트 클라우드는 인증 서비스와 프록시 서비스를 관리합니다. 텔레포트 서비스 인스턴스(예: 애플리케이션 서비스와 데이터베이스 서비스)는 의도하지 않은 효과를 피하기 위해 다음 구성 옵션을 포함해야 합니다:

auth_service:
  enabled: false

proxy_service:
  enabled: false

참조 구성

이 예제 구성은 적절한 들여쓰기를 시연하기 위해 YAML 형식으로 모든 가능한 구성 옵션을 포함합니다.

애플리케이션 구성 옵션을 보려면 텔레포트 서비스를 선택하세요:

인스턴스 전역 설정

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

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

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

# 이 구성 파일의 이 섹션은 모든 텔레포트 서비스에 적용됩니다.
teleport:
    # nodename은 이 노드에 접근할 수 있는 대체 이름을 할당합니다.
    # 기본값은 호스트 이름과 같습니다.
    nodename: graviton

    # Teleport 데몬이 데이터를 유지하는 데이터 디렉토리입니다.
    # 더 많은 세부사항은 "스토리지 백엔드"를 참조하세요.
    # (https://goteleport.com/docs/setup/reference/backends/).
    data_dir: /var/lib/teleport

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

    # 클러스터에 참여하는 데 사용되는 초대 토큰 또는 토큰이 포함된 파일의 절대 경로입니다.
    # 이후 시작 시에는 사용되지 않습니다.
    # 파일을 사용하는 경우, teleport가 처음 실행될 때만 존재하면 됩니다.
    #
    # 파일 경로 예시:
    # 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

    # join_params는 EC2, IAM 또는 토큰을 통해 클러스터에 참여할 때 설정할 매개변수입니다.
    #
    # EC2 참여 방법 문서:
    # https://goteleport.com/docs/setup/guides/joining-nodes-aws-ec2/
    # IAM 참여 방법 문서:
    # https://goteleport.com/docs/setup/guides/joining-nodes-aws-iam/
    join_params:
        # `method`가 "token"으로 설정되면, 위의 `auth_token`을 사용하는 것과 같습니다.
        # auth_token 또는 join_params 중 하나만 사용해야 합니다.
        method: "token"|"ec2"|"iam"|"github"|"circleci"|"kubernetes"

        # 방법이 "token"이 아닐 경우, token_name은
        # 참여 토큰 리소스의 이름이 됩니다. 예: "ec2-token" 또는 "iam-token"으로
        # EC2 또는 IAM 가이드에서 생성된 것입니다.

        # 방법이 "token"인 경우, token_name은 
        # 클러스터에 참여하는 데 사용되는 초대 토큰이거나
        # 토큰이 포함된 파일의 절대 경로입니다.
        # 이후 시작 시에는 사용되지 않습니다.
        # 파일을 사용하는 경우, teleport가 처음 실행될 때만 존재하면 됩니다.
        #
        # 파일 경로 예시:
        # token_name: /var/lib/teleport/tokenjoin
        token_name: "token-name"

    # 인증 서비스의 CA 핀(신뢰할 수 있는 인증서). CA 핀을 지정하면
    # 새로운 에이전트가 인증 서비스 통해서 직접 참여할 때
    # 텔레포트 클러스터를 신뢰할 수 있습니다.
    # ca_pin 필드에 CA 핀의 리터럴 값 또는 파일의 절대 경로를 지정할 수 있습니다.
    # 파일을 지정하는 경우, 파일에는 CA 핀만 포함되어야 합니다.
    #
    # ca_pin 키의 값을 YAML 목록으로 CA 핀이나 파일 경로로도 지정할 수 있습니다.
    # 예:
    #
    # ca_pin:
    #   - /var/lib/teleport/pin1
    #   - /var/lib/teleport/pin2
    #
    # CA 핀 사용에 대한 문서 참조:
    # https://goteleport.com/docs/management/join-services-to-your-cluster/join-token/#connecting-directly-to-the-auth-service.
    ca_pin:
      "sha256:7e12c17c20d9cb504bbcb3f0236be3f446861f1396dcbb44425fe28ec1c108f1"

    # 멀티 호밍 또는 NAT 환경에서 실행할 때, 텔레포트 노드는
    # 다른 노드에 의해 도달할 수 있는 IP를 알아야 합니다.
    #
    # 이 값은 FQDN으로 지정할 수 있습니다. 예: host.example.com
    advertise_ip: 10.1.0.5

    # 텔레포트는 모니터링 목적을 위한 HTTP 엔드포인트를 제공합니다.
    # 기본적으로 비활성화되어 있지만 진단 주소를 사용하여 활성화할 수 있습니다.
    # 텔레포트 메트릭스 참조:
    # https://goteleport.com/docs/management/diagnostics/metrics/
    diag_addr: "127.0.0.1:3000"

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

    # 연결할 인증 서버의 주소와 포트입니다. 텔레포트
    # 인증 서버를 고가용성 구성으로 실행하도록 활성화하면, 주소는 로드 밸런서를 가리켜야 합니다.
    # NAT 뒤에 위치한 노드를 추가하는 경우 프록시 URL을 사용하세요
    # (예: teleport-proxy.example.com:443) 및 `proxy_server`를 설정하세요.
    auth_server: 10.1.0.5:3025

    # 연결할 프록시 서버의 주소와 포트입니다. 텔레포트
    # 프록시 서버를 고가용성 구성으로 실행하도록 활성화하면, 주소는 로드 밸런서를 가리켜야 합니다.
    proxy_server: teleport-proxy.example.com:443

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

    # 텔레포트는 남용을 피하기 위해 모든 연결을 제한합니다. 이러한 설정을 통해
    # 기본 제한을 조정할 수 있습니다.
    connection_limits:
        max_connections: 1000
        max_users: 250

    # 로깅 구성. 가능한 출력 값은 다음과 같습니다:
    # '/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:
    # '프록시' 역할을 켭니다. 기본값은 '예'
    enabled: yes

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

    # 리버스 터널 리스닝 주소. 인증 서버(CA)는 이 주소로
    # 아웃바운드(방화벽 뒤에서) 연결을 설정할 수 있습니다.
    # 이는 외부 CA의 사용자가 방화벽 뒤 노드에 연결할 수 있게 합니다.
    #
    # 설정하지 않으면 동작은 구성 파일 버전마다 다릅니다:
    #
    # v2 이상: 리스너가 생성되지 않으며, 리버스 터널 트래픽은 web_listen_addr에서 멀티플렉스 됩니다.
    # v1: 기본값은 0.0.0.0:3024
    tunnel_listen_addr: 0.0.0.0:3024

    # 프록시 피어링 리스닝 주소. Teleport 프록시 서비스는 이 주소에 바인딩되어 
    # 프록시 피어링 모드에서 연결 요청 에이전트의 수신 연결을 수신합니다.
    peer_listen_addr: 0.0.0.0:3021

    # 프록시 피어링 공개 주소. Teleport 프록시 서비스는 이 주소를 광고하여
    # 프록시 피어링 모드의 연결 요청 에이전트가 사용할 수 있습니다.
    # NOTE: 이 주소는 각 프록시마다 고유해야 하며 로드 밸런서를 가리키지 않아야 합니다.
    # 여기에 로드 밸런서 주소를 사용하면 예측할 수 없는 결과와 연결 지연이 발생할 수 있습니다.
    peer_public_addr: teleport-proxy-host-1.example.com:3021

    # 웹 UI를 제공하고 사용자를 인증하는 HTTPS 리스닝 주소입니다.
    # 데이터베이스 서비스가 활성화된 경우 PostgreSQL 프록시를 처리합니다.
    web_listen_addr: 0.0.0.0:3080

    # 클러스터 사용자가 접근할 수 있는 프록시 HTTPS 엔드포인트의 DNS 이름입니다.
    # 지정되지 않으면 프록시의 호스트 이름으로 기본값이 설정됩니다. 여러
    # 프록시가 로드 밸런서 뒤에서 실행되는 경우 이 이름은 로드 밸런서를 가리켜야 합니다. 
    # 애플리케이션 접근이 활성화된 경우 public_addr가 올바른 
    # 리디렉션 작성을 위해 사용됩니다
    # (https://goteleport.com/docs/application-access/guides/connecting-apps/#start-authproxy-service).
    # 데이터베이스 접근이 활성화된 경우 데이터베이스 클라이언트는
    # 이 호스트 이름을 통해 프록시에 연결합니다
    # (https://goteleport.com/docs/database-access/architecture/#database-client-to-proxy).
    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"

    # Mongo 프록시 리스너 주소입니다. 제공되는 경우 프록시는 별도의
    # 리스너를 사용합니다 대신 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"

    # Mongo 클라이언트에 광고되는 주소입니다. 설정하지 않으면 public_addr가 사용됩니다.
    mongo_public_addr: "mongo.teleport.example.com:443"

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

    # ID 공급자 구성. Teleport의 ID 공급자에 대한 자세한 구성을 제공합니다. 현재 SAML만 지원됩니다.
    idp:
      # SAML ID 공급자 구성.
      saml:
        # SAML ID 공급자를 활성화합니다. 기본값은 '예'입니다.
        enabled: yes

    # 프록시 서비스에서 제공하는 웹 UI의 구성 옵션입니다.
    ui:
      # 터미널의 스크롤백 양입니다. 스크롤백은
      # 초기 뷰포트를 넘어 스크롤될 때 유지되는
      # 행의 양을 나타냅니다. 세션 기록 뷰에는 적용되지 않습니다.
      scrollback_lines: 1000
      # 웹 UI 리소스 페이지에 표시될 리소스; 사용자가
      # 접근할 수 있는 리소스와 사용자가 요청할 수 있는 리소스입니다. 기본적으로 두 가지 유형의
      # 리소스가 포함됩니다. 사용자가 접근할 수 있는 리소스만 보도록 하려면
      # 이 값을 "accessible_only"로 설정하십시오.
      show_resources: 'requestable'

    # 프록시 서비스가 웹 API에 대해 "X-Forwarded-For" 헤더에서 클라이언트 출처 IP를 가져올 수 있도록 활성화합니다.
    #
    # IP 스푸핑을 방지하기 위해, 프록시 서비스가
    # 클라이언트 IP를 "X-Forwarded-For" 헤더에 설정하는 레이어 7 로드 밸런서 또는 리버스 프록시 뒤에 있어야
    # 합니다. IP가 하나 이상 포함된 요청은 거부됩니다.
    trust_x_forwarded_for: false

    # 에이전트 자동 업데이트를 위한 내장 버전 서버의 구성입니다.
    # 이 구성을 설정하지 않으면 기본 채널이 생성되며
    # 프록시 서비스에서 실행 중인 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
```

인증 서비스

이 설정은 텔레포트 인증 서비스에 적용됩니다:

텔레포트 엔터프라이즈 클라우드는 인증 서비스를 관리하므로, 이 구성 설정을 지정할 필요가 없습니다.

```
# 클러스터 상태 및 감사 로그에 사용되는 저장소 백엔드의 설정.
# 여러 가지 백엔드 유형이 지원됩니다.
# DynamoDB, S3, etcd 및 기타 고가용성 백엔드를 구성하는 방법을 알아보려면
# 문서의 "저장소 백엔드"(https://goteleport.com/docs/setup/reference/backends) 섹션을 참조하세요.
storage:
    # 기본적으로 teleport는 로컬 파일 시스템의 `data_dir` 디렉토리에
    # SQLite 데이터베이스를 사용합니다.
    type: sqlite

    # 감사 로그 이벤트가 저장될 위치 목록입니다. 기본적으로
    # `/var/lib/teleport/log`에 저장됩니다.
    #
    # 이렇게 여러 개의 목적지를 지정할 때, 높은 가용성 저장 방법
    # (예: DynamoDB 또는 Firestore)를 먼저 지정해야 하며, 이는 Teleport 웹 UI가 
    # 이벤트를 표시하는 소스로 사용합니다.
    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://'

    # 이 설정을 사용하여 AWS S3 버킷에 기록된 세션을 저장하도록
    # teleport를 구성하거나 'gs://'로 GCP 스토리지를 사용할 수 있습니다.
    # 더 많은 정보는 "저장소 백엔드"의 S3 섹션을 참조하세요.
    # (https://goteleport.com/docs/setup/reference/backends/#s3).
    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` 프라그마로, 기본적으로
    # SQLite 기본값(DELETE)에서 모드를 변경하지 않습니다 (WAL 모드를 사용하는 경우 제외).
    # 신뢰성을 희생하지 않고 성능을 개선하기 위해 `journal`을 `WAL`로
    # 설정하고 `sync`를 `NORMAL`으로 설정할 수 있지만, 파일 시스템이
    # 잠금을 지원할 때만 가능합니다.
    #journal: DELETE

    # DynamoDB 전용 섹션:

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

    # auto_scaling은 자동 확장을 활성화(및 설정 정의)에 사용됩니다.
    # 기본값: false
    auto_scaling: true

    # 기본적으로 Teleport는 1년의 AWS TTL로 감사 이벤트를 저장합니다.
    # 이 값은 아래와 같이 구성할 수 있습니다. 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 프로토콜이 허용되지만 필요하지 않습니다.
    # 이는 테스트 환경에 적합하지만 프로덕션 사용에는 권장되지 않습니다.
    # PROXY 헤더가 수신되면 Teleport의 IP 고정 기능이 작동하지 않습니다.
    # Auth 서비스가 PROXY 헤더를 보내는 L4 로드 밸런서 뒤에 있는 경우 `on`으로 설정하고, 그렇지 않으면 `off`로 설정합니다.
    proxy_protocol: on

    authentication:
        # 기본 인증 유형. 가능한 값은 'local' 및 'github'입니다.
        # Teleport Community Edition에서는 'oidc' 및 'saml'이 추가됩니다.
        # 오픈 소스 버전에서 지원되는 것은 로컬 인증(텔레포트의 사용자 DB) 및 GitHub뿐입니다.
        type: local

        # 다른 인증 유형과 함께 로컬 인증이 활성화되었는지 여부를 설정합니다.
        # 기본값은 true입니다. local_auth는 FedRAMP / FIPS를 위해 'false'여야 합니다.
        # (https://goteleport.com/docs/enterprise/ssh-kubernetes-fedramp/)
        #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

        # 클러스터의 기본 인증 연결기를 설정합니다:
        # - 로컬 인증을 위한 'local' (비밀번호, WebAuthn 등)
        # - 비밀번호 없는 인증을 위한 'passwordless'
        #   (http://goteleport.com/docs/access-controls/guides/passwordless/#optional-enable-passwordless-by-default)
        # - 헤드리스 인증을 위한 'headless'
        #   (http://goteleport.com/docs/access-controls/guides/headless-login/#optional-enable-passwordless-by-default)
        # - 특정 SSO 연결기 이름 - 세부정보는 https://goteleport.com/docs/access-controls/sso/에서 참조하세요.
        # 기본값은 "local"입니다.
        #connector_name: local

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

          # [기기 인증](https://developers.yubico.com/WebAuthn/WebAuthn_Developer_Guide/Attestation.html)을 위한 인증 기관의 선택적 승인 목록
          # (로컬 파일 경로 또는 인라인 PEM 인증서 문자열).
          # 이 필드는 신뢰할 수 있는 기기 모델 및 공급자를 제한하는 데 도움이 됩니다.
          # 목록에 포함되지 않은 기기는 등록 중에도 거부됩니다.
          # 기본적으로 모든 기기가 허용됩니다.
          # 증명서가 필요하므로 문제의 기기를 금지할 경우 
          # `attestation_denied_cas`를 사용하는 것을 고려하세요.
          attestation_allowed_cas:
          - /path/to/allowed_ca.pem
          - |
            -----BEGIN CERTIFICATE-----
            ...
            -----END CERTIFICATE-----

          # [기기 인증](https://developers.yubico.com/WebAuthn/WebAuthn_Developer_Guide/Attestation.html)을 위한 인증 기관의 선택적 거부 목록
          # (로컬 파일 경로 또는 인라인 PEM 인증서 문자열).
          # 이 필드는 특정 기기 모델 및 공급자를 금지하는 데 사용되며,
          # 나머지 기기는 허용됩니다(제외 규칙을 통과해야 함).
          # 이 목록에 포함된 기기는 등록 중 거부됩니다. 기본값으로는
          # 금지된 기기가 없습니다.
          attestation_denied_cas:
          - /path/to/denied_ca.pem
          - |
            -----BEGIN CERTIFICATE-----
            ...
            -----END CERTIFICATE-----

          # true로 설정 시, WebAuthn을 비활성화합니다. 두 번째 요소 모드 'on' 및 'optional'에 대해
          # U2F로 대체할 수 있습니다.
          disabled: false

        # U2F 섹션은 레거시 목적을 위해 유지되며 기존
        # U2F 등록을 지원합니다.
        u2f:
            # U2F 등록에서 사용되는 앱 ID입니다.
            # U2F 장치의 재등록을 방지하기 위해 이 설정을 유지하세요.
            app_id: https://localhost:3080

        # 잠금 모드는 Teleport 구성 요소에서 로컬로 사용 가능한
        # 잠금 보기를 적용하는 방법을 결정합니다; 엄격하거나 노력해볼 수 있습니다.
        # 자세한 내용은 "잠금 모드" 섹션을 참조하세요.
        # (https://goteleport.com/docs/access-controls/guides/locking/#locking-mode).
        locking_mode: best_effort

        # Device Trust는 Teleport의 신뢰된 기기에 대한 동작을 구성합니다.
        # Device Trust는 Teleport Enterprise 기능입니다.
        # (https://goteleport.com/docs/access-controls/guides/device-trust/)
        device_trust:
          # 'mode'는 클러스터 전반의 디바이스 신뢰 모드입니다.
          # 다음 값이 지원됩니다:
          # - 'off' - 디바이스 신뢰를 비활성화합니다. 디바이스 인증이
          #   수행되지 않으며 디바이스 인식 감사 로그가 없습니다.
          # - 'optional' - 디바이스 인증 및 디바이스 인식 감사를
          #   활성화하지만, 자원에 접근하기 위해 신뢰된 디바이스가 필요하지 않습니다.
          # - 'required' - 디바이스 인증 및 디바이스 인식 감사를
          #   활성화합니다. 또한 모든 SSH, 데이터베이스 및 Kubernetes 연결에 신뢰된 디바이스가 필요합니다.
          mode: optional # Teleport Community Edition에서는 항상 "off"

          # 이 인증 서버에 의해 발급된 사용자 인증서의 기본 TTL을 설정합니다.
          # 기본값은 12시간입니다. 예제:
          # "14h30m", "1h" 등.
          default_session_ttl: 12h

    # 바인딩할 IP와 포트입니다. 다른 Teleport 노드는 
    # 이 포트(일명 "인증 API" 또는 "클러스터 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인 경우에만 적용되며, "Recording Proxy Mode"의 자세한 내용은
    # (https://goteleport.com/docs/architecture/proxy/#recording-proxy-mode)를 참조하세요.
    proxy_checks_host_keys: yes

    # 클러스터 리소스에 대한 세션이 클라이언트의 비활동으로 인한 경우 강제로 종료될지 여부를 결정합니다.
    # 예: "30m", "1h" 또는 "1h30m"
    client_idle_timeout: never

    # 클라이언트가 비활동 때문에 연결이 끊겼을 때 사용자에게 사용자 정의 메시지를 보냅니다.
    # 빈 문자열은 메시지를 보내지 않음을 나타냅니다.
    # (현재 서버 접근 연결에 대해서만 지원됩니다)
    client_idle_timeout_message: ""

    # 웹 UI의 유휴 시간 초과를 설정합니다. 기본값은 10m입니다.
    web_idle_timeout: 10m

    # 클라이언트의 인증서가 활성 세션 중에 만료될 경우 클라이언트를 강제로 디스커넥트할지 여부를 결정합니다.
    # (기본값은 'no')
    disconnect_expired_cert: no

    # keep_alive_interval은 Teleport가 클라이언트 및 리버스 터널 연결에 대한 keep-alive 메시지를 보내는 간격을 결정합니다.
    # 기본값은 5분(300초)으로, 일반적인 로드 밸런서 타임아웃인 350초보다 낮게 설정됩니다.
    # keep_alive_count_max는 Teleport 클러스터가 클라이언트 또는 서비스에 대한 연결을 종료하기 전에
    # 놓친 keep-alive 메시지의 수입니다.
    keep_alive_interval: 5m
    keep_alive_count_max: 3

    # 클러스터 전체에 대한 내부 세션 제어 시간 초과를 결정합니다. 이 값은
    # 기업 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": 클라이언트가 Teleport 프록시의 웹 리스너에 연결합니다.
    #              TLS 라우팅 모드에서.
    # "separate":  클라이언트가 Teleport 프록시의 개별
    #              리스너(tunnel_listen_addr, mysql_listen_addr 등)에 연결합니다.
    #
    # 추가 정보는 아키텍처 섹션의 "TLS 라우팅"을 참조하세요.
    proxy_listener_mode: multiplex

    # 클러스터가 클라이언트를 Teleport Proxy 서비스에 연결하는 데 사용하는 전략을 결정합니다.
    tunnel_strategy:
      # 가능한 터널 전략 유형은:
      #
      # "agent_mesh": 기본 동작으로, 에이전트는 모든
      #                Teleport 프록시 서비스 인스턴스에 연결됩니다.
      # "proxy_peering": 에이전트는 프록시 서비스 인스턴스의 하위 집합에 연결되고
      #                  클라이언트는 프록시 서비스 인스턴스 간에 라우팅됩니다.
      type: proxy_peering

      # 에이전트가 생성하려고 시도하는 리버스 터널 연결의 수입니다.
      # 이 필드는 "proxy_peering" 터널 전략 유형을 사용할 때만 사용할 수 있습니다.
      # 높은 가용성을 위해 이 값을 2 이상으로 설정하는 것이 좋습니다.
      agent_connection_count: 1

    # 사용자에게 SSH로 Teleport 노드에 로그인하려고 할 때
    # 현재 클러스터의 CA만이 아닌 모든 클러스터의 CA를 로드하도록 tsh에 지시합니다.
    # 이는 루트 클러스터에 로그인한 후 "tsh ssh"로 리프 클러스터의 노드에
    # 로그인하고자 하는 사용자에게 유용할 수 있습니다. 기본값은 false입니다.
    load_all_cas: false

    # ssh 다이얼 요청의 대소문자를 구분하지 않도록 설정합니다. 이를 true로 설정하면
    # 'tsh ssh myserver'가 호스트 'MyServer'로 라우팅될 수 있습니다.
    # 대문자 호스트 이름으로 다이얼링하는 경우 여전히 정확한 일치를 요구합니다.
    # Openssh는 항상 호스트 이름을 소문자로 변경하므로
    # 대문자로 된 호스트 이름에 액세스하려면 이것을 true로 설정하는 것이 필요합니다.
    case_insensitive_routing: false

    # AccessMonitoring은 Access Monitoring 기능과 관련된 일련의 옵션입니다.
    access_monitoring:
      # Access Monitoring을 켭니다. 기본값은 'no'입니다.
      enabled: yes
      # Teleport가 Athena SQL 쿼리를 실행하기 위해 사용할 AWS 역할 ARN입니다.
      # Teleport 역할은 신뢰 관계로 설정되어야 하며 이 역할을 가정할 수 있어야 합니다.
      role_arn: arn:aws:iam::123456789012:role/AccessMonitoringRole
      # Access Monitoring 보고서가 저장될 S3 버킷입니다.
      report_results: s3://audit-long-term/report_results
      # (선택 사항) Access Monitoring 쿼리에서 사용하는 Athena 작업 그룹(설정하지 않으면 기본 기본 작업 그룹이 사용됩니다).
      workgroup: access_monitoring_workgroup
```

SSH 서비스

이 설정은 텔레포트 SSH 서비스에 적용됩니다:

ssh_service:
    # 'ssh' 역할을 켭니다. 기본값은 'yes'입니다.
    enabled: yes

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

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

    # "Labels" 페이지의 레이블 설명을 참조하세요
    # (https://goteleport.com/docs/setup/admin/labels).
    labels:
        role: leader
        type: postgres

    # 주기적으로 실행할 명령 목록입니다. 그 출력은
    # 노드 레이블로 사용됩니다.
    # 추가 정보와 더 많은 예제를 보려면 "Labels" 페이지를 참조하세요
    # (https://goteleport.com/docs/setup/admin/labels).
    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

    # 고급 세션 기록
    # 자세한 내용은 https://goteleport.com/docs/features/enhanced-session-recording/를 참조하세요.
    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 계층이 마운트될 위치를 조정합니다. 기본값:
       # /cgroup2입니다.
       cgroup_path: /cgroup2

       # 선택적: Teleport cgroups가 배치될 cgroupv2 계층 내의 경로를 조정합니다. 기본값: /teleport
       root_path: /teleport

    # PAM 통합을 구성합니다. 자세한 내용은 PAM 가이드를 참조하세요
    # (https://goteleport.com/docs/features/ssh-pam/).
    pam:
        # 기본값은 "no"입니다.
        enabled: yes
        # /etc/pam.d/sshd 구성 사용 (기본값)
        service_name: "sshd"
        # PAM 구성의 "auth" 모듈 사용
        # 기본값은 "false"입니다.
        use_pam_auth: true

    # TCP 포워딩을 활성화/비활성화합니다. 기본값은 'true'입니다.
    port_forwarding: true

    # x11.enabled가 yes로 설정되면, "permit_x11_forwarding" 역할 옵션이 있는 사용자가
    # "tsh ssh -X"로 X11 포워딩 세션을 요청할 수 있습니다.
    #
    # X11 포워딩은 서버에 "xauth" 바이너리가 설치되어 있고 
    # Teleport 노드가 유닉스 소켓을 열 수 있는 경우에만 작동합니다.
    # 예: "$TEMP/.X11-unix/X[display_number]."
    x11:
      # 기본값은 no입니다.
      enabled: yes
      # display_offset는 X11 포워딩 세션을 부여할 때 서버가 사용할 
      # X11 디스플레이의 범위 시작을 지정하는 데 사용할 수 있습니다.
      # 기본값은 10입니다.
      display_offset: 10
      # max_display는 X11 포워딩 세션을 부여할 때 사용할 
      # X11 디스플레이의 범위 끝을 지정하는 데 설정할 수 있습니다.
      # 기본값은 display_offset + 1000입니다.
      max_display: 1010

    # 이 노드에 대해 SCP/SFTP를 통한 원격 파일 작업을 활성화/비활성화합니다. 기본값
    #은 true입니다.
    ssh_file_copy: true

쿠버네티스 서비스

이 설정은 텔레포트 쿠버네티스 서비스에 적용됩니다:

kubernetes_service:  
    enabled: "예"  
    # 선택적 공개 및 수신 주소: Kubernetes 클러스터 내에서 실행 중인 Teleport에 연결하는 경우 설정하십시오.  
    # 역 터널을 사용하는 대신  
    #  
    # 선택적 공개 주소  
    public_addr: [k8s.example.com:3026]  
    # 선택적 수신 주소  
    listen_addr: 0.0.0.0:3026  
    # 선택적 kubeconfig_file 및 kube_cluster_name. 이 중 하나는 반드시 설정되어야 합니다.  
    #  
    # Kubernetes 클러스터 외부에서 teleport를 실행하는 경우,  
    # kubeconfig_file을 사용하여 클러스터 자격 증명을 teleport에 제공하십시오.  
    #  
    # Kubernetes 클러스터 포드 내에서 teleport를 실행하는 경우,  
    # kube_cluster_name을 사용하여 사용자에게 표시되는 이름을 제공하십시오.  
    # Teleport는 포드 서비스 계정 자격 증명을 사용하여 로컬 Kubernetes API에 인증합니다.  
    kubeconfig_file: /secrets/kubeconfig  
    kube_cluster_name:  
    # "tctl create" 명령이나 Kubernetes 자동 검색에 의해 생성된 동적 Kubernetes 클러스터 리소스에 대한 매처.  
    # 리소스가 'discovery_service'에 의해 생성된 경우, 'kubernetes_service'는 필요한 권한을 가져야 합니다.  
    resources:  
    - labels:  
        "*": "*"  
      # 선택적 AWS 역할: Teleport Kubernetes 서비스가 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/v1/instance/attributes/cluster-name'  
        - '-H'  
        - 'Metadata-Flavor: Google'  
      period: 1m0s

애플리케이션 서비스

이 설정은 텔레포트 애플리케이션 서비스에 적용됩니다:

```
app_service:
    # 'app' 역할을 켭니다. 기본값은 'no'입니다.
    enabled: yes
    # Teleport에는 Application Service가 올바르게 작동하는지 확인하는 데 사용할 수 있는
    # 작은 디버그 앱이 포함되어 있습니다. 이 앱은 JWT를 출력하므로 응용 프로그램 확장 시 유용할 수 있습니다.
    debug_app: true

    # 동적 애플리케이션 리소스를 위한 매처
    #
    # 모든 애플리케이션 리소스는 다음 값 중 하나가 있는 미리 정의된 "teleport.dev/origin" 레이블을 가집니다:
    # "dynamic": Auth Service API 클라이언트인 `tctl` 또는 Teleport Terraform 프로바이더를 통해 생성된 애플리케이션 리소스
    # "config": 아래 "apps" 배열에 정의된 애플리케이션 리소스
    resources:
      - labels:
          "*": "*"

    apps:
    - name: "kubernetes-dashboard"
      # 선택 사항: 클라우드 공급자 API에 대한 액세스를 위해 클라우드
      # 공급자를 지정합니다. 허용된 값은 "AWS", "Azure" 및 "GCP"입니다.
      cloud: ""
      # 애플리케이션의 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"
      # 선택 사항: 동적 레이블
      commands:
      - name: "os"
        command: ["/usr/bin/uname"]
        period: "5s"
      ## 요청 및 응답에 적용할 선택적 재작성 규칙 목록
      # rewrite:
        ## 선택 사항: 리디렉션 응답의 "Location" 헤더를 단순히 재작성합니다.
        ## 리디렉션 응답에서 "Location" 헤더를 재작성하여
        ## 호스트를 이 애플리케이션의 공개 주소로 대체합니다.
        # redirect:
        #   - "localhost"
        #   - "jenkins.internal.dev"
        ## 요청에 삽입할 추가 헤더의 선택적 목록입니다.
        # headers:
        #   예를 들면:
        #   - "Host: jenkins.example.com"
        ## JWT 토큰의 일부를 제거하는 선택적 재작성입니다.
        ## 세 가지 옵션 중 하나일 수 있습니다:
        ## - roles-and-traits: JWT 토큰에 역할과 특성을 모두 포함
        ## - roles: JWT 토큰에 역할만 포함
        ## - traits: JWT 토큰에 특성만 포함
        ## - none: JWT 토큰에 역할이나 특성을 포함하지 않음
        ## 기본값: roles-and-traits
        # jwt_claims: roles-and-traits
```

데이터베이스 서비스

이 설정은 텔레포트 데이터베이스 서비스에 적용됩니다:

```yaml
db_service:
  # 데이터베이스 서비스 활성화.
  enabled: "yes"

  # "tctl create" 명령어로 생성된 데이터베이스 리소스나 
  # 검색 서비스에 대한 매처.
  resources:
    # 더 많은 데이터베이스 레이블에 대해 알아보려면 
    # "Database labels reference" (https://goteleport.com/docs/database-access/reference/labels/)를 참조하세요.
  - 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 계정에서 역할을 가정하기 위해 데이터베이스 서비스가 사용할 선택적 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 리전 이름.
    regions: ["eastus", "westus"]
    # 데이터베이스 등록을 위한 Azure 구독 ID. 유효한 옵션은:
    # '*' - 모든 구독에서 데이터베이스를 발견합니다 (기본값).
    subscriptions: ["11111111-2222-3333-4444-555555555555"]
    # 데이터베이스 등록을 위한 Azure 리소스 그룹. 유효한 옵션은:
    # '*' - 구성된 구독 내 모든 리소스 그룹 내에서 데이터베이스를 발견합니다 (기본값).
    resource_groups: ["group1", "group2"]
    # 데이터베이스 등록 시 일치시킬 Azure 리소스 태그.
    tags:
      "*": "*"

  # 이 에이전트에 의해 프록시된 정적으로 등록된 데이터베이스 목록.
  databases:
    # CLI에서 참조하는 데 사용되는 데이터베이스 프록시 인스턴스의 이름.
  - name: "prod"

    # 데이터베이스 프록시 인스턴스에 대한 자유 형식 설명.
    description: "생산 데이터베이스"

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

    # 데이터베이스 서비스에서 접근할 수 있어야 하는 데이터베이스 연결 엔드포인트.
    uri: "postgres.example.com:5432"

    # 선택적 TLS 구성.
    tls:
      # TLS 인증 모드. 유효한 옵션은:
      # 'verify-full' - 전체 인증서 검증 수행 (기본값).
      # 'verify-ca' - `verify-full`과 동일하지만 서버 이름 검증은 생략합니다.
      # 'insecure' - 데이터베이스에서 제공된 모든 인증서를 수용합니다 (추천하지 않음).
      mode: verify-full
      # 데이터베이스에 연결할 때 클라이언트 인증서에서 DNS 이름을 덮어쓸 수 있도록 허용하는 선택적 데이터베이스 DNS 서버 이름.
      # 'verify-full' 모드에서만 사용하세요.
      server_name: db.example.com
      # 데이터베이스 인증서를 검증하는 데 사용되는 CA의 선택적 경로.
      ca_cert_file: /path/to/pem
      # Teleport가 호스트 시스템에서 사용 가능한 인증서 기관을 신뢰하도록 허용하는 선택적 구성. 설정하지 않으면 (기본값),
      # Teleport는 Teleport의 데이터베이스 서버 CA 또는 이 TLS 설정에서 지정한 ca_cert_file로 서명된 자체 서명된 데이터베이스만 신뢰합니다. 
      # 클라우드 호스팅 데이터베이스의 경우, Teleport는 검증을 위한 해당 필수 CA를 다운로드합니다.
      trust_system_cert_pool: false

    # MySQL 전용 옵션.
    mysql:
      # Teleport 프록시에서 보고된 기본 MySQL 서버 버전.
      # 이 옵션이 설정되면 데이터베이스 에이전트는 MySQL 서버 버전을 확인하지 않습니다.
      server_version: 8.0.28

    # 자동 사용자 프로비저닝을 위한 선택적 관리자 사용자 구성.
    admin_user:
      # 관리자 사용자의 이름.
      name: "teleport-admin"
      # 관리자 사용자가 로그인을 하는 선택적 기본 데이터베이스. 기본값에 대한 개별 
      # 가이드를 참조하세요.
      default_database: "teleport"

    # AWS 호스팅 데이터베이스를 위한 AWS의 선택적 구성. AWS 리전 및
    # 서비스별 구성은 일반적으로 엔드포인트에서 자동으로 감지됩니다.
    aws:
      # 데이터베이스가 배포된 리전.
      region: "us-east-1"
      # 이 데이터베이스에 접근하기 위해 데이터베이스 서비스가 가정할 선택적 AWS 역할.
      assume_role_arn: "arn:aws:iam::123456789012:role/example-role-name"
      # 외부 AWS 계정에서 역할을 가정하기 위해 데이터베이스 서비스가 사용할 선택적 AWS 외부 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(고가용성) 모드의 모든 데이터베이스 서비스에서도 일관되어야 합니다.
      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"

    # Cloud SQL 및 Spanner 데이터베이스를 위한 GCP 전용 구성.
    gcp:
      # GCP 프로젝트 ID.
      project_id: "xxx-1234"
      # Cloud SQL 인스턴스 ID.
      instance_id: "example"

    # SQL Server를 위한 Active Directory 인증 전용 설정.
    ad:
      # Kerberos 키탭 파일 경로.
      keytab_file: /path/to/keytab
      # Active Directory 도메인 이름.
      domain: EXAMPLE.COM
      # Kerberos 티켓을 얻기 위한 서비스 프린시펄 이름.
      spn: MSSQLSvc/ec2amaz-4kn05du.dbadir.teleportdemo.net:1433
      # Kerberos 구성 파일에 대한 선택적 경로. 기본값은 /etc/krb5.conf입니다.
      krb5_file: /etc/krb5.conf

    # Azure 호스팅 데이터베이스를 위한 선택적 구성.
    azure:
      # Azure 유연 서버를 사용 when 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:
    enabled: "yes"
    # discovery_group is used to group discovered resources into different
    # sets. This is required when you have multiple Teleport Discovery services
    # running. It prevents discovered services from colliding in Teleport when
    # managing discovered resources.
    # If two Discovery Services match the same resources, they must be in the
    # same discovery group.
    # If two Discovery Services match different resources, they must be in
    # different discovery groups.
    discovery_group: "disc-group"
    # poll_interval is the cadence at which the discovery server will run each of its
    # discovery cycles. The default is 5m.
    poll_interval: 5m
    # Matchers for discovering AWS-hosted resources.
    aws:
      # AWS resource types to discover and register with your Teleport cluster.
      # Valid options are:
      # 'ec2' - Amazon EC2 instances.
      # 'eks' - Amazon EKS clusters.
      # 'rds' - Amazon RDS and Aurora databases.
      # 'rdsproxy' - Amazon RDS Proxy databases.
      # 'redshift' - Amazon Redshift databases.
      # 'redshift-serverless' - Amazon Redshift Serverless databases.
      # 'elasticache' - Amazon ElastiCache Redis databases.
      # 'memorydb' - Amazon MemoryDB Redis databases.
      # 'opensearch' - Amazon OpenSearch Redis databases.
    - types: ["ec2"]
      # AWS regions to search for resources from
      regions: ["us-east-1","us-west-1"]
      # Optional AWS resource tags to match when registering resources
      # Defaults to a wildcard selector that matches any resource: "*":"*"
      tags:
        "*": "*"
      # Optional AWS role that the Discovery Service will assume to discover
      # and register AWS-hosted databases and EKS clusters.
      assume_role_arn: "arn:aws:iam::123456789012:role/example-role-name"
      # Optional AWS external ID that the Discovery Service will use to assume
      # a role in an external AWS account.
      external_id: "example-external-id"
      # Optional section: install is used to provide parameters to the AWS SSM document.
      # If the install section isn't provided, the below defaults are used.
      # Only applicable for EC2 discovery.
      install:
        join_params:
          # token_name is the name of the Teleport invite token to use.
          # Optional, defaults to: "aws-discovery-iam-token".
          token_name:  "aws-discovery-iam-token"
        # script_name is the name of the Teleport install script to use.
        # Optional, defaults to: "default-installer".
        script_name: "default-installer"
      # Optional section: ssm is used to configure which AWS SSM document to use
      # If the ssm section isnt provided the below defaults are used.
      ssm:
        # document_name is the name of the SSM document that should be
        # executed when installing teleport on matching nodes
        # Optional, defaults to: "TeleportDiscoveryInstaller".
        document_name: "TeleportDiscoveryInstaller"
      # Optional role for which the Discovery Service should create the EKS access entry.
      # If not set, the Discovery Service will attempt to create the access
      # entry using its own identity.
      # If used, the role must match the role configured for a Teleport Kubernetes Service.
      setup_access_for_arn: arn:aws:iam::123456789012:role/kube-service-role
    # Matchers for discovering Azure-hosted resources.
    azure:
      # Azure resource types. Valid options are:
      # 'aks' - discovers and registers Azure AKS Kubernetes Clusters.
      # 'vm' - discovers and registers Azure virtual machines.
      # 'mysql' - discovers and registers Azure MySQL databases.
      # 'postgres' - discovers and registers Azure PostgreSQL databases.
      # 'redis' - discovers and registers Azure Cache for Redis databases.
      # 'sqlserver' - discovers and registers Azure SQL Server databases.
    - types: ["aks"]
      # Azure regions to search for resources from. Valid options are:
      # '*' - discovers resources in all regions (default).
      # Any valid Azure region name. List all valid regions using the Azure "az" cli: `az account list-locations -o table`
      regions: ["eastus", "westus"]
      # Azure subscription IDs to search resources from. Valid options are:
      # '*' - discovers resources in all subscriptions (default).
      # Any subscription_id: `az account subscription list -o table`
      subscriptions: ["11111111-2222-3333-4444-555555555555"]
      # Azure resource groups to search resources from. Valid options are:
      # '*' - discovers resources in all resource groups within configured subscription(s) (default).
      # Any resource_groups: `az group list -o table`
      resource_groups: ["group1", "group2"]
      # Azure resource tag filters used to match resources.
      tags:
        "*": "*"
    # Matchers for discovering GCP-hosted resources.
    gcp:
      # GCP resource types. Valid options are:
      # 'gke' - discovers and registers GKE Kubernetes clusters.
      # 'gce' - discovers and registers GCP compute instances.
      - types: ["gce"]
        # IDs of GCP projects to search for resources from.
        project_ids: ["project-id"]
        # GCP locations to search for resources from. Valid options are:
        # '*' - discovers resources in all locations.
        # Any valid GCP region (e.g. "us-west1").
        # Any valid GCP zone (e.g. "us-west1-b").
        locations: ["us-east2", "us-west1-b"]
        # Email addresses of service accounts that instances can join with.
        # If empty, any service account is allowed.
        service_accounts: []
        # GCP resource label filters used to match resources.
        labels:
          "*": "*"
    # Matchers for discovering services inside Kubernetes clusters and exposing them as Teleport apps
    # When the `kubernetes` value is set, the `discovery_group` parameter is mandatory and should be set to
    # the name of Kubernetes cluster where the discovery service is running.
    kubernetes:
      # Type of services to discover. Currently, only "app" is supported. Default value is `["app"]`
    - types: ["app"]
      # List of namespaces of the Kubernetes cluster to search in. Default value is `*` to search all namespaces.
      namespaces: ["test", "staging"]
      # List of Kubernetes labels to match when the Discovery service queries Kubernetes cluster services.
      # Default value is `*`: `*` to match any labels.
      labels:
        "purpose": "monitoring"
        "department": "security"

윈도우 데스크탑 서비스

이 설정은 윈도우 데스크탑 서비스에 적용됩니다:

windows_desktop_service:
  enabled: 
  # 이것은 windows_desktop_service가 수신 대기할 주소입니다.
  listen_addr: "0.0.0.0:3028"
  # (선택 사항) 이것은 windows_desktop_service가
  # 데이터베이스의 나머지 부분에 광고할 주소입니다.
  # 다른 연결을 위해. 오직 proxy_service만이 windows_desktop_service에 연결해야 하며,
  # 사용자는 대신 프록시의 웹 UI에 연결합니다.
  public_addr: "desktop-access.example.com:3028"
  # (선택 사항) 데스크탑 세션이 사용자 선택 배경화면을 표시할지
  # 시스템 기본값 단색 배경화면을 표시할지 결정합니다.
  # 개선된 시각적 성능을 위해, 이를 false(기본값)로 설정하세요.
  show_desktop_wallpaper: false
  # (선택 사항) ldap는 Teleport
  # Active Directory 도메인에 연결할 때 사용되는 구성 키를 포함합니다.
  # 이것은 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-----
          *인증서 데이터*
      -----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'
    # 위의 사용자 이름 필드에 의해 지정된 서비스 계정의 보안 식별자입니다.
    # 이 문자열은 "S-"로 시작합니다.
    #
    # 사용자 객체를 읽을 수 있는 권한을 가진 AD 사용자는 PowerShell을 열고
    # 다음을 실행하여 이 값을 얻을 수 있습니다.
    # ```
    # Get-AdUser -Identity $LDAP_USERNAME | Select SID
    # ```
    #
    # 이 값은 (objectCategory=person)(objectClass=user)(sAMAccountName=$LDAP_USERNAME)의
    # 필터로 질의를 구성하고 objectSid 속성을 요청함으로써 LDAP를 통해 얻을 수 있습니다.
    sid: '$LDAP_USER_SID'

  # (선택 사항) AD 지원이 사용될 때, 이 필드는 Teleport가 PKI 작업에 사용할
  # 도메인을 재정의할 수 있게 해줍니다. 비어 있으면, ldap 섹션의 도메인이 사용됩니다.
  # 이는 PKI가 루트 도메인에서 구성되어 있지만, Teleport가 자식 도메인의
  # 사용자와 컴퓨터에게 접근을 허용하기 위해 사용되는 경우에 유용할 수 있습니다.
  pki_domain: root.example.com

  # (선택 사항) Kerberos 키 분배 센터의 주소를 구성하며,
  # 이는 RDP 네트워크 수준 인증(NLA)을 지원하는 데 사용됩니다.
  # 비어 있으면, LDAP 주소가 대신 사용됩니다.
  #
  # 예: kdc.example.com:88.
  # 포트는 선택사항이며 지정하지 않으면 기본적으로 포트 88이 사용됩니다.
  #
  # 주의: NLA는 Active Directory 환경에서만 지원됩니다. 이 필드는 
  # 로컬 Windows 사용자로서 데스크탑에 연결할 때는 효과가 없습니다.
  kdc_address: '$KDC_SERVER_ADDRESS'

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

  # (선택 사항) LDAP를 통한 자동 데스크탑 발견을 활성화하기 위한 설정입니다.
  discovery:
    # 와일드카드 '*' 문자는 Teleport가
    # Active Directory 도메인 내 모든 호스트를 발견하도록 지시합니다.
    # 검색을 세분화하려면 사용자 정의 DN을 지정하십시오.
    # 자동 발견을 비활성화하려면 이 필드를 비워 두십시오.
    base_dn: '*'
    # (선택 사항) LDAP 검색을 추가로 사용자 정의하기 위한 LDAP 필터입니다.
    # LDAP 필터 구문에 대한 세부사항은 https://ldap.com/ldap-filters를 참조하세요.
    filters:
    - '(location=Oakland)'
    - '(!(primaryGroupID=516))' # 도메인 컨트롤러 제외
    # (선택 사항) Teleport 레이블로 변환할 LDAP 속성입니다.
    # 레이블의 키는 "ldap/" + 속성 값이 됩니다.
    label_attributes:
    - location
  # 호스트 이름에 대해 정규 표현식을 기반으로 Windows 호스트에 레이블을 적용하는 규칙입니다.
  # 여러 규칙이 일치할 경우, 데스크탑은 모든 일치하는 레이블의 합집합을 갖습니다.
  #
  # 정적 호스트와 발견된 호스트의 일치 규칙은 다소 다릅니다.
  # 자세한 내용은 https://goteleport.com/docs/desktop-access/rbac/를 참조하세요.
  host_labels:
  - match: '^.*\.dev\.example\.com'
    labels:
      environment: dev
  - match: '^.*\.prod\.example\.com'
    labels:
      environment: prod
  - match: '^EC2AMAZ-'
    labels:
      environment: discovered-in-aws

  # Windows Desktop Service에 첨부할 레이블입니다. 이는 내부적으로 사용되므로,
  # 추가된 커스텀 레이블은 Windows 호스트에 영향을 미치지 않습니다.
  labels:
    teleport.internal/resource-id: "resource-id"

Jamf 서비스

이 설정은 Jamf 서비스에 적용됩니다:

# 이 섹션은 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의 클라이언트 ID.
  # https://developer.jamf.com/jamf-pro/docs/client-credentials을 참조하세요.
  client_id: your-client-id

  # Jamf Pro API의 클라이언트 비밀이 포함된 파일의 경로.
  # 파일의 권한을 가능한 한 제한적으로 설정하는 것이 좋습니다.
  # 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 동기화를 크론과 유사하게 실행할 때 유용합니다.
  # 기본값은 `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 읽기에서 페이지 길이로 인해 실패하는 경우 유용하지만,
    # 그렇지 않으면 그대로 두는 것이 좋습니다.
    # 없거나 0 또는 음수인 경우 서버 기본값이 사용됩니다.
    page_size: 0

디버그 서비스

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

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

구성 버전

기존 구성의 깨짐을 피하기 위해, 텔레포트의 구성은 버전 관리됩니다. 최신 구성 버전은 v3입니다. 구성 파일에서 version이 지정되지 않으면, v1으로 간주됩니다.

몇몇 새로운 텔레포트 기능은 사용자가 구성을 최신 버전으로 명시적으로 업그레이드하도록 요구합니다.

구성 v1

v1은 텔레포트의 파일 구성의 최초 버전입니다. 오늘날에도 여전히 지원되지만 대부분의 신규 사용자는 최신 구성 버전으로 시작해야 합니다.

구성 v2

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

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

구성 v3

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

이전 버전의 텔레포트는 auth_servers가 인증 서버나 프록시 서버를 가리킬 수 있었습니다. 결과적으로, 텔레포트는 여러 가지 다른 모드로 연결하려고 시도하여 혼란스러운 오류 메시지를 발생시켰습니다. 구성 버전 3에서는 텔레포트가 단일 모드로 연결하려고 시도하므로, 효율적이며 문제를 해결하기가 더 쉽습니다.

예를 들어, 다음 v2 구성 발췌문은 v3로 변환될 수 있습니다:

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