Infograb logo
tbot CLI 참조

tbotMachine ID와 함께 사용되는 CLI 도구로, 서비스 계정(예: CI/CD 서버)에 대해 프로그램적으로 단기간 인증서를 발급하고 갱신합니다.

tbot의 주요 명령은 다음과 같습니다:

명령설명
tbot helptbot 명령 사용에 대한 안내를 출력합니다.
tbot versiontbot 바이너리의 현재 버전을 출력합니다.
tbot configure필요한 대로 조정할 수 있는 기본 Machine ID 클라이언트 구성 파일을 출력합니다.
tbot start설정된 간격으로 인증서를 디스크에 가져오고 쓰면서 Machine ID 클라이언트 tbot을 시작합니다.
tbot init별도의 봇 사용자로부터 쓰기를 위한 인증서 목적지 디렉토리를 초기화하며, 파일 또는 POSIX ACL 권한을 구성합니다.
tbot db네이티브 클라이언트를 사용하여 데이터베이스에 연결하고 데이터베이스 정보를 쿼리합니다. tsh의 래퍼로 기능하며, tsh 설치가 필요합니다.
tbot proxyTLS 라우팅을 사용하여 클러스터의 Teleport 리소스에 접근할 수 있게 합니다. tsh의 래퍼로 기능하며, tsh 설치가 필요합니다.
tbot tpm identify시스템에서 감지된 TPM(신뢰할 수 있는 플랫폼 모듈)과 관련된 식별 정보를 출력합니다.

tbot db

네이티브 클라이언트를 사용하여 데이터베이스에 연결하고 데이터베이스 정보를 쿼리합니다. 테스트 및 검증 목적으로 가장 잘 사용되며; 대부분의 사용자는 tbot proxy db를 사용하여 자신의 데이터베이스를 로컬 프록시에 연결하는 것을 선호할 것입니다.

이 명령을 사용하려면 tsh가 설치되어 있어야 합니다.

플래그

플래그설명
-d/--debugstderr에 자세한 로깅을 활성화합니다.
-c/--configMachine ID 구성 파일의 경로입니다. 다른 필수 구성 플래그를 사용하지 않는 경우 필수입니다.
--destination-dir인증에 사용해야 하는 Machine ID 목적지 디렉토리의 경로입니다. 필수입니다.
--proxy-server리소스에 접근하기 위해 사용할 Teleport Proxy 서비스의 host:port입니다. 필수입니다.
--cluster리소스에 접근해야 하는 클러스터의 이름입니다. 설정되지 않은 경우 봇 ID에서 추출됩니다.

모든 다른 플래그 및 인수는 tsh db ...에 직접 전달되며, 인증 매개변수와 함께 Machine ID ID를 사용하여 tsh의 로그인 단계를 건너뜁니다.

일부 CLI 매개변수, 예를 들어 --help는 포장된 tsh에 전달될 의도로 tbot에 의해 캡처될 수 있습니다. -- 인수를 사용하면 이후 모든 인수가 tsh에 전달되고 tbot에 의해 무시됩니다.

또한, tbot db의 다음 제한 사항에 유의하십시오:

  • tbot db connect는 MySQL과 같은 특정 데이터베이스 유형에 대한 tbot db login이 필요합니다. 이 경우 추가 연결 매개변수를 로컬 구성 파일에 작성할 수 있습니다.
  • tbot db env는 완전히 지원되지 않습니다.

tbot init

별도의 봇 사용자로부터 접근할 수 있는 인증서 목적지 디렉토리를 초기화합니다. Machine ID 클라이언트가 아닌 디스크에 인증서를 쓸 수 있으며, 파일 또는 POSIX ACL 권한을 구성합니다.

플래그

플래그설명
-d/--debugstderr에 자세한 로깅을 활성화합니다.
-c/--configMachine ID 구성 파일의 경로입니다.
--destination-dir단기간 머신 인증서를 쓸 디렉토리입니다.
--owner--destination-dir의 Linux user:group 소유자를 정의합니다. 지정하지 않으면 tbot을 실행하는 Linux 사용자가 기본값입니다.
--bot-userPOSIX ACL을 활성화하고 --destination-dir에 단기간 인증서를 읽고 쓸 수 있는 Linux 사용자를 정의합니다.
--reader-userPOSIX ACL을 활성화하고 --destination-dir에서 단기간 인증서를 읽을 수 있는 Linux 사용자를 정의합니다.
--init-dir구성 파일을 사용하고 여러 대상이 구성된 경우, 구성할 대상 디렉토리를 제어합니다.
--clean설정할 경우, 목적지에서 예상치 못한 파일 및 디렉토리를 제거합니다.
--log-format출력 로그의 형식을 제어합니다. json 또는 text가 가능합니다. 기본값은 text입니다.

