이 가이드에서는 가입 토큰을 통해 하나 이상의 서비스를 실행 중인 Teleport 프로세스를 클러스터에 등록하는 방법을 보여줍니다.
이 접근 방식에서는 새로운 Teleport 프로세스를 등록할 의사를 선언하고, Teleport가 프로세스가 Teleport 클러스터와 신뢰 관계를 설정하는 데 사용할 보안 토큰을 생성합니다.
전제 조건
-
실행 중인 Teleport 클러스터 버전 이상. Teleport를 시작하려면, 가입하기 위해 무료 평가판에 등록하거나 데모 환경 설정하기를 참조하세요.
-
tctl
관리 도구와tsh
클라이언트 도구.tctl
과tsh
다운로드에 대한 지침은 설치를 방문하세요.
-
Teleport 프로세스를 호스팅하는 데 사용할 Linux 서버, 예를 들어, Linux 배포판 기반의 가상 머신이나 Docker 컨테이너가 필요합니다.
이 가이드에서는 Teleport SSH 서비스 인스턴스를 등록하는 방법을 보여줍니다. 이 접근 방식은 프록시 서비스, Kubernetes 서비스, 데이터베이스 서비스 및 인프라의 리소스에 액세스하기 위한 기타 Teleport 서비스에도 적용됩니다.
가입 토큰 방법은 클러스터에 단일 프록시 서비스 인스턴스와 로드 밸런서(LB) 뒤의 여러 프록시 서비스 인스턴스 또는 여러 값이 있는 DNS 항목이 포함된 경우에 작동합니다. 여러 프록시 서비스 인스턴스가 있는 경우, 클러스터에 가입하는 Teleport 프로세스는 모든 프록시 서비스 인스턴스로 터널을 설정합니다.
로드 밸런서를 사용하는 경우, 라운드 로빈 또는 유사한 균형算法을 사용해야 합니다. Sticky load balancing 알고리즘(즉, "세션 친화성")을 Teleport 프록시 서비스 인스턴스와 함께 사용하지 마십시오.
Docker 컨테이너를 사용하고 있는 경우, 이 가이드는 Linux 호스트에
curl
과sudo
가 설치되어 있다고 가정합니다.
당신의 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
명령어를 실행할 수도 있습니다.
1단계/3단계. Teleport 설치하기
Linux 호스트에 Teleport를 설치합니다.
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 패키지 리포지토리에 대해 알아보세요.
2단계/3단계. Teleport 프로세스를 클러스터에 가입하기
이 섹션에서는 다음을 통해 Teleport 프로세스를 클러스터에 가입할 것입니다:
- 가입 토큰 얻기
- 가입 토큰과 함께 Teleport 프로세스 실행하기
토큰 생성하기
Teleport는 클러스터에 가입한 Teleport 프로세스만 인프라의 리소스에 액세스할 수 있도록 허용합니다.
로컬 머신에서 tctl
도구를 사용하여 새로운 토큰을 생성합니다. 다음 예시에서는 TTL이 5분인 새 토큰을 생성합니다:
새로운 Teleport SSH 서비스 인스턴스를 위한 단기 초대 토큰 생성:
tctl tokens add --ttl=5m --type=node초대 토큰: abcd123-insecure-do-not-use-this이 토큰은 5분 후에 만료됩니다.
새 노드에서 클러스터에 가입하려면 다음을 실행하십시오:
> teleport start \ --roles=node \ --token=abcd123-insecure-do-not-use-this \ --ca-pin=sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678 \ --auth-server=192.0.2.0:3025
다음 사항에 유의하시기 바랍니다:
- 이 초대 토큰은 5분 후에 만료됩니다. - 192.0.2.0:3025는 새 노드에서 접근 가능해야 합니다.
이 명령에서 우리는 토큰에 node
유형을 지정하였으므로 SSH 서비스 인스턴스에 속하게 됩니다.
토큰을 복사하여 이 가이드에서 나중에 사용할 수 있도록 합니다. tctl tokens add
의 나머지 출력은 무시할 수 있습니다.
가입 토큰을 생성할 때 --type
플래그에 대해 우리가 지원하는 모든 값은 다음과 같습니다:
역할 | Teleport 서비스 |
---|---|
app | 애플리케이션 서비스 |
auth | 인증 서비스 |
bot | 머신 ID |
db | 데이터베이스 서비스 |
discovery | 디스커버리 서비스 |
kube | Kubernetes 서비스 |
node | SSH 서비스 |
proxy | 프록시 서비스 |
windowsdesktop | Windows 데스크탑 서비스 |
관리자는 필요할 때마다 토큰을 생성할 수 있습니다. Teleport 프로세스는 TTL이 만료될 때까지 여러 번 토큰을 사용할 수 있으며, bot
유형의 토큰은 머신 ID에 의해 사용됩니다.
생성한 모든 토큰을 나열하려면 다음 명령어를 실행합니다:
tctl tokens ls토큰 유형 레이블 만료 시간 (UTC)------------------------------- ---- ------ --------------------------abcd123-insecure-do-not-use-this Node 30 Mar 23 18:15 UTC (2m8s)
장기 정적 토큰보다 단기 토큰을 사용하세요. 정적 토큰은 훔치고, 추측하고, 누출하기가 더 쉽습니다.
정적 토큰은 관리자가 미리 정의하고 Auth Service의 구성 파일에 저장합니다:
# Auth Service의 `/etc/teleport.yaml` 파일의 구성 섹션
auth_service:
enabled: true
tokens:
# 이 정적 토큰은 새로운 호스트가 클러스터에 "proxy" 또는 "node"로 가입할 수 있도록 허용합니다
- 'proxy,node:secret-token-value'
# 토큰은 파일에 저장할 수도 있습니다. 이 예시에서는 새로운 Auth Service 인스턴스를 추가하기 위한 토큰이 /path/to/tokenfile에 저장되어 있습니다.
- 'auth:/path/to/tokenfile'
초대 토큰으로 Teleport 프로세스 시작하기
새로운 Teleport 프로세스를 클러스터에 추가하려면 호스트에서 다음 명령을 실행합니다. 생성한 토큰은 join-token에 할당하고, Teleport 프록시 서비스 또는 Teleport Enterprise Cloud 테넌트의 호스트와 웹 포트는 proxy-address에 할당합니다 (예: teleport.example.com:443
):
sudo teleport configure \ --roles=node \ --token=join-token \ --proxy=proxy-address \ -o file
SSH 서비스 인스턴스의 경우 teleport node configure
를 실행하여 teleport configure
대신 사용할 수도 있습니다. 이렇게 하면 명령에서 --roles=node
플래그를 생략할 수 있습니다.
지금까지 이 가이드는 새로운 Teleport 프로세스를 프록시 서비스에 연결하여 클러스터에 가입하고 있다고 가정했습니다. (이 방법은 Teleport Enterprise Cloud에서 유일한 가능성입니다.) 인프라의 설계에 따라, 새로운 Teleport 프로세스를 Auth Service에 직접 연결해야 할 수도 있습니다.
다른 가입 방법이 적합하지 않은 경우에만 Teleport 프로세스를 Auth Service에 직접 연결하십시오. Auth Service를 가능한 한 적은 수의 수신 트래픽 소스에 노출하는 것이 좋습니다.
클러스터에 가입하는 Teleport 프로세스는 공격자가 Auth Service 호스트의 주소를 탈취하는 것을 방지하기 위해 Auth Service와 신뢰를 구축해야 합니다.
이를 위해, 새로운 Teleport 프로세스에 인증 서비스의 인증 기관에서 생성된 보안 해시 값을 공급해야 합니다. 이를 CA 핀이라고 합니다. 이렇게 하면 공격자가 개인 키를 쉽게 위조하여 악의적인 서비스와 통신하도록 Teleport 프로세스를 속일 수 없습니다.
CA 핀 얻기
로컬 머신에서 Auth Service의 CA 핀을 검색하십시오:
tctl status클러스터 teleport.example.com버전 12.1.1호스트 CA never updated유저 CA never updateddb CA never updatedopenssh CA never updatedjwt CA never updatedsaml_idp CA never updatedCA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678
CA 핀을 복사하여 ca-pin에 할당합니다.
CA 핀은 Teleport 관리자가 tctl auth rotate
를 실행하여 CA 회전을 수행할 경우 무효화됩니다.
가입 토큰과 CA 핀으로 Teleport 프로세스 구성하기
다음 명령을 실행하여 이전에 보여준 teleport configure
명령 대신 Teleport 프로세스를 구성합니다. auth-service를 Auth Service 호스트의 호스트 및 gRPC 포트로 설정합니다 (예: teleport.example.com:3025
).
sudo teleport configure \ --roles=node \ --token=join-token \ --auth-server=auth-service \ -o file
다음으로, Teleport 구성 파일 /etc/teleport.yaml
을 편집하여 CA 핀 (즉, teleport.ca_pin
필드)에 방금 복사한 값을 할당하십시오:
sudo sed -i 's| ca_pin: ""| ca_pin: "ca-pin"|' /etc/teleport.yaml
호스트가 부팅될 때 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
로 볼 수 있습니다.
이 가이드를 로컬 Docker 컨테이너로 수행한 경우, 다음 명령을 실행하여 새 Teleport 프로세스를 포그라운드에서 실행하십시오:
teleport start
새 서비스가 온라인이 되면, Auth Service에 매 몇 초마다 하트비트 요청을 보내기 시작합니다. 이를 통해 사용자는 클러스터 멤버십 및 크기를 탐색할 수 있습니다.
로컬 머신에서 다음 명령을 실행하여 클러스터의 모든 Teleport SSH 서비스 인스턴스를 확인하십시오:
tctl nodes ls호스트 UUID 공개 주소 레이블 버전------------- --------------------- -------------- ---------------------- -------1f58429134c4 6805dda3-779e-493b... hostname=1f58429134c4 16.2.0
3단계/3단계. 초대 취소하기
Teleport 프로세스가 초대 토큰을 사용하는 것을 방지하기 위해 초대 토큰을 취소할 수 있습니다.
로컬 머신에서 다음 명령을 실행하여 새로운 프록시 서비스에 대한 토큰을 생성합니다:
tctl nodes add --ttl=5m --roles=proxy초대 토큰: abcd123-insecure-do-not-use-this.
이 토큰은 5분 후에 만료됩니다.
새로운 노드에서 다음을 실행하여 클러스터에 가입하십시오:
> teleport start \
--roles=proxy \
--token=abcd123-insecure-do-not-use-this \
--ca-pin=sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678 \
--auth-server=123.123.123.123:443
다음 사항에 유의하시기 바랍니다:
- 이 초대 토큰은 5분 후에 만료됩니다.
- 123.123.123.123는 새 노드에서 접근 가능해야 합니다.
다음으로, 다음 명령을 실행하여 보류 중인 토큰 목록을 확인합니다:
tctl tokens ls토큰 유형 레이블 만료 시간 (UTC)------------------------------- ----- ------ ---------------------------abcd123-insecure-do-not-use-this Node 30 Mar 23 18:20 UTC (36s)efgh456-insecure-do-not-use-this Proxy 30 Mar 23 18:24 UTC (4m39s)
tctl tokens ls
의 출력에는 사용자를 추가하는 데 사용된 토큰과 Teleport 프로세스를 클러스터에 추가하는 데 사용된 토큰이 포함됩니다.
이 가이드에서 클러스터에 새 Teleport 프로세스를 초대하기 위해 이전에 생성한 토큰은 Node
역할을 가졌습니다. 두 번째 토큰은 프록시 서비스 인스턴스에 대해 생성한 것입니다.
tctl
을 통해 생성된 토큰은 tctl tokens rm
명령을 통해 삭제(취소)할 수 있습니다. 위 출력에서 두 번째 토큰을 복사하고 다음 명령을 실행하여 삭제하여 token-to-delete에 할당합니다:
tctl tokens rm token-to-delete토큰 abcd123-insecure-do-not-use-this이 삭제되었습니다.
다음 단계
- 워크로드가 서로 다른 네트워크나 클라우드로 분리되어 있는 경우, 신뢰할 수 있는 클러스터 설정을 권장합니다. 신뢰할 수 있는 클러스터 구성의 시작 방법을 읽어보십시오.