InfoGrab Docs

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 보호를 참조하십시오.

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 보호를 참조하십시오.