예제

파일 권한을 사용하는 예제.

다음 명령은 Linux 그룹을 통해 tbot으로 권한을 설정하는 방법을 강조합니다. Linux 사용자 roottbot을 실행하는 경우, 다음과 같이 tbot init을 호출하여 인증서 디렉토리 /opt/machine-idjenkins:jenkins 소유자로 초기화합니다.

tbot init \ --destination-dir=/opt/machine-id \ --owner=jenkins:jenkins

POSIX ACL을 사용하는 예제.

Linux 사용자 teleporttbot을 실행할 경우, 다음과 같이 tbot init을 호출하여 인증서 디렉토리 /opt/machine-idteleport:teleport 소유자로 초기화하되, jenkins/opt/machine-id를 읽을 수 있도록 합니다.

tbot init \ --destination-dir=/opt/machine-id \ --bot-user=teleport \ --reader-user=jenkins

tbot proxy

TLS 라우팅 모드에서 로컬 TLS 프록시를 통해 Teleport 리소스에 접근할 수 있도록 합니다. tbot proxy 명령은 다양한 프로토콜에 대한 로컬 프록시 기능을 제공하기 위해 tsh proxy의 래퍼로 작동합니다.

이 명령을 사용하려면 tsh가 설치되어 있어야 합니다.

플래그

플래그설명
-d/--debugstderr에 자세한 로깅을 활성화합니다.
-c/--configMachine ID 구성 파일의 경로입니다. 다른 필수 구성 플래그를 사용하지 않는 경우 필수입니다.
--destination-dir인증에 사용해야 하는 Machine ID 목적지 디렉토리의 경로입니다. 필수입니다.
--proxy-server리소스에 접근할 Teleport Proxy 서비스의 host:port입니다. 필수입니다.
--cluster리소스에 접근해야 하는 클러스터의 이름입니다. 설정되지 않은 경우 봇 ID에서 추출됩니다.

모든 다른 플래그 및 인수는 tsh proxy ...에 직접 전달되며, 인증 매개변수와 함께 Machine ID ID를 사용하여 tsh의 로그인 단계를 건너뜁니다.

또한, 다음 사항에 유의하십시오:

  • 일부 CLI 매개변수, 예를 들어 --help는 포장된 tsh에 전달될 의도로 tbot에 의해 캡처될 수 있습니다. -- 인수를 사용하면 이후 모든 인수가 tsh에 전달되고 tbot에 의해 무시됩니다.
  • 구성 파일이 제공되지 않는 경우, tbot은 제공된 CLI 플래그를 기반으로 샘플 구성을 적용합니다. 이러한 이유로, 프로덕션에서는 설정이 구성 파일에 명시적으로 적용되는 것이 권장됩니다.

예제

OpenSSH를 사용하는 예제

다음 명령은 SSH 접근을 위한 OpenSSH ProxyCommand에 적합한 프록시를 통해 표준 입력과 출력을 전달합니다:

tbot proxy --destination-dir=./tbot-user --proxy-server=proxy.example.com:3080 ssh alice@node:3022

이 경우:

  • alice는 원격 사용자 이름입니다.
  • node는 Teleport 노드 이름입니다.
  • 3022는 Teleport SSH 서비스가 실행 중인 노드의 원격 SSH 포트입니다.

데이터베이스 접근을 사용하는 예제

다음 예제는 주어진 데이터베이스로 로컬 프록시 서버를 엽니다. 데이터베이스 클라이언트는 여전히 클라이언트 TLS 인증서로 구성되어야 합니다:

tbot proxy --destination-dir=./tbot-user --proxy-server=proxy.example.com:3080 db --port=1234 example

이 경우:

  • example은 Teleport에서 존재하는 데이터베이스 서버의 이름입니다.
  • 1234는 프록시를 실행할 임의의 포트입니다.

추가적인 클라이언트 인증 필요성을 피하기 위해, --tunnel 플래그를 사용하여 로컬 프록시 내에서 인증을 수행하고 클라이언트 내에서는 수행하지 않을 수 있습니다:

tbot proxy --destination-dir=./tbot-user --proxy-server=proxy.example.com:3080 db --tunnel --port=1234 example

이로 인해 보안이 감소함에 유의하십시오:

  • 시스템의 모든 사용자가 localhost를 통해 데이터베이스에 접근할 수 있습니다.
  • 데이터베이스와의 연결은 localhost에서 실행 중인 tbot 프록시까지 암호화되지 않습니다.

데이터베이스 프록시 사용에 대한 추가 정보는 데이터베이스 가이드를 참조하십시오.

플래그

