Infograb logo
AWS에 머신 ID 배포하기

이 가이드는 tbot 바이너리를 실행하고 이를 Teleport 클러스터에 조인하여 Amazon Web Services에 머신 ID를 배포하는 방법을 설명합니다.

AWS에서 가상 머신은 IAM 역할을 할당받을 수 있으며, 이를 가정하여 머신에 대한 정보가 포함된 서명된 문서를 요청할 수 있습니다. Teleport iam 조인 방법은 머신 ID 봇에게 할당된 아이덴티티를 사용하여 AWS에 이 서명된 문서를 요청하고 이를 Teleport Auth Service에 검증을 위해 보내도록 지시합니다. 이를 통해 봇은 장기 비밀의 교환 없이 클러스터에 조인할 수 있습니다.

이 가이드는 EC2 인스턴스에 머신 ID를 배포하는 데 중점을 두고 있지만, EKS Kubernetes 클러스터에서 실행 중인 워크로드와 함께 iam 조인 방법을 사용하는 것도 가능합니다. 그렇게 하려면, 클러스터와 tbot 포드에서 사용할 Kubernetes 서비스 계정을 위해 서비스 계정에 대한 IAM 역할 (IRSA)를 구성해야 합니다. Kubernetes에 머신 ID를 워크로드로 배포하는 것에 대한 추가 안내는 Kubernetes 플랫폼 가이드를 참고하세요.

필수 조건

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

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

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

  • 당신의 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 명령어를 실행할 수도 있습니다.
  • Teleport 클러스터에 접근을 부여하려는 AWS IAM 역할. 이 역할은 sts:GetCallerIdentity를 부여받아야 합니다. 이 가이드에서는 이 역할을 teleport-bot-role이라고 명명하겠습니다.
  • 이 IAM 역할이 연결된 상태에서 머신 ID를 설치하려는 AWS EC2 가상 머신.

1단계/5단계. tbot 설치

이 단계는 AWS EC2 인스턴스에서 완료됩니다.

먼저, 머신 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-v16.2.0.sh | bash -s ${TELEPORT_VERSION} edition

    설치 스크립트는 Linux 서버에서 패키지 관리자를 감지하고 이를 사용하여 Teleport 바이너리를 설치합니다. 설치를 사용자 지정하려면 설치 가이드에서 Teleport 패키지 리포지토리에 대해 알아보세요.

2단계/5단계. 봇 생성

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

다음으로, 봇을 생성해야 합니다. 봇은 기계 또는 기계 그룹에 대한 Teleport 아이덴티티입니다. 사용자와 마찬가지로, 봇은 액세스할 수 있는 내용을 정의하는 일련의 역할과 특성을 가지고 있습니다.

bot.yaml을 생성하세요:

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

example을 봇에 대한 고유하고 설명적인 이름으로 교체하는 것을 잊지 마세요.

이 파일을 적용하려면 tctl을 사용하세요:

tctl create bot.yaml

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

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

bot-token.yaml 파일을 생성하세요:

kind: token
version: v2
metadata:
  # 이 토큰을 사용하기 위해 `tbot`에 지정될 이름
  name: example-bot
spec:
  roles: [Bot]
  # bot_name은 이 가이드에서 이전에 생성한 봇의 이름과 일치해야 합니다.
  bot_name: example
  join_method: iam
  # 이 토큰을 사용할 수 있는 AWS 계정과 (선택적으로) ARN을 제한합니다.
  # 이 정보는 CLI에서 "aws sts get-caller-identity" 명령을 실행하여 얻을 수 있습니다.
  allow:
    - aws_account: "111111111111"
      aws_arn: "arn:aws:sts::111111111111:assumed-role/teleport-bot-role/i-*"

다음을 교체하세요:

  • 111111111111을 AWS 계정 ID로.
  • teleport-bot-role을 EC2 인스턴스에 할당한 AWS IAM 역할의 이름으로.
  • example을 두 번째 단계에서 생성한 봇의 이름으로.
  • i-*는 지정된 역할을 가진 인스턴스가 조인 방법을 사용할 수 있음을 나타냅니다. 개별 인스턴스로 제한하려면 i-*를 전체 인스턴스 ID로 교체하세요.

tctl을 사용하여 이 파일을 적용하세요:

tctl create -f bot-token.yaml

4단계/5단계. tbot 구성

이 단계는 AWS EC2 인스턴스에서 완료됩니다.

/etc/tbot.yaml 파일을 생성하세요:

version: v2
proxy_server: example.teleport.sh:443
onboarding:
  join_method: iam
  token: example-bot
storage:
  type: memory
# 액세스 가이드 완료 중 출력이 입력됩니다.
outputs: []

다음을 교체하세요:

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

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

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

일회성 모드에서는 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를 생략하면 systemd 서비스 파일이 디스크에 작성되는 대신 콘솔에 출력됩니다.

--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 원문 보기