텔레포트는 구성에 YAML 파일 형식을 사용합니다. 전체 구성
참조 파일은 아래에 표시됩니다. 이 파일은 주석과
teleport.yaml
에 대한 모든 옵션을 제공합니다.
기본적으로 텔레포트는 /etc/teleport.yaml
에서
구성을 읽습니다.
이 참조를 사용하기 전에
이 예제 구성을 프로덕션에서 사용하지 마세요.
환경의 요구 사항에 맞추어 구성 파일을 수정해야 합니다. 참조 구성을 복사하면 의도하지 않은 효과를 야기할 수 있습니다. 시작점으로 사용할 수 있는 구성 파일을 생성하려면 다음 명령을 실행하세요:
teleport configure -o file
SSH 서비스와 데이터베이스 서비스에 사용할 수 있는 configure
명령도 있습니다.
텔레포트 CLI 참조에서
teleport node configure
및 teleport 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