Teleport 애플리케이션 서비스 레퍼런스
이 가이드는 teleport 바이너리의 정적 구성 파일, 동적 app 리소스, tsh apps 명령을 포함하여 Teleport Application Service와 상호 작용하기 위한 인터페이스 및 옵션을 설명합니다.
이 가이드는 teleport 바이너리의 정적 구성 파일, 동적 app 리소스, tsh apps 명령을 포함하여 Teleport Application Service와 상호 작용하기 위한 인터페이스 및 옵션을 설명합니다.
구성#
다음 스니펫은 teleport.yaml 구성 파일에 표시되는 Application Service의 전체 YAML 구성을 보여줍니다:
app_service:
# 애플리케이션 프록시 서비스를 활성화합니다.
enabled: true
# Teleport는 애플리케이션 접근이 올바르게 작동하는지 확인하는 데 사용할 수 있는
# "dumper"라는 작은 디버그 앱을 제공합니다. JWT를 출력하므로
# 애플리케이션을 확장할 때 유용할 수 있습니다.
debug_app: true
# "tctl create" 명령으로 생성된 애플리케이션 리소스에 대한 매처.
resources:
- labels:
"*": "*"
# 이 섹션은 이 서비스에서 프록시되는 모든 애플리케이션의 정의를 포함합니다.
# 여러 항목을 포함할 수 있습니다.
apps:
# 애플리케이션 이름. 식별 목적으로 사용됩니다.
- name: "grafana"
# 자유 형식 애플리케이션 설명.
description: "This is an internal Grafana instance"
# 애플리케이션이 사용 가능한 URI와 포트.
uri: "http://localhost:3000"
# 재정의할 선택적 애플리케이션 공개 주소.
public_addr: "grafana.teleport.example.com"
# 재작성(Rewrites) 섹션.
rewrite:
# JWT에 역할 또는 특성을 포함할지 여부를 지정합니다.
# 옵션:
# - roles-and-traits: 역할과 특성 모두 포함
# - roles: 역할만 포함
# - traits: 특성만 포함
# - none: JWT 토큰에서 역할과 특성 모두 제외
# 기본값: roles-and-traits
jwt_claims: roles-and-traits
# 리디렉션 응답의 "Location" 헤더를 재작성하여
# 호스트를 이 애플리케이션의 공개 주소로 교체합니다.
redirect:
- "grafana.internal.dev"
# 헤더 패스스루 구성.
headers:
- "X-Custom-Header: example"
- "X-External-Trait: {{external.env}}"
# 애플리케이션 인증서 검증을 비활성화합니다.
insecure_skip_verify: true
# 앱에 할당할 선택적 정적 레이블. RBAC에 사용됩니다.
labels:
env: "prod"
# 앱에 할당할 선택적 동적 레이블. RBAC에 사용됩니다.
commands:
- name: "hostname"
command: ["hostname"]
period: 1m0s
# 선택적 AWS 특정 구성.
aws:
# 이 애플리케이션에 대한 AWS 역할을 수임할 때 사용되는 외부 ID.
external_id: "example-external-id"
- name: "azure-cli"
# 선택 사항: 클라우드 공급자 API 접근의 경우 클라우드 공급자를 지정합니다.
# 허용되는 값은 "AWS", "Azure", "GCP"입니다.
cloud: "Azure"
external 특성을 Teleport가 채우는 방법을 포함하여 Teleport 역할 구성에 대한 전체 세부 정보는 접근 제어 참조를 참조하십시오.
애플리케이션 리소스#
tctl 리소스 명령으로 관리되는 애플리케이션 리소스의 전체 YAML 스펙:
kind: app
version: v3
metadata:
# 애플리케이션 이름.
name: example
# 애플리케이션 설명.
description: "Example application"
# 애플리케이션 정적 레이블.
labels:
env: local
spec:
# 애플리케이션이 사용 가능한 URI와 포트.
uri: http://localhost:4321
# 선택적 애플리케이션 공개 주소.
public_addr: test.example.com
# 애플리케이션 인증서 검증을 비활성화합니다.
insecure_skip_verify: true
# 재작성 구성.
rewrite:
# 리디렉션 응답의 "Location" 헤더를 재작성하여
# 호스트를 이 애플리케이션의 공개 주소로 교체합니다.
redirect:
- "grafana.internal.dev"
# 헤더 패스스루 구성.
headers:
- name: "X-Custom-Header"
value: "example"
- name: "X-External-Trait"
value: "{{external.env}}"
# 선택적 동적 레이블.
dynamic_labels:
hostname:
command: ["hostname"]
period: 1m0s
uname:
command: ["uname", "-a"]
period: 5m0s
구성이 포함된 app.yaml이라는 YAML 파일을 생성했다고 가정하고 다음 명령을 실행하여 새 app 리소스를 생성할 수 있습니다:
# 로컬 머신에서 tctl을 사용할 수 있도록 tsh로 클러스터에 로그인합니다.
# "tsh login"을 먼저 실행하지 않고 Auth Service 호스트에서 tctl을 실행할 수도 있습니다.
$ tsh login --proxy=teleport.example.com --user=myuser
# 리소스를 생성합니다
$ tctl create -f app.yaml
# 로컬 머신에서 tctl을 사용할 수 있도록 tsh로 클러스터에 로그인합니다.
$ tsh login --proxy=mytenant.teleport.sh --user=myuser
# 리소스를 생성합니다.
$ tctl create -f app.yaml
CLI#
이 섹션은 애플리케이션 접근과 관련된 CLI 명령을 보여줍니다.
tsh apps ls#
사용 가능한 애플리케이션을 나열합니다.
$ tsh apps ls
tsh apps login#
CLI 애플리케이션 접근을 위한 단기 X.509 인증서를 가져옵니다.
$ tsh apps login grafana
| 플래그 | 설명 |
|---|---|
--aws-role |
AWS CLI 접근의 경우, AWS IAM 역할의 역할 ARN 또는 역할 이름. |
--azure-identity |
Azure CLI 접근의 경우, Azure CLI에 접근하는 데 사용할 Azure 관리 ID의 이름 또는 URI. |
tsh apps logout#
CLI 애플리케이션 접근 인증서를 제거합니다.
# 특정 앱에서 로그아웃합니다.
$ tsh apps logout grafana
# 모든 앱에서 로그아웃합니다.
$ tsh apps logout
tsh apps config#
애플리케이션 연결 정보를 출력합니다.
# 테이블 형식으로 앱 정보를 출력합니다.
$ tsh apps config
# 특정 앱의 정보를 출력합니다.
$ tsh apps config grafana
# curl 명령 예시를 출력합니다.
$ tsh apps config --format=curl
# curl 명령을 구성합니다.
$ curl $(tsh apps config --format=uri) \
--cacert $(tsh apps config --format=ca) \
--cert $(tsh apps config --format=cert) \
--key $(tsh apps config --format=key)
| 플래그 | 설명 |
|---|---|
--format |
선택적 출력 형식. 다음 중 하나: 앱 주소를 출력하는 uri, CA 인증서 경로를 출력하는 ca, 인증서 경로를 출력하는 cert, 키 경로를 출력하는 key, curl 명령 예시를 출력하는 curl. |
tsh az#
Teleport Application Service를 통해 Azure CLI 명령을 실행합니다:
$ tsh az <command>
<command>: 인수와 플래그를 포함한 az CLI 내의 유효한 명령. 전체 az CLI 명령 목록은 Azure 문서를 참조하십시오.
이 명령을 실행하려면 사용자의 역할 중 하나에 Application Service에서 사용하는 ID 중 하나가 포함된 spec.allow.azure_identities 필드가 있어야 합니다. Teleport를 통한 Azure 보안 접근 설정 방법은 Teleport Application Access로 Azure CLI 보호를 참조하십시오.
