Infograb logo
애플리케이션 액세스 참조 문서

이 가이드는 teleport 바이너리의 정적 구성 파일, 동적 app 리소스 및 tsh apps 명령을 포함하여 Teleport Application Service와 상호 작용하기 위한 인터페이스 및 옵션을 설명합니다.

구성

경고

운영 인스턴스, 환경 및/또는 설정을 영구 수정하기 전에 백업하는 것은 모범 사례로 권장됩니다. 이를 통해 필요할 경우 기존 상태로 롤백할 수 있습니다.

다음 스니펫은 teleport.yaml 구성 파일에 나타나는 Application Service의 전체 YAML 구성을 보여줍니다:

app_service:
  # 애플리케이션 프록시 서비스 활성화.
  enabled: yes
  # Teleport는 애플리케이션 액세스가 올바르게 작동하는지 확인하는 데 사용할 수 있는 "dumper"라는 작은 디버그 앱을 제공합니다.
  # 이 앱은 JWT를 출력하므로 애플리케이션을 확장할 때 유용할 수 있습니다.
  debug_app: true
  # "tctl create" 명령으로 생성된 애플리케이션 리소스에 대한 매처.
  resources:
    - labels:
        "*": "*"
  # 이 섹션에는 이 서비스에 의해 프록시된 모든 애플리케이션의 정의가 포함됩니다. 여러 항목을 포함할 수 있습니다.
  apps:
    # 애플리케이션의 이름. 식별 용도로 사용됩니다.
    - name: "grafana"
      # 자유 형식의 애플리케이션 설명.
      description: "내부 Grafana 인스턴스입니다."
      # 애플리케이션이 사용할 수 있는 URI 및 포트.
      uri: "http://localhost:3000"
      # 오버라이드할 선택적 애플리케이션 공개 주소.
      public_addr: "grafana.teleport.example.com"
      # 리다이렉트 응답에서 "Location" 헤더를 다시 쓰고
      # 호스트를 이 애플리케이션의 공개 주소로 바꿉니다.
      rewrite:
        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"

Teleport 역할 구성의 전체 세부정보, 특히 Teleport가 external 특성을 어떻게 채우는지에 대해서는 Teleport 액세스 제어 참조를 참조하십시오.

애플리케이션 리소스

tctl 리소스 명령으로 관리되는 애플리케이션 리소스의 전체 YAML 사양:

kind: app
version: v3
metadata:
  # 애플리케이션 이름.
  name: example
  # 애플리케이션 설명.
  description: "예제 애플리케이션"
  # 애플리케이션 정적 레이블.
  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:
    - name: "hostname"
      command: ["hostname"]
      period: 1m0s

다음 명령을 실행하여 새 app 리소스를 생성할 수 있습니다. 이 명령은 app.yaml 이라는 YAML 파일에 구성한 내용을 작성했다고 가정합니다:

로컬 머신에서 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-roleAWS CLI 액세스를 위한 AWS IAM 역할의 역할 ARN 또는 역할 이름입니다.
--azure-identityAzure 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 애플리케이션 서비스를 통해 Azure CLI 명령을 실행합니다:

tsh az <command>

<command>: 인수 및 플래그를 포함한 az CLI 내의 유효한 명령입니다. 전체 az CLI 명령 목록은 Azure 문서를 참조하세요.

이 명령을 실행하려면 사용자의 역할 중 하나가 애플리케이션 서비스에서 사용되는 ID 중 하나가 포함된 spec.allow.azure_identities 필드를 포함해야 합니다. Teleport를 통해 Azure에 대한 안전한 액세스를 설정하는 방법에 대해서는 Teleport 애플리케이션 액세스로 Azure CLI 보호하기를 읽어보세요.

Teleport 원문 보기