Infograb logo
보안 토큰으로 서비스 연결

이 가이드에서는 join token을 사용하여 하나 이상의 서비스를 실행하는 Teleport 프로세스를 클러스터에 등록하는 방법을 보여줍니다.

이 접근법에서는 새 Teleport 프로세스를 등록할 의도를 선언하고, Teleport는 프로세스가 Teleport 클러스터와 신뢰 관계를 설정하는 데 사용하는 보안 토큰을 생성합니다.

전제 조건

  • 실행 중인 Teleport 클러스터 버전 17.0.0-dev 이상. Teleport를 시작하려면 가입하여 무료 평가판을 이용하거나 데모 환경 설정 방법을 확인하십시오.

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

    tctltsh 다운로드 방법에 대한 지침은 설치를 방문하십시오.

  • Teleport 프로세스를 호스팅할 Linux 서버, 예를 들어 Linux 배포 기반의 가상 머신이나 Docker 컨테이너.

    이 가이드에서는 Teleport SSH 서비스 인스턴스를 등록하는 방법을 보여줍니다. 이 접근법은 Proxy Service, Kubernetes Service, Database Service 및 인프라의 리소스에 액세스하는 다른 Teleport 서비스에도 적용됩니다.

    join token 방식은 클러스터에 단일 Proxy Service 인스턴스와 로드 밸런서(LB) 또는 여러 값을 가진 DNS 항목 뒤에 있는 여러 Proxy Service 인스턴스가 포함된 경우 작동합니다. 여러 Proxy Service 인스턴스가 있는 경우, 클러스터에 조인하는 Teleport 프로세스는 모든 Proxy Service 인스턴스와 터널을 설정합니다.

    로드 밸런서를 사용하는 경우, 라운드 로빈 또는 유사한 밸런싱 알고리즘을 사용해야 합니다. Teleport Proxy Service 인스턴스와 함께 스티키 로드 밸런싱 알고리즘(즉, "세션 애피니티")을 사용하지 마십시오.

    Docker 컨테이너를 사용하는 경우, 이 가이드에서는 Linux 호스트에 curlsudo 가 설치되어 있다고 가정합니다.

연결이 가능한지 확인하기 위해 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 명령어를 실행할 수도 있습니다.

1/3단계. Teleport 설치하기

Linux 호스트에 Teleport를 설치합니다.

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 패키지 리포지토리에 대해 알아보세요.

2/3단계. Teleport 프로세스를 클러스터에 조인하기

이 섹션에서는 다음을 통해 Teleport 프로세스를 클러스터에 조인합니다:

  • join token Obtaining
  • join token으로 Teleport 프로세스 실행하기

토큰 생성

Teleport는 클러스터에 조인한 Teleport 프로세스만 귀하의 인프라 내 리소스에 대한 액세스를 허용합니다.

로컬 컴퓨터에서 tctl 도구를 사용하여 새 토큰을 생성하십시오. 다음 예제에서는 5분짜리 TTL을 갖는 새 토큰이 생성됩니다:

새로운 Teleport SSH Service 인스턴스를 위한 단기간 초대 토큰 생성:

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 Service 인스턴스에 속함을 나타냅니다.

나중에 이 가이드에서 사용할 수 있도록 토큰을 복사하십시오. 나머지 tctl tokens add 출력은 무시해도 됩니다.

join token을 생성할 때 --type 플래그에 대해 지원하는 모든 값은 다음과 같습니다:

역할Teleport 서비스
app애플리케이션 서비스
auth인증 서비스
bot머신 ID
db데이터베이스 서비스
discovery탐색 서비스
kube쿠버네티스 서비스
nodeSSH 서비스
proxy프록시 서비스
windowsdesktopWindows 데스크톱 서비스

관리자는 필요에 따라 토큰을 생성할 수 있습니다. 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 Proxy Service 또는 Teleport Enterprise Cloud 테넌트의 호스트와 웹 포트에 proxy-address을 할당합니다 (예: teleport.example.com:443 ):

sudo teleport configure \ --roles=node \ --token=join-token \ --proxy=proxy-address \ -o file

