Teleport는 TCP 기반 애플리케이션에 접근할 수 있도록 해줍니다. 이를 통해 사용자는 Teleport가 원래 지원하지 않는 SMTP 서버나 아직 원래 지원하지 않는 데이터베이스와 같은 애플리케이션에 연결할 수 있습니다.
전제 조건
-
실행 중인 Teleport 클러스터 버전 이상. Teleport를 시작하려면, 가입하기 위해 무료 평가판에 등록하거나 데모 환경 설정하기를 참조하세요.
-
tctl
관리 도구와tsh
클라이언트 도구.tctl
과tsh
다운로드에 대한 지침은 설치를 방문하세요.
- 당신의 Teleport 클러스터에 연결할 수 있는지 확인하려면,
tsh login
으로 로그인한 다음 현재 자격 증명을 사용하여tctl
명령어를 실행할 수 있는지 확인하십시오. 예를 들어:클러스터에 연결하고tsh login --proxy=teleport.example.com --user=email@example.comtctl 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
와 비슷할 것입니다.)
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.shtctl tokens add --type=app
생성된 토큰을 애플리케이션 서비스가 실행될 노드의 /tmp/token
에 저장합니다.
이제 애플리케이션 서비스 노드에 Teleport를 설치합니다. 이것은 Teleport 프록시와 프록시할 TCP 애플리케이션 모두에 접근할 수 있어야 합니다.
Linux 서버에 Teleport 설치하기:
-
Teleport 에디션에 따라 edition을(를) 다음 중 하나로 지정합니다:
에디션 값 Teleport Enterprise Cloud cloud
Teleport Enterprise (자체 호스팅) enterprise
Teleport Community Edition oss
-
설치할 Teleport의 버전을 확인합니다. 클러스터에서 자동 에이전트 업데이트가 활성화되어 있는 경우, 업데이터와 호환되는 최신 Teleport 버전을 쿼리합니다:
TELEPORT_DOMAIN=example.teleport.comTELEPORT_VERSION="$(curl https://$TELEPORT_DOMAIN/v1/webapi/automaticupgrades/channel/default/version | sed 's/v//')"그렇지 않으면, Teleport 클러스터의 버전을 확인합니다:
TELEPORT_DOMAIN=example.teleport.comTELEPORT_VERSION="$(curl https://$TELEPORT_DOMAIN/v1/webapi/ping | jq -r '.server_version')" -
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 teleportsudo systemctl start teleport
your Teleport instance를 실행할 호스트에서 Teleport에 대한 시스템 데몬 서비스 구성을 생성하고, Teleport 서비스를 활성화한 후 Teleport를 시작하십시오:
sudo teleport install systemd -o /etc/systemd/system/teleport.servicesudo systemctl enable teleportsudo systemctl start teleport
your Teleport instance의 상태는 systemctl status teleport
로 확인할 수 있으며, 로그는 journalctl -fu teleport
로 볼 수 있습니다.
단계 3/4. 애플리케이션 프록시 시작하기
Teleport 클러스터에 로그인하고 사용 가능한 애플리케이션을 확인합니다:
tsh login --proxy=teleport.example.comtsh apps ls애플리케이션 설명 유형 공개 주소 레이블----------- ----------- ---- ------------------------------------ -----------tcp-app TCP tcp-app.root.gravitational.io
당신의 TCP 애플리케이션이 표시되어야 하며 TCP
유형으로 표시됩니다.
이제 애플리케이션에 로그인합니다:
tsh apps login tcp-appTCP 애플리케이션 tcp-app에 로그인했습니다. 로컬 TCP 프록시를 시작합니다:
tsh proxy app tcp-app
그런 다음 이 프록시를 통해 애플리케이션에 연결합니다.
그런 다음, 이를 위한 로컬 프록시를 시작합니다:
tsh proxy app tcp-app127.0.0.1:55868의 tcp-app에 대한 연결을 프록시합니다
tsh proxy app
명령은 모든 연결을 대상 애플리케이션으로 프록시하는 리스너를 설정합니다.
단계 4/4. 연결하기
로컬 프록시가 실행 중인 경우, 이를 사용하여 애플리케이션 클라이언트를 사용하여 애플리케이션에 연결할 수 있습니다:
psql postgres://postgres@localhost:55868/postgres
다음 단계
- 애플리케이션에 대한 접근 제어에 대해 알아보세요.
- TCP 앱에 VNet으로 연결하기 및 사용자 지정
public_addr
에 대한 VNet 구성에 대해 알아보세요.