Infograb logo
TCP 애플리케이션 액세스

텔레포트는 모든 TCP 기반 애플리케이션에 대한 액세스를 제공합니다. 이를 통해 사용자는 텔레포트가 기본적으로 지원하지 않는 SMTP 서버 또는 텔레포트 데이터베이스 서비스에서 아직 지원되지 않는 데이터베이스와 같은 애플리케이션에 연결할 수 있습니다.

필수 조건

  • 실행 중인 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 명령어를 실행할 수도 있습니다.
  • 연결할 TCP 애플리케이션. 이 가이드에서는 Docker에서 실행 중인 PostgreSQL을 예로 사용합니다. 이미 가지고 있는 모든 TCP 기반 애플리케이션도 사용할 수 있습니다.
  • 텔레포트 애플리케이션 서비스를 실행할 호스트.

텔레포트 클러스터에 teleport.example.com*.teleport.example.com 에서 접근할 수 있다고 가정하겠습니다. 텔레포트 프록시 서비스의 주소로 대체할 수 있습니다. (텔레포트 클라우드 고객의 경우, 이는 mytenant.teleport.sh 와 유사할 것입니다.)

애플리케이션 액세스 및 DNS

Teleport는 Application Access에 대해 구성하는 각 애플리케이션에 서브도메인을 할당합니다. 예를 들어, Grafana를 리소스로 등록하면 Teleport는 리소스를 grafana.teleport.example.com 서브도메인에 할당합니다.

Teleport 클러스터를 자신의 네트워크에서 호스팅하는 경우, 애플리케이션 서브도메인을 고려하여 DNS 구성을 업데이트해야 합니다. DNS를 업데이트하는 방법에는 두 가지가 있습니다:

  • 서브도메인 이름에 대해 와일드카드 치환을 사용하여 단일 DNS 주소(A) 또는 정식 이름(CNAME) 레코드를 생성합니다. 예를 들어, *.teleport.example.com 이름으로 DNS 레코드를 생성합니다.
  • 각 애플리케이션 서브도메인에 대해 개별 DNS 주소(A) 또는 정식 이름(CNAME) 레코드를 생성합니다.

DNS를 수정하면 인증 기관(예: Let's Encrypt)이 각 서브도메인에 대한 인증서를 발급할 수 있고, 클라이언트가 접근하는 애플리케이션에 관계없이 Teleport 호스트를 검증할 수 있습니다.

Teleport 클라우드 플랫폼을 사용하는 경우, 서브도메인과 애플리케이션에 대한 서명된 TLS 인증서를 자동으로 제공하므로 DNS 업데이트가 필요하지 않습니다.

1/4단계. PostgreSQL 컨테이너 시작

연결할 애플리케이션이 이미 있는 경우 이 단계를 건너뛰십시오.

Docker 컨테이너에서 PostgreSQL 서버를 시작합니다:

docker run --name postgres -p 5432:5432 -e POSTGRES_PASSWORD=<pass> -d postgres

2/4단계. 텔레포트 애플리케이션 서비스 시작

텔레포트 애플리케이션 서비스는 클러스터에 조인하기 위해 유효한 인증 토큰이 필요합니다.

하나를 생성하려면 Auth 서비스 노드에서 다음 명령을 실행하십시오:

tctl tokens add --type=app

그다음, 클러스터 애플리케이션에 연결할 수 있도록 access 역할을 가진 텔레포트 사용자를 생성합니다:

tctl users add --roles=access alice

하나를 생성하려면 클라우드 테넌트에 로그인하고 다음 명령을 실행하십시오:

tsh login --proxy=mytenant.teleport.sh
tctl tokens add --type=app

생성된 토큰을 애플리케이션 서비스가 실행될 노드의 /tmp/token 에 저장합니다.

이제 애플리케이션 서비스 노드에 텔레포트를 설치합니다. 텔레포트 프록시와 프록시할 TCP 애플리케이션 모두에 접근할 수 있어야 합니다.

Linux 서버에 Teleport 설치하기:

  1. Teleport 에디션에 따라 edition를 다음 중 하나로 할당합니다:

    에디션
    Teleport Enterprise Cloudcloud
    Teleport Enterprise (자가 호스팅)enterprise
    Teleport Community Editionoss
  2. 설치할 Teleport 버전을 가져옵니다. 클러스터에서 자동 에이전트 업데이트가 활성화된 경우, 최신 Teleport 버전을 쿼리하여 업데이트된 내용과의 호환성을 확인합니다:

    TELEPORT_DOMAIN=example.teleport.com
    TELEPORT_VERSION="$(curl https://$TELEPORT_DOMAIN/v1/webapi/automaticupgrades/channel/default/version | sed 's/v//')"

    그렇지 않으면, Teleport 클러스터의 버전을 가져옵니다:

    TELEPORT_DOMAIN=example.teleport.com
    TELEPORT_VERSION="$(curl https://$TELEPORT_DOMAIN/v1/webapi/ping | jq -r '.server_version')"
  3. Linux 서버에 Teleport를 설치합니다:

    curl https://cdn.teleport.dev/install-v15.4.11.sh | bash -s ${TELEPORT_VERSION} edition

    설치 스크립트는 Linux 서버에서 패키지 관리자를 감지하고 이를 사용하여 Teleport 바이너리를 설치합니다. 설치를 사용자 정의하려면 설치 가이드에서 Teleport 패키지 리포지토리에 대해 알아보세요.

애플리케이션 서비스 구성 파일 /etc/teleport.yaml 을 다음 내용으로 생성합니다:

version: v3
teleport:
  auth_token: "/tmp/token"
  proxy_server: teleport.example.com:3080
auth_service:
  enabled: "no"
ssh_service:
  enabled: "no"
proxy_service:
  enabled: "no"
app_service:
  enabled: "yes"
  apps:
    - name: "tcp-app"
      uri: tcp://localhost:5432

URI 스킴은 텔레포트가 이를 TCP 애플리케이션으로 인식할 수 있도록 tcp:// 여야 합니다.

호스트가 부팅될 때 your Teleport instance가 자동으로 시작되도록 systemd 서비스를 생성하여 구성합니다. 지침은 your Teleport instance를 설치한 방법에 따라 다릅니다.

your Teleport instance를 실행할 호스트에서 Teleport를 활성화하고 시작합니다:

sudo systemctl enable teleport
sudo systemctl start teleport

your Teleport instance를 실행할 호스트에서 Teleport의 systemd 서비스 구성을 만들고, Teleport 서비스를 활성화한 후 Teleport를 시작합니다:

sudo teleport install systemd -o /etc/systemd/system/teleport.service
sudo systemctl enable teleport
sudo systemctl start teleport

systemctl status teleport 로 your Teleport instance의 상태를 확인하고, journalctl -fu teleport 로 로그를 볼 수 있습니다.

3/4단계. 앱 프록시 시작

텔레포트 클러스터에 로그인하고 사용 가능한 애플리케이션을 확인합니다:

tsh login --proxy=teleport.example.com
tsh apps ls
Application Description Type Public Address Labels----------- ------------- ---- -------------------------------- -----------tcp-app TCP tcp-app.root.gravitational.io

당신의 TCP 애플리케이션이 나타나고 TCP 유형으로 표시되어야 합니다.

이제 애플리케이션에 로그인합니다:

tsh apps login tcp-app
TCP 앱 tcp-app에 로그인했습니다. 로컬 TCP 프록시를 시작합니다:
tsh proxy app tcp-app
그런 다음 이 프록시를 통해 애플리케이션에 연결합니다.

그다음, 이를 위해 로컬 프록시를 시작합니다:

tsh proxy app tcp-app
127.0.0.1:55868에서 tcp-app에 연결을 프록시 중입니다.

tsh proxy app 명령은 대상 애플리케이션으로 모든 연결을 프록시하는 리스너를 설정합니다.

4/4단계. 연결

로컬 프록시가 실행 중이면, 일반적으로 사용하여 애플리케이션에 연결하는 애플리케이션 클라이언트를 사용하여 애플리케이션에 연결할 수 있습니다:

psql postgres://postgres@localhost:55868/postgres

다음 단계

Teleport 원문 보기