명령줄 도구 레퍼런스
Teleport v18.9Teleport는 여섯 가지 CLI 도구로 구성됩니다. Teleport를 프로덕션 환경에서 실행할 때는 보안 사고를 방지하기 위해 다음 모범 사례를 준수해야 합니다: 이러한 사례가 문서에서 사용된 예시에 반드시 반영되어 있는 것은 아니라는 점에 유의하십시오.
Teleport는 여섯 가지 CLI 도구로 구성됩니다.
- teleport: 다양한 Teleport 서비스를 시작하고 구성하여 Teleport Infrastructure Identity Platform을 지원합니다.
- teleport-update: Teleport 바이너리를 설치하고 업데이트합니다.
- tsh: 최종 사용자가 Teleport에 인증하고 클러스터의 리소스에 접근할 수 있도록 합니다.
- tctl: Teleport Auth 서비스를 구성하는 데 사용됩니다.
- tbot: 머신 및 워크로드 아이덴티티를 지원하며, 서비스 계정(예: CI/CD 서버)에 단명 자격 증명을 제공합니다.
- fdpass-teleport: 더 높은 성능의 SSH 연결을 위해 머신 및 워크로드 아이덴티티와 OpenSSH를 통합하는 것을 지원합니다.
프로덕션 보안 모범 사례
Teleport를 프로덕션 환경에서 실행할 때는 보안 사고를 방지하기 위해 다음 모범 사례를 준수해야 합니다:
- 꼭 필요한 경우가 아니면 프로덕션 환경에서
sudo사용을 피하십시오. - 새로운 non-root 사용자를 생성하고, Teleport를 테스트할 때는 테스트 인스턴스를 사용하십시오.
- 필요한 경우가 아니면 Teleport의 서비스를 non-root 사용자로 실행하십시오. root
접근이 필요한 것은 SSH Service뿐입니다. Teleport가
1024보다 작은 번호의 포트(예:443)에서 수신 대기하도록 하려면 root 권한(또는CAP_NET_BIND_SERVICE기능)이 필요하다는 점에 유의하십시오. - 최소 권한의 원칙을 따르십시오. 더 제한적인 역할로 충분한 경우 사용자에게
허용 범위가 넓은 역할을 부여하지 마십시오.
예를 들어, 모든 클러스터 리소스에 접근하고 편집할 수 있는 권한을 부여하는 내장
access,editor역할을 사용자에게 할당하지 마십시오. 대신 각 사용자에게 필요한 최소한의 권한으로 역할을 정의하고, 일시적으로 상승된 권한을 제공하기 위해 Access Request를 구성하십시오. - Teleport 리소스(예: 새 데이터베이스나 애플리케이션)를 등록할 때는
초대 토큰을 파일에 저장해야 합니다.
토큰을 명령줄에 직접 입력하면, 악의적인 사용자가 침해된 시스템에서
history명령을 실행하여 이를 볼 수 있습니다.
이러한 사례가 문서에서 사용된 예시에 반드시 반영되어 있는 것은 아니라는 점에 유의하십시오. 문서의 예시는 주로 시연 및 개발 환경을 위한 것입니다.
CLI 경험 개선: 셸 자동 완성 활성화
Teleport의 CLI 도구는 bash 및 zsh에 대한 자동 완성 힌트를 제공할 수 있습니다.
예를 들어 tsh를 입력하고 Tab을 누르면 사용 가능한 모든 하위 명령이 표시되고,
tsh --를 입력하고 Tab을 누르면 사용 가능한 모든 플래그가 표시됩니다.
자동 완성을 활성화하려면 셸 구성 파일에 추가 문을 추가하세요.
예시 (.bashrc):
eval "$(tsh --completion-script-bash)"
예시 (.zshrc):
# 자동 완성 기능 활성화
autoload -Uz compinit
compinit
eval "$(tsh --completion-script-zsh)"
변경 사항을 적용하려면 셸을 다시 로드하세요.
tctl, teleport 및 tbot에 대해 동일한 프로세스를 반복할 수 있습니다.
영구적인 수정을 가하기 전에 프로덕션 인스턴스, 환경 및/또는 설정을 백업하는 것을 모범 사례로 권장합니다. 이렇게 하면 필요한 경우 기존 상태로 롤백할 수 있습니다.
리소스 필터링#
tsh와 tctl 모두 --search 및 --query 플래그를 사용하여 서버, 애플리케이션, 데이터베이스, 데스크탑 및 Kubernetes 클러스터를 필터링할 수 있습니다.
--search 플래그는 리소스 필드에서 간단한 퍼지 검색을 수행합니다. 예를 들어 --search=mac은 mac이 포함된 리소스를 검색합니다.
--query 플래그를 사용하면 술어 언어를 사용하여 더 정교한 검색을 수행할 수 있습니다.
두 경우 모두 명령에 쉼표로 구분된 레이블 목록을 추가하여 결과를 더 세밀하게 조정할 수 있습니다. 예를 들어:
$ tsh ls --search=foo,bar labelKey1=labelValue1,labelKey2=labelValue2
필터 예시#
# 모든 노드 나열
$ tsh ls
# 레이블 인수를 사용하여 노드 나열
$ tsh ls env=staging,os=mac
# 검색 키워드를 사용하여 노드 나열
$ tsh ls --search=staging,mac
# 술어 언어를 사용하여 노드 나열. 이 쿼리는 키가 `env`인 레이블이
# `staging`이고 키가 `os`인 레이블이 `mac`인 노드를 검색합니다.
$ tsh ls --query='labels["env"] == "staging" && equals(labels["os"], "mac")'