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

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

비-HTTP API 지원

비-HTTP API(예: gRPC)에 대해서는 TCP 애플리케이션 액세스를 사용하세요.

전제 조건

  • 실행 중인 Teleport 클러스터 버전 이상. Teleport를 시작하려면, 가입하기 위해 무료 평가판에 등록하거나 데모 환경 설정하기를 참조하세요.

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

    tctltsh 다운로드에 대한 지침은 설치를 방문하세요.

  • 당신의 Teleport 클러스터에 연결할 수 있는지 확인하려면, tsh login으로 로그인한 다음 현재 자격 증명을 사용하여 tctl 명령어를 실행할 수 있는지 확인하십시오.

    예를 들어:

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

    클러스터 teleport.example.com

    버전 16.2.0

    CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678

    클러스터에 연결하고 tctl status 명령어를 실행할 수 있다면, 현재 자격 증명을 사용하여 작업대에서 후속 tctl 명령어를 실행할 수 있습니다.

    자신의 Teleport 클러스터를 호스팅하는 경우, Teleport 인증 서비스를 호스팅하는 컴퓨터에서 전체 권한으로 tctl 명령어를 실행할 수도 있습니다.

  • 간단함을 위해, 우리는 Docker 컨테이너에서 실행 중인 Grafana를 사용하고 이에 대해 API 쿼리를 실행할 것입니다. Grafana를 단일 Docker 명령어로 시작할 수 있습니다:

    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

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

키: /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 원문 보기