인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
tctl을 사용한 머신 ID
tctl
은 Teleport 클러스터 관리 CLI 도구입니다. 일반적으로 로컬에 로그인한 사용자의 자격 증명을 사용하지만 머신 ID 자격 증명을 사용할 수도 있습니다. 이를 통해 tctl
을 비대화형 환경(예: CI/CD)에 배포된 커스텀 자동화 워크플로의 일부로 활용할 수 있습니다.
이 가이드에서는 tbot
을 구성하여 tctl
에 필요한 자격 증명을 생성하고, 이후 tctl
을 사용하여 파일에 정의된 Teleport 역할을 배포하는 방법을 설명합니다.
전제 조건
-
실행 중인 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
명령어를 실행할 수도 있습니다. tbot
은 이미tctl
을 사용할 머신에 설치되고 구성되어 있어야 합니다. 자세한 내용은 배포 가이드를 참조하십시오.
1/3단계. RBAC 구성
먼저, tbot
이 생성한 자격 증명으로 Teleport 구성을 수정할 수 있도록 Teleport를 구성해야 합니다. 이는 필요한 권한을 부여하는 역할을 생성하고 이 역할을 Bot에 할당하여 수행됩니다.
공격의 영향을 제한하기 위해 가능한 한 적은 권한만 부여하는 것이 중요하므로, 이 예제에서는 역할을 생성하고 업데이트할 수 있는 능력만 부여합니다.
다음 내용을 포함하는 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
를 사용하여 역할을 Bot에 추가합니다. 배포 가이드에서 생성한 Bot의 이름으로 example
을, 방금 생성한 역할의 이름으로 example-role
을 대체합니다:
tctl bots update example --add-roles example-role
2/3단계. tbot
출력 구성하기
이제 tbot
은 tctl
이 필요한 자격 증명을 생성할 출력을 구성해야 합니다. 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 Server와 인증하기 위해 필요한 개인 키와 서명된 인증서를 포함하고 있습니다.
3/3단계. tctl
을 사용하여 신원 출력 사용하기
예를 들어, tctl
은 Teleport 역할을 정의하는 YAML 파일의 디렉터리를 적용하는 데 사용됩니다. 이 파일들이 버전 관리(예: git
)에 저장되고 변경 시 실행된다면, 이는 GitOps 스타일로 Teleport 역할을 관리하는 기반이 될 것입니다.
예제 역할은 귀하의 Teleport 클러스터 맥락에서 유용하지 않으며, 이 가이드를 완료한 후 수정되어야 합니다.
roles/
라는 디렉터리를 만들고 그 안에 example.yaml
을 생성하십시오:
kind: role
version: v6
metadata:
name: tctl-test
spec:
# 이 역할은 예제 역할이므로 아무 작업도 하지 않습니다.
allow: {}
tctl
이 신원 파일을 사용하도록 구성하려면 -i
플래그를 사용합니다. 신원 파일이 Teleport의 주소를 지정하지 않으므로 --auth-server
플래그를 사용하여 Teleport Proxy 또는 Teleport Auth Server의 주소도 지정해야 합니다.
다음과 같이 tctl
을 실행하면서 example.teleport.sh:443
을 Teleport Proxy 또는 Auth Server의 주소로 대체하고, /opt/machine-id/identity
를 변경한 경우 생성된 신원 파일의 경로로 대체하십시오:
tctl --auth-server example.teleport.sh:443 -i /opt/machine-id/identity create -f roles/*.yaml
귀하의 Teleport 클러스터를 확인하여 역할이 생성되었는지 확인하십시오.
tctl get role/tctl-test