Teleport는 네 가지 CLI 도구로 구성되어 있습니다.
- teleport: 다양한 Teleport 서비스를 시작하고 구성하여 Teleport Access Platform을 지원합니다.
- tsh: 최종 사용자가 Teleport에 인증하고 클러스터의 리소스에 액세스할 수 있도록 합니다.
- tctl: Teleport Auth Service를 구성하는 데 사용됩니다.
- tbot: 서비스 계정(예: CI/CD 서버)에 단기 자격証명(short lived credentials)을 제공하는 Machine ID를 지원합니다.
프로덕션에서 Teleport를 실행할 때 보안 사고를 피하기 위해 다음 모범 사례를 준수해야 합니다:
- 필요한 경우가 아니면 프로덕션 환경에서
sudo
사용을 피하세요. - 새로운 비루트 사용자 계정을 생성하고 Teleport 실험을 위해 테스트 인스턴스를 사용하세요.
- 필요하지 않는 한 비루트 사용자로서 Teleport의 서비스를 실행하세요. SSH 서비스만 루트 접근을 필요로 합니다. Teleport가
1024
보다 작은 포트(예:443
)에서 수신 대기하도록 하려면 루트 권한(또는CAP_NET_BIND_SERVICE
권한)이 필요합니다. - 최소 권한 원칙을 따르세요. 더 제한적인 역할로도 충분할 때 사용자의 권한을 허용하는 역할을 부여하지 마세요.
예를 들어, 사용자가 모든 클러스터 리소스에 액세스하고 편집할 수 있는 내장된
access,editor
역할을 부여하지 마세요. 대신 각 사용자에게 필요한 최소 권한을 가진 역할을 정의하고 액세스 요청을 구성하여 일시적으로 권한을 상승시켜주세요. - Teleport 리소스를 등록할 때(예: 새로운 데이터베이스나 응용 프로그램) 초대 토큰을 파일에 저장해야 합니다.
명령행에 토큰을 직접 입력하면 악의적인 사용자가 손상된 시스템에서
history
명령을 실행하여 이를 볼 수 있습니다.
이러한 관행이 문서에서 사용되는 예제에 반드시 반영되지 않는 점에 유의해야 합니다. 문서의 예제는 주로 시연 및 개발 환경을 위한 것입니다.
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")'