Infograb logo
애플리케이션 접근 참조 문서

구성

경고

프로덕션 인스턴스, 환경 및/또는 설정을 영구적으로 수정하기 전에 백업하는 것이 모범 사례로 권장됩니다. 이렇게 하면 필요할 경우 기존 상태로 롤백할 수 있습니다.

다음 스니펫은 teleport.yaml 구성 파일에 나타나는 애플리케이션 서비스의 전체 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.yaml라는 YAML 파일을 만든 다음, 아래 명령을 실행하여 새 app 리소스를 생성할 수 있습니다:

로컬 머신에서 tctl을 사용할 수 있도록 tsh로 클러스터에 로그인합니다.

"tsh login"을 먼저 실행하지 않고도 인증 서비스 호스트에서 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 내의 명령입니다. 전체 리스트는 Azure 문서에서 확인하세요.

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

Teleport 원문 보기