Infograb logo
보안 토큰을 사용하여 서비스에 가입하기

이 가이드에서는 가입 토큰을 통해 하나 이상의 서비스를 실행 중인 Teleport 프로세스를 클러스터에 등록하는 방법을 보여줍니다.

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

전제 조건

  • 실행 중인 Teleport 클러스터 버전 이상. Teleport를 시작하려면, 가입하기 위해 무료 평가판에 등록하거나 데모 환경 설정하기를 참조하세요.

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

    tctltsh 다운로드에 대한 지침은 설치를 방문하세요.

  • Teleport 프로세스를 호스팅하는 데 사용할 Linux 서버, 예를 들어, Linux 배포판 기반의 가상 머신이나 Docker 컨테이너가 필요합니다.

    이 가이드에서는 Teleport SSH 서비스 인스턴스를 등록하는 방법을 보여줍니다. 이 접근 방식은 프록시 서비스, Kubernetes 서비스, 데이터베이스 서비스 및 인프라의 리소스에 액세스하기 위한 기타 Teleport 서비스에도 적용됩니다.

    가입 토큰 방법은 클러스터에 단일 프록시 서비스 인스턴스와 로드 밸런서(LB) 뒤의 여러 프록시 서비스 인스턴스 또는 여러 값이 있는 DNS 항목이 포함된 경우에 작동합니다. 여러 프록시 서비스 인스턴스가 있는 경우, 클러스터에 가입하는 Teleport 프로세스는 모든 프록시 서비스 인스턴스로 터널을 설정합니다.

    로드 밸런서를 사용하는 경우, 라운드 로빈 또는 유사한 균형算法을 사용해야 합니다. Sticky load balancing 알고리즘(즉, "세션 친화성")을 Teleport 프록시 서비스 인스턴스와 함께 사용하지 마십시오.

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

당신의 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 명령어를 실행할 수도 있습니다.

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-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디스커버리 서비스
kubeKubernetes 서비스
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 프록시 서비스 또는 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 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로 볼 수 있습니다.

이 가이드를 로컬 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이 삭제되었습니다.

다음 단계

  • 워크로드가 서로 다른 네트워크나 클라우드로 분리되어 있는 경우, 신뢰할 수 있는 클러스터 설정을 권장합니다. 신뢰할 수 있는 클러스터 구성의 시작 방법을 읽어보십시오.
Teleport 원문 보기