Infograb logo
GCP에서 머신 ID 배포

이 가이드는 tbot 바이너리를 실행하고 이를 Teleport 클러스터에 조인하여 Google Cloud Platform (GCP)에서 머신 ID를 배포하는 방법을 설명합니다.

GCP에서는 가상 머신에 서비스 계정을 할당할 수 있습니다. 이러한 머신은 GCP에서 서명된 JSON 웹 토큰을 요청할 수 있으며, 이를 통해 타사에서 해당 머신에 대한 정보를 검증할 수 있습니다. 여기에는 서비스 계정에 대한 정보도 포함됩니다. Teleport gcp 조인 방법은 머신 ID 봇이 이 서비스 계정 JWT를 사용하여 Teleport Auth Service에 본인을 증명하고 장기 비밀 없이 Teleport 클러스터에 조인하도록 지시합니다.

이 페이지의 가이드는 GCP 가상 머신에 머신 ID를 배포하는 데 명시적으로 초점을 맞추고 있지만, Google Kubernetes Engine에서 실행되는 워크로드와 함께 gcp 조인 방법을 사용할 수도 있습니다. 그렇게 하려면 tbot 포드에서 사용할 클러스터 및 Kubernetes 서비스 계정에 대한 GCP 워크로드 정체성을 구성해야 합니다. Kubernetes에서 워크로드로 머신 ID를 배포하는 방법에 대한 추가 지침은 Kubernetes 플랫폼 가이드를 참조하십시오.

전제 조건

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

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

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

  • 연결이 가능한지 확인하기 위해 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 명령어를 실행할 수도 있습니다.
  • Teleport 클러스터에 액세스할 수 있도록 부여하려는 GCP 서비스 계정으로, GCP 컴퓨트 기본 서비스 계정이 아닙니다.
  • 머신 ID를 설치하려는 GCP Compute Engine VM으로, GCP 서비스 계정으로 구성되어야 합니다.

1/5단계. tbot 설치

이 단계는 GCP VM에서 완료됩니다.

먼저, 머신 ID에서 사용하려는 VM에 tbot 이 설치되어야 합니다.

자신의 플랫폼에 적합한 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/5단계. 봇 생성

이 단계는 로컬 머신에서 완료됩니다.

다음으로, Bot을 생성해야 합니다. Bot은 기계 또는 기계 그룹에 대한 Teleport ID입니다. 사용자와 마찬가지로 Bot도 액세스할 수 있는 권한을 정의하는 역할과 특성을 가지고 있습니다.

bot.yaml 을 생성합니다:

kind: bot
version: v1
metadata:
  # name은 클러스터에서 Bot의 고유 식별자입니다.
  name: example
spec:
  # roles는 Bot에 부여할 역할 목록입니다. 여기에서 어떤 역할을 지정해야 할지 모른다면 걱정하지 마세요.
  # 액세스 가이드가 이미 생성된 Bot에 역할을 생성하고 할당하는 방법을 안내할 것입니다.
  roles: []

example 을 Bot에 대한 고유하고 설명적인 이름으로 교체했는지 확인하세요.

다음과 같이 tctl 을 사용하여 이 파일을 적용합니다:

tctl create bot.yaml

3/5단계. 조인 토큰 생성

이 단계는 로컬 머신에서 완료됩니다.

bot-token.yaml 파일을 생성하십시오:

kind: token
version: v2
metadata:
  # name will be specified in the `tbot` to use this token
  name: example-bot
spec:
  roles: [Bot]
  # bot_name should match the name of the bot created earlier in this guide.
  bot_name: example
  join_method: gcp
  gcp:
    # allow specifies the rules by which the Auth Server determines if `tbot`
    # should be allowed to join.
    allow:
      - project_ids:
          - my-project-123456
        service_accounts:
          # This should be the full "name" of a GCP service account. The default
          # compute service account is not supported.
          - my-service-account@my-project-123456.iam.gserviceaccount.com

다음을 교체하십시오:

  • my-project-123456 를 자신의 GCP 프로젝트 ID로
  • example 을 두 번째 단계에서 생성한 봇의 이름으로
  • my-service-account@my-project-123456.iam.gserviceaccount.com 을 이전 단계에서 구성한 서비스 계정의 이메일로. 기본 컴퓨트 서비스 계정은 지원되지 않습니다.

tctl 을 사용하여 이 파일을 적용하십시오:

tctl create -f bot-token.yaml

4/5단계. tbot 구성하기