플래그설명
-d/--debugstderr에 자세한 로깅을 활성화합니다.
-c/--config구성 파일의 경로입니다.
-a/--auth-serverTeleport 인증 서비스의 주소입니다. 가능할 경우 --proxy-server를 사용하는 것이 좋습니다.
--proxy-serverTeleport 프록시 서버의 주소입니다.
--token새 봇을 온보딩하려는 경우의 봇 가입 토큰입니다; 첫 연결 시 사용됩니다. 토큰이 포함된 파일의 절대 경로일 수도 있습니다.
--ca-pinTeleport Auth Server를 검증하기 위한 CA 핀입니다; 첫 연결 시 사용됩니다.
--data-dir내부 봇 데이터를 저장하는 디렉토리입니다. 프로덕션 환경에서는 이 디렉토리에 대한 접근이 제한되어야 합니다.
--destination-dir단기간 머신 인증서를 쓰기 위한 디렉토리입니다.
--certificate-ttl단기간 머신 인증서의 TTL입니다.
--renewal-interval단기간 인증서가 갱신되는 간격입니다; 인증서 TTL보다 짧아야 합니다.
--join-method클러스터에 가입하는 데 사용할 방법입니다. token 또는 iam이 가능합니다.
--oneshot설정할 경우, 첫 번째 갱신 후 종료합니다.

tbot start

단기간 인증서를 설정된 간격으로 디스크에 가져오고 쓰면서 Machine ID 클라이언트 tbot을 시작합니다.

플래그

플래그설명
-d/--debugstderr에 자세한 로깅을 활성화합니다.
-c/--configMachine ID 구성 파일의 경로입니다.
--[no-]fipsFIPS 준수 모드에서 tbot을 실행할지 여부입니다. 이는 FIPS tbot 바이너리가 필요합니다.
-a/--auth-serverTeleport 인증 서비스의 주소입니다. 가능할 경우 --proxy-server를 사용하는 것이 좋습니다.
--proxy-serverTeleport 프록시 서버의 주소입니다.
--token새 봇을 온보딩하려는 경우의 봇 가입 토큰입니다; 첫 연결 시 사용됩니다. 토큰이 포함된 파일의 절대 경로일 수도 있습니다.
--ca-pinTeleport Auth Server를 검증하기 위한 CA 핀입니다; 첫 연결 시 사용됩니다.
--data-dir내부 봇 데이터를 저장하는 디렉토리입니다. 프로덕션 환경에서는 이 디렉토리에 대한 접근이 제한되어야 합니다.
--destination-dir단기간 머신 인증서를 쓰기 위한 디렉토리입니다.
--certificate-ttl단기간 머신 인증서의 TTL입니다.
--renewal-interval단기간 인증서가 갱신되는 간격입니다; 인증서 TTL보다 짧아야 합니다.
--join-method클러스터에 가입하는 데 사용할 방법입니다. token, azure, circleci, gcp, github, gitlab 또는 iam이 가능합니다.
--oneshot설정할 경우, 첫 번째 갱신 후 종료합니다.
--log-format출력 로그의 형식을 제어합니다. json 또는 text가 가능합니다. 기본값은 text입니다.

예제

tbot start \ --data-dir=/var/lib/teleport/bot \ --destination-dir=/opt/machine-id \ --token=00000000000000000000000000000000 \ --join-method=token \ --ca-pin=sha256:1111111111111111111111111111111111111111111111111111111111111111 \ --proxy-server=example.teleport.sh:443
tbot start \ --data-dir=/var/lib/teleport/bot \ --destination-dir=/opt/machine-id \ --token=00000000000000000000000000000000 \ --join-method=token \ --ca-pin=sha256:1111111111111111111111111111111111111111111111111111111111111111 \ --proxy-server=teleport.example.com:443

tbot install systemd

특정 tbot 구성을 위한 systemd 유닛 파일을 생성하고 설치합니다.

플래그

플래그설명
-d/--debugstderr에 자세한 로깅을 활성화합니다.
-c/--config구성 파일의 경로입니다.
--writesystemd 유닛 파일을 씁니다. 지정하지 않으면, 이 명령은 생성된 내용을 stdout에 출력하는 드라이런 모드로 실행됩니다.
--systemd-directorysystemd 유닛 파일을 기록해야 하는 디렉토리의 경로입니다. 기본값은 '/etc/systemd/system'입니다.
--force기존의 systemd 유닛 파일이 존재할 경우 덮어씁니다.
--namesystemd 유닛의 이름입니다. 기본값은 'tbot'입니다.
--user서비스가 실행되어야 하는 사용자입니다. 기본값은 'teleport'입니다.
--group서비스가 실행되어야 하는 그룹입니다. 기본값은 'teleport'입니다.

예제

tbot install systemd \ --config=/etc/tbot.yaml \ --write
Teleport 원문 보기