Infograb logo
TCP 애플리케이션 접근

Teleport는 TCP 기반 애플리케이션에 접근할 수 있도록 해줍니다. 이를 통해 사용자는 Teleport가 원래 지원하지 않는 SMTP 서버나 아직 원래 지원하지 않는 데이터베이스와 같은 애플리케이션에 연결할 수 있습니다.

전제 조건

  • 실행 중인 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 명령어를 실행할 수도 있습니다.
  • 연결할 TCP 애플리케이션. 이 가이드에서는 Docker에서 실행 중인 PostgreSQL을 예로 사용할 것입니다. 또한, 이미 가지고 있는 어떤 TCP 기반 애플리케이션도 사용할 수 있습니다.
  • Teleport 애플리케이션 서비스가 실행될 호스트.

Teleport 클러스터가 teleport.example.com*.teleport.example.com에서 접근 가능하다고 가정합니다. Teleport 프록시 서비스의 주소로 바꿀 수 있습니다. (Teleport 클라우드 고객의 경우, 이는 mytenant.teleport.sh와 비슷할 것입니다.)

애플리케이션 접근 및 DNS

Teleport은 애플리케이션 접근을 위해 구성한 각 애플리케이션에 서브도메인을 할당합니다. 예를 들어, 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 클라우드 플랫폼을 사용하는 경우, DNS 업데이트가 필요하지 않습니다. 왜냐하면 Teleport 클러스터가 자동으로 서브도메인과 서명된 TLS 인증서를 제공하기 때문입니다.

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

연결하고자 하는 애플리케이션이 이미 있는 경우 이 단계를 건너뛰세요.

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

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

단계 2/4. Teleport 애플리케이션 서비스 시작하기

Teleport 애플리케이션 서비스는 클러스터에 참여하기 위해 유효한 인증 토큰이 필요합니다.

토큰을 생성하려면, 인증 서비스 노드에서 다음 명령어를 실행합니다:

tctl tokens add --type=app

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

tctl users add --roles=access alice

토큰을 생성하려면, 클라우드 테넌트에 로그인하고 다음 명령어를 실행합니다:

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

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

이제 애플리케이션 서비스 노드에 Teleport를 설치합니다. 이것은 Teleport 프록시와 프록시할 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-v16.2.0.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 스킴은 Teleport가 이를 TCP 애플리케이션으로 인식할 수 있도록 tcp://이어야 합니다.

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

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

sudo systemctl enable teleport
sudo systemctl start teleport

your Teleport instance를 실행할 호스트에서 Teleport에 대한 시스템 데몬 서비스 구성을 생성하고, Teleport 서비스를 활성화한 후 Teleport를 시작하십시오:

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

your Teleport instance의 상태는 systemctl status teleport로 확인할 수 있으며, 로그는 journalctl -fu teleport로 볼 수 있습니다.

단계 3/4. 애플리케이션 프록시 시작하기

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

tsh login --proxy=teleport.example.com
tsh apps ls
애플리케이션 설명 유형 공개 주소 레이블----------- ----------- ---- ------------------------------------ -----------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 원문 보기