이 단계는 GCP VM에서 완료됩니다.

/etc/tbot.yaml 파일을 생성합니다:

version: v2
proxy_server: example.teleport.sh:443
onboarding:
  join_method: gcp
  token: example-bot
storage:
  type: memory
# 출력은 액세스 가이드 완료 중에 채워집니다.
outputs: []

다음을 교체합니다:

  • example.teleport.sh:443 를 Teleport 프록시 또는 Auth 서버의 주소로 바꾸십시오. Teleport 프록시의 주소를 사용하는 것이 좋습니다.
  • example-bot 을 두 번째 단계에서 생성한 토큰의 이름으로 바꾸십시오.

이제 tbot 을 데몬으로 실행할지 단발성 모드로 실행할지 결정해야 합니다.

데몬 모드에서 tbot 은 지속적으로 실행되며, 구성된 출력에 대한 단기 자격 증명을 고정된 간격으로 갱신합니다. 이는 일반적으로 tbot 을 백그라운드에서 실행하기 위해 서비스 관리자(예: systemd)와 결합됩니다. 이는 tbot 의 기본 동작입니다.

단발성 모드에서는 tbot 이 단기 자격 증명을 생성한 후 종료됩니다. 이는 스크립팅(예: CI/CD)과 결합할 때 유용하며, 이는 다음 단계가 tbot 이 성공적으로 완료되는 것에 의존할 수 있도록 합니다. 자격 증명은 갱신되지 않으면 만료되며, CI/CD 작업의 길이를 커버할 수 있도록 인증서의 TTL이 충분히 긴지 확인하는 것이 중요합니다.

tbot 을 데몬으로 구성하기

기본적으로 tbot 은 데몬 모드로 실행됩니다. 그러나 이를 위해서는 Linux 호스트의 서비스 관리자를 통해 서비스를 구성해야 합니다. 서비스 관리자는 부팅 시 tbot 을 시작하고 실패할 경우 다시 시작하도록 보장합니다. 이 가이드에서는 systemd를 시연하지만, tbot 은 모든 일반적인 대안과 호환되어야 합니다.

tbot install systemd 를 사용하여 systemd 서비스 파일을 생성합니다:

tbot install systemd \ --write \ --config /etc/tbot.yaml \ --user teleport \ --group teleport \ --anonymous-telemetry

다음 항목을 교체해야 합니다:

  • teleporttbot 을 실행할 Linux 사용자 이름으로 바꿉니다.
  • /etc/tbot.yaml 은 생성한 구성 파일의 경로로 바꿉니다.

--write 를 생략하면 시스템 서비스 파일이 콘솔에 출력되며 디스크에 작성되지 않습니다.

--anonymous-telemetry 는 익명 사용 통계를 제출하는 기능을 활성화합니다. 이를 통해 tbot 의 미래 개발에 도움을 줄 수 있습니다. 이를 비활성화하려면 이 파라미터를 생략하면 됩니다.

다음으로, 서비스가 부팅 시 시작되도록 활성화하고 서비스를 시작합니다:

sudo systemctl daemon-reload
sudo systemctl enable tbot
sudo systemctl start tbot

서비스가 성공적으로 시작되었는지 확인합니다:

sudo systemctl status tbot

단발성 모드로 tbot 구성하기

tbot 을 단발성 모드로 사용하려면 /etc/tbot.yaml 을 수정하여 oneshot: true 를 추가합니다:

version: v2
oneshot: true
auth_server: ...

이제 tbot 구성을 테스트해야 합니다. 시작할 때 여러 로그 메시지가 출력되고 상태 0으로 종료됩니다:

export TELEPORT_ANONYMOUS_TELEMETRY=1
tbot start -c /etc/tbot.yaml

TELEPORT_ANONYMOUS_TELEMETRY 는 익명 사용 정보를 제출할 수 있도록 설정합니다. 이는 tbot 의 향후 개발 방향을 정하는 데 도움이 됩니다. 이를 생략하면 비활성화할 수 있습니다.

5/5단계. 출력 구성하기

tbot 의 기본 구성을 준비했습니다. 이 시점에서 tbot 은 Teleport 클러스터에 자신을 식별하고 자신의 자격 증명을 갱신하지만, 다른 애플리케이션에서 사용할 자격 증명을 출력하지 않습니다.

당신의 접근 요구를 충족하는 출력을 구성하려면 접근 가이드 중 하나를 따르십시오.

다음 단계

Teleport 원문 보기