Infograb logo
Machine ID와 tctl

tctl은 Teleport 클러스터 관리 CLI 도구입니다. 보통은 로컬에 로그인한 사용자의 자격 증명을 사용하지만, Machine ID 자격 증명을 사용할 수도 있습니다. 이를 통해 tctl을 비대화형 환경(예: CI/CD)에서 배포된 맞춤형 자동화 워크플로의 일환으로 활용할 수 있습니다.

이 가이드에서는 tbot을 구성하여 tctl을 위한 자격 증명을 생성하고, tctl을 사용하여 파일에 정의된 Teleport 역할을 배포합니다.

필수 조건

  • 실행 중인 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 명령어를 실행할 수도 있습니다.
  • tbot은 이미 tctl을 사용할 머신에 설치 및 구성되어 있어야 합니다. 자세한 내용은 배포 가이드를 참조하세요.

1단계/3. RBAC 구성

먼저, Teleport는 tbot이 생성한 자격 증명이 Teleport 구성을 수정할 수 있도록 구성되어야 합니다. 이를 위해 필요한 권한을 부여하는 역할을 생성한 다음, 이 역할을 봇에 할당해야 합니다.

공격의 타격 반경을 제한하기 위해 가능한 한 적은 권한을 부여하는 것이 중요하므로, 이 예제에서는 역할을 생성하고 업데이트하는 권한만 부여합니다.

role.yaml이라는 파일을 아래 내용을 포함하여 생성하세요:

kind: role
version: v6
metadata:
  name: example-role
spec:
  allow:
    rules:
    - resources:
      # tctl로 관리할 리소스의 이름을 지정하세요.
      # 이 가이드에서는 역할만 관리합니다.
      - role
      verbs:
      - create
      - read
      - update
      - delete
      - list

example-role을 귀하의 사용 사례와 관련된 설명적인 이름으로 바꾸세요.

tctl create -f ./role.yaml을 사용하여 역할을 생성하세요.

이제 tctl bots update를 사용하여 역할을 봇에 추가하세요. 배포 가이드에서 생성한 봇의 이름으로 example을 바꾸고, 방금 생성한 역할 이름인 example-role로 바꾸세요:

$ tctl bots update example --add-roles example-role

2단계/3. tbot 출력 구성

이제 tbottctl에 필요한 자격 증명을 생성하는 출력을 구성해야 합니다. tctl이 Teleport API에 접근할 것이므로, 올바른 출력 유형은 identity입니다.

이 가이드에서는 directory 경로를 사용할 것입니다. 이는 이러한 자격 증명을 디스크의 지정된 디렉토리에 기록합니다. 이 디렉토리는 tbot이 실행되는 리눅스 사용자와, tctl이 실행되는 리눅스 사용자가 쓸 수 있어야 합니다.

tbot 구성을 수정하여 identity 출력을 추가하세요:

outputs:
- type: identity
  destination:
    type: directory
    # 이 가이드에서는 /opt/machine-id를 목적지 디렉토리로 사용합니다.
    # 이를 사용자 정의할 수 있습니다. 여러 출력이 동일한 목적지를 공유할 수 없습니다.
    path: /opt/machine-id

tbot을 백그라운드 서비스로 운영하는 경우, 이를 재시작하세요. tbot을 일회성 모드로 실행하는 경우, 나중에 Terraform 플랜을 실행하기 전에 실행해야 합니다.

이제 /opt/machine-id 하위에 identity 파일이 있어야 합니다. 이 파일은 tctl이 Teleport Auth 서버와 인증하는 데 필요한 개인 키 및 서명된 인증서를 포함하고 있습니다.

3단계/3. tctl을 identity 출력과 함께 사용

예를 들어, tctl을 사용하여 Teleport 역할을 정의하는 YAML 파일 디렉토리를 적용할 것입니다. 만약 이러한 파일들이 버전 관리(예: git)에 저장되어 있고, 변경 시 실행하게 된다면, 이는 GitOps 스타일로 Teleport 역할을 관리하는 기초가 될 것입니다.

예시 역할은 귀하의 Teleport 클러스터 내에서 유용하지 않으므로, 이 가이드를 완료한 후에는 수정해야 합니다.

roles/라는 디렉토리를 생성하고 그 안에 example.yaml을 생성하세요:

kind: role
version: v6
metadata:
  name: tctl-test
spec:
  # 이 역할은 예제 역할로 아무 기능도 하지 않습니다.
  allow: {}

tctl이 identity 파일을 사용하도록 구성하려면 -i 플래그를 사용합니다. identity 파일이 Teleport 주소를 지정하지 않으므로, --auth-server 플래그를 사용하여 Teleport Proxy 또는 Teleport Auth 서버의 주소를 지정해야 합니다.

tctl을 실행할 때, example.teleport.sh:443을 귀하의 Teleport Proxy 또는 Auth сервер 주소로, /opt/machine-id/identity를 생성된 identity 파일 경로로 바꾸세요:

tctl --auth-server example.teleport.sh:443 -i /opt/machine-id/identity create -f roles/*.yaml

귀하의 Teleport 클러스터를 확인하여 역할이 생성되었는지 확인하세요.

tctl get role/tctl-test

다음 단계

  • tctl 참조를 탐색하여 tctl이 할 수 있는 모든 기능을 발견하세요.
  • 구성 참조를 읽어 tbot의 모든 구성을 탐색하세요.
Teleport 원문 보기