SSH Service 인스턴스의 경우 teleport configure 대신 teleport node configure 를 실행할 수도 있습니다. 이렇게 하면 명령에서 --roles=node 플래그를 제외할 수 있습니다.

지금까지 이 가이드는 새 Teleport 프로세스를 Proxy Service에 연결하여 클러스터에 조인한다고 가정했습니다. (이는 Teleport Enterprise Cloud에서 유일한 가능성입니다.) 인프라의 설계에 따라 새 Teleport 프로세스를 Auth Service에 직접 연결해야 할 수도 있습니다.

다른 조인 방법이 적합하지 않은 경우에만 Teleport 프로세스를 Auth Service에 직접 연결하십시오. 가능한 한 적은 소스의 수신 트래픽이 Auth Service에 노출되도록 권장합니다.

클러스터에 조인하는 Teleport 프로세스는 공격자가 Auth Service 호스트의 주소를 탈취하는 것을 방지하기 위해 Auth Service와 신뢰를 구축해야 합니다.

이를 위해 Auth Service의 인증 기관에 의해 생성된 안전한 해시 값을 새 Teleport 프로세스에 제공하며, 이를 CA pin이라고 합니다. 이렇게 하면 공격자가 악성 서비스와 통신하도록 Teleport 프로세스를 속이기 위해 개인 키를 쉽게 위조할 수 없습니다.

CA pin 받기

로컬 머신에서 Auth Service의 CA pin을 검색하세요:

tctl status
Cluster teleport.example.comVersion 12.1.1host CA never updateduser CA never updateddb CA never updatedopenssh CA never updatedjwt CA never updatedsaml_idp CA never updatedCA pin sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678

CA pin을 복사하여 ca-pin의 값으로 할당하세요.

Teleport 관리자가 tctl auth rotate 명령을 실행하여 CA 회전을 수행하면 CA pin이 무효화됩니다.

초대 토큰 및 CA pin으로 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 pin을 ( teleport.ca_pin 필드) 할당하세요:

sudo sed -i 's| ca_pin: ""| ca_pin: "ca-pin"|' /etc/teleport.yaml

호스트가 부팅될 때 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 로 로그를 볼 수 있습니다.

로컬 Docker 컨테이너에서 이 가이드를 따랐다면, 다음 명령을 실행하여 새 Teleport 프로세스를 포그라운드에서 실행하세요:

teleport start

새 서비스가 온라인에 접속하면 Auth Service에 몇 초마다 하트비트 요청을 전송하기 시작합니다. 이를 통해 사용자는 클러스터 구성원 및 크기를 탐색할 수 있습니다.

로컬 머신에서 다음 명령을 실행하여 클러스터의 모든 Teleport SSH Service 인스턴스를 확인하세요:

tctl nodes ls
Host UUID Public Address Labels Version------------- --------------------- -------------- ---------------------- -------1f58429134c4 6805dda3-779e-493b... hostname=1f58429134c4 17.0.0-dev

3/3단계. 초대장 취소

초대 토큰을 취소하여 Teleport 프로세스가 이를 사용하는 것을 방지할 수 있습니다.

다음 명령어를 로컬 머신에서 실행하여 새로운 Proxy Service용 토큰을 생성하세요:

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 역할로 토큰을 생성했습니다. 두 번째 토큰은 Proxy Service 인스턴스를 위해 생성한 것입니다.

tctl 을 통해 생성된 토큰은 tctl tokens rm 명령어를 통해 삭제(취소)할 수 있습니다. 위의 출력에서 두 번째 토큰을 복사하고 다음 명령어를 실행하여 삭제하세요. 토큰을 token-to-delete에 할당합니다.

tctl tokens rm token-to-delete

토큰 abcd123-insecure-do-not-use-this이 삭제되었습니다

다음 단계

  • 서로 다른 네트워크 또는 클라우드에 나뉘어진 작업 부하가 있는 경우, 신뢰할 수 있는 클러스터를 설정하는 것을 권장합니다. 신뢰할 수 있는 클러스터 구성에서 시작하는 방법을 읽어보세요.
Teleport 원문 보기