인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
AWS에서 머신 ID 배포
이 가이드는 tbot
이진 파일을 실행하고 이를 Teleport 클러스터에 조인하여 Amazon Web Services에 머신 ID를 배포하는 방법을 설명합니다.
AWS에서 가상 머신은 IAM 역할을 할당받을 수 있으며, 이를 사용하여 머신에 대한 정보를 포함하는 서명된 문서를 요청할 수 있습니다. Teleport iam
조인 방법은 머신 ID 봇에게 할당된 신원을 사용하여 AWS에서 이 서명된 문서를 요청하고, 이를 Teleport Auth 서비스에 검증을 위해 전송하도록 지시합니다. 이를 통해 봇은 장기 비밀 교환 없이 클러스터에 조인할 수 있습니다.
이 가이드는 EC2 인스턴스에 머신 ID를 배포하는 데 중점을 두지만, EKS Kubernetes 클러스터에서 실행 중인 워크로드와 함께 iam
조인 방법을 사용하는 것도 가능합니다. 이를 위해 클러스터와 tbot
포드에서 사용할 Kubernetes 서비스 계정에 대한 IAM 역할 for 서비스 계정(IRSA)를 구성해야 합니다. Kubernetes에서 머신 ID를 워크로드로 배포하는 방법에 대한 자세한 내용은 Kubernetes 플랫폼 가이드를 참조하십시오.
전제 조건
-
실행 중인 Teleport 클러스터 버전 17.0.0-dev 이상. Teleport를 시작하려면 가입하여 무료 평가판을 이용하거나 데모 환경 설정 방법을 확인하십시오.
-
tctl
관리자 도구와tsh
클라이언트 도구.tctl
및tsh
다운로드 방법에 대한 지침은 설치를 방문하십시오.
- 연결이 가능한지 확인하기 위해
tsh login
으로 로그인한 다음, 현재 자격 증명을 사용하여tctl
명령어를 실행할 수 있는지 확인하십시오. 예를 들어:클러스터에 연결할 수 있고tsh login --proxy=teleport.example.com --user=email@example.comtctl status클러스터 teleport.example.com
버전 17.0.0-dev
CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678
tctl status
명령어를 실행할 수 있다면, 현재 자격 증명을 사용하여 워크스테이션에서 후속tctl
명령어를 실행할 수 있습니다.
자신의 Teleport 클러스터를 호스팅하는 경우, Teleport Auth Service를 호스팅하는 컴퓨터에서 전체 권한으로tctl
명령어를 실행할 수도 있습니다. - Teleport 클러스터에 대한 액세스를 부여할 AWS IAM 역할. 이 역할은
sts:GetCallerIdentity
가 부여되어야 합니다. 이 가이드에서는 이 역할을teleport-bot-role
로 명명합니다. - IAM 역할이 연결된 상태에서 머신 ID를 설치하고자 하는 AWS EC2 가상 머신.
1/5단계. tbot
설치
이 단계는 AWS EC2 인스턴스에서 완료됩니다.
먼저, 머신 ID를 사용할 VM에 tbot
을 설치해야 합니다.
플랫폼에 적합한 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-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은 이 토큰을 사용하기 위해 `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
이 단기 자격 증명을 생성한 후 종료됩니다. 이는 스크립팅(예: 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
다음 항목을 교체해야 합니다:
teleport
는tbot
을 실행할 Linux 사용자 이름으로 바꿉니다./etc/tbot.yaml
은 생성한 구성 파일의 경로로 바꿉니다.
--write
를 생략하면 시스템 서비스 파일이 콘솔에 출력되며 디스크에 작성되지 않습니다.
--anonymous-telemetry
는 익명 사용 통계를 제출하는 기능을 활성화합니다. 이를 통해 tbot
의 미래 개발에 도움을 줄 수 있습니다. 이를 비활성화하려면 이 파라미터를 생략하면 됩니다.
다음으로, 서비스가 부팅 시 시작되도록 활성화하고 서비스를 시작합니다:
sudo systemctl daemon-reloadsudo systemctl enable tbotsudo 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=1tbot start -c /etc/tbot.yaml
TELEPORT_ANONYMOUS_TELEMETRY
는 익명 사용 정보를 제출할 수 있도록 설정합니다. 이는 tbot
의 향후 개발 방향을 정하는 데 도움이 됩니다. 이를 생략하면 비활성화할 수 있습니다.
5/5단계. 출력 구성
tbot
의 기본 구성을 준비했습니다. 이 시점에서 tbot
은 Teleport 클러스터에 자신을 식별하고 자신의 자격 증명을 갱신하지만, 다른 애플리케이션에서 사용할 자격 증명을 출력하지 않습니다.
당신의 접근 요구를 충족하는 출력을 구성하려면 접근 가이드 중 하나를 따르십시오.
다음 단계
tbot
을 환경에 맞게 구성 완료를 위해 액세스 가이드를 따릅니다.- 사용 가능한 모든 구성 옵션을 탐색하기 위해 구성 참조를 읽습니다.
TELEPORT_ANONYMOUS_TELEMETRY
에 대한 추가 정보.