Infograb logo
Teleport 애플리케이션 액세스를 이용한 REST API 접근

Teleport 애플리케이션 서비스는 curl 또는 Postman과 같은 도구를 사용하여 애플리케이션의 (REST 또는 Teleport의 gRPC) API에 접근하는 데 사용될 수 있습니다.

비 HTTP API 지원

비 HTTP API(예: gRPC)에는 TCP 애플리케이션 액세스를 사용하십시오.

전제 조건

  • 실행 중인 Teleport 클러스터 버전 17.0.0-dev 이상. Teleport를 시작하려면 가입하여 무료 평가판을 이용하거나 데모 환경 설정 방법을 확인하십시오.

  • tctl 관리자 도구와 tsh 클라이언트 도구.

    tctltsh 다운로드 방법에 대한 지침은 설치를 방문하십시오.

  • 연결이 가능한지 확인하기 위해 tsh login 으로 로그인한 다음, 현재 자격 증명을 사용하여 tctl 명령어를 실행할 수 있는지 확인하십시오.

    예를 들어:

    tsh login --proxy=teleport.example.com --user=email@example.com
    tctl status

    클러스터 teleport.example.com

    버전 17.0.0-dev

    CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678

    클러스터에 연결할 수 있고 tctl status 명령어를 실행할 수 있다면, 현재 자격 증명을 사용하여 워크스테이션에서 후속 tctl 명령어를 실행할 수 있습니다.
    자신의 Teleport 클러스터를 호스팅하는 경우, Teleport Auth Service를 호스팅하는 컴퓨터에서 전체 권한으로 tctl 명령어를 실행할 수도 있습니다.

  • 단순함을 위해, 우리는 Docker 컨테이너에서 실행되는 Grafana를 사용하고 API 쿼리를 실행합니다. 다음의 단일 Docker 명령을 통해 Grafana를 실행할 수 있습니다:

docker run -d -p 3000:3000 grafana/grafana

Teleport 클러스터에 Grafana를 연결하려면 Teleport App Service YAML 구성 파일에 다음 섹션을 추가하십시오:

app_service:
  enabled: yes
  apps:
    - name: "grafana"
      description: "테스트 Grafana 서버"
      uri: "http://localhost:3000"
      labels:
        "env": "dev"

API 접근하기

Teleport 클러스터에 로그인하고 사용 가능한 애플리케이션을 확인하십시오:

tsh login --proxy=teleport.example.com
tsh apps ls

애플리케이션 설명 공개 주소 레이블

------------ -------------- ---------------------------- -------

grafana 테스트 Grafana 서버 grafana.teleport.example.com env=dev

애플리케이션의 단기 X.509 인증서를 가져옵니다:

tsh apps login grafana

앱 grafana에 로그인했습니다. 예제 curl 명령:


curl \ --cert /Users/alice/.tsh/keys/teleport.example.com/alice-app/cluster-name/grafana-x509.pem \ --key /Users/alice/.tsh/keys/teleport.example.com/alice \ https://grafana.teleport.example.com:3080

로그인 메시지는 Teleport 앱 액세스를 통해 대상 애플리케이션의 API를 호출하는 데 사용할 수 있는 예제 curl 명령을 보여줍니다.

CA 및 키 쌍 파일

명령에서 사용자의 인증서/키 쌍 경로를 주의 깊게 확인하십시오 - curl 은 클라이언트 인증서를 사용하여 Teleport에 인증합니다.

Teleport 프록시 서비스는 일반적으로 Let's Encrypt와 같은 공개 인증 기관에서 발급한 와일드카드 인증서로 구성됩니다. 자체 호스팅된 Teleport 클러스터를 실행 중이고 Teleport 프록시 서비스가 셀프 서명된 인증서를 사용하도록 구성된 경우, curl 명령에서 --cacert <path>를 사용하여 이를 포함해야 합니다.

Grafana의 API는 인증이 필요하므로, curl 명령을 업데이트하여 기본 인증 정보를 제공하고 기본 Grafana 사용자 이름/비밀번호를 사용하여 /api/users 엔드포인트를 호출하겠습니다:

curl --user admin:admin \ --cert /Users/alice/.tsh/keys/teleport.example.com/alice-app/cluster-name/grafana-x509.pem \ --key /Users/alice/.tsh/keys/teleport.example.com/alice \ https://grafana.teleport.example.com:3080/api/users

[{"id":1,"name":"","login":"admin","email":"admin@localhost","avatarUrl":"/avatar/46d229b033af06a191ff2267bca9ae56","isAdmin":true,"isDisabled":false,"lastSeenAt":"2021-03-18T17:25:59Z","lastSeenAtAge":"\u003c 1m","authLabels":[]}]

애플리케이션의 X.509 인증서는 사용자의 역할에 의해 허용된 TTL 이후 자동으로 만료됩니다. 또한 명시적으로 제거할 수 있습니다:

tsh apps logout

앱 "grafana"에서 로그아웃했습니다.

애플리케이션 정보

tsh apps config

현재 앱 URI와 비밀의 경로를 보여줍니다.

이는 CLI 도구(예: curl ) 또는 GUI 도구(예: Postman)를 구성할 때 유용합니다.

앱 정보를 표 형식으로 출력해 보겠습니다:

tsh apps config

이름: grafana

URI: https://grafana.teleport.example.com:3080

CA: /Users/alice/.tsh/keys/teleport.example.com/certs.pem

Cert: /Users/alice/.tsh/keys/teleport.example.com/alice-app/cluster-name/grafana-x509.pem

Key: /Users/alice/.tsh/keys/teleport.example.com/alice

우리는 또한 특정 앱 구성을 출력하기 위해 다양한 --format 값을 제공할 수 있습니다:

tsh apps config --format=uri

https://grafana-root.gravitational.io:3080


tsh apps config --format=ca

/Users/alice/.tsh/keys/teleport.example.com/certs.pem


tsh apps config --format=cert

/Users/alice/.tsh/keys/teleport.example.com/alice-app/cluster-name/grafana-x509.pem


tsh apps config --format=key

/Users/alice/.tsh/keys/teleport.example.com/alice

이는 적절한 curl 명령어를 구성하기 위해 간단한 템플릿을 만들 때 자동화에 유용할 수 있습니다. 위의 Grafana /api/users 예제를 사용하여:

curl --user admin:admin \ --cert $(tsh apps config --format=cert) \ --key $(tsh apps config --format=key) \ $(tsh apps config --format=uri)/api/users
Teleport 원문 보기