tbot
은 Machine ID와 함께 사용되는 CLI 도구로, 서비스 계정(예: CI/CD 서버)에 대해 프로그램적으로 단기간 인증서를 발급하고 갱신합니다.
tbot
의 주요 명령은 다음과 같습니다:
명령 | 설명 |
---|---|
tbot help | tbot 명령 사용에 대한 안내를 출력합니다. |
tbot version | tbot 바이너리의 현재 버전을 출력합니다. |
tbot configure | 필요한 대로 조정할 수 있는 기본 Machine ID 클라이언트 구성 파일을 출력합니다. |
tbot start | 설정된 간격으로 인증서를 디스크에 가져오고 쓰면서 Machine ID 클라이언트 tbot 을 시작합니다. |
tbot init | 별도의 봇 사용자로부터 쓰기를 위한 인증서 목적지 디렉토리를 초기화하며, 파일 또는 POSIX ACL 권한을 구성합니다. |
tbot db | 네이티브 클라이언트를 사용하여 데이터베이스에 연결하고 데이터베이스 정보를 쿼리합니다. tsh 의 래퍼로 기능하며, tsh 설치가 필요합니다. |
tbot proxy | TLS 라우팅을 사용하여 클러스터의 Teleport 리소스에 접근할 수 있게 합니다. tsh 의 래퍼로 기능하며, tsh 설치가 필요합니다. |
tbot tpm identify | 시스템에서 감지된 TPM(신뢰할 수 있는 플랫폼 모듈)과 관련된 식별 정보를 출력합니다. |
tbot db
네이티브 클라이언트를 사용하여 데이터베이스에 연결하고 데이터베이스 정보를 쿼리합니다. 테스트 및 검증 목적으로 가장 잘 사용되며; 대부분의 사용자는 tbot proxy db
를 사용하여 자신의 데이터베이스를 로컬 프록시에 연결하는 것을 선호할 것입니다.
이 명령을 사용하려면 tsh
가 설치되어 있어야 합니다.
플래그
플래그 | 설명 |
---|---|
-d/--debug | stderr에 자세한 로깅을 활성화합니다. |
-c/--config | Machine 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/--debug | stderr에 자세한 로깅을 활성화합니다. |
-c/--config | Machine ID 구성 파일의 경로입니다. |
--destination-dir | 단기간 머신 인증서를 쓸 디렉토리입니다. |
--owner | --destination-dir 의 Linux user:group 소유자를 정의합니다. 지정하지 않으면 tbot 을 실행하는 Linux 사용자가 기본값입니다. |
--bot-user | POSIX ACL을 활성화하고 --destination-dir 에 단기간 인증서를 읽고 쓸 수 있는 Linux 사용자를 정의합니다. |
--reader-user | POSIX ACL을 활성화하고 --destination-dir 에서 단기간 인증서를 읽을 수 있는 Linux 사용자를 정의합니다. |
--init-dir | 구성 파일을 사용하고 여러 대상이 구성된 경우, 구성할 대상 디렉토리를 제어합니다. |
--clean | 설정할 경우, 목적지에서 예상치 못한 파일 및 디렉토리를 제거합니다. |
--log-format | 출력 로그의 형식을 제어합니다. json 또는 text 가 가능합니다. 기본값은 text 입니다. |
예제
파일 권한을 사용하는 예제.
다음 명령은 Linux 그룹을 통해 tbot
으로 권한을 설정하는 방법을 강조합니다. Linux 사용자 root
로 tbot
을 실행하는 경우, 다음과 같이 tbot init
을 호출하여 인증서 디렉토리 /opt/machine-id
를 jenkins:jenkins
소유자로 초기화합니다.
tbot init \ --destination-dir=/opt/machine-id \ --owner=jenkins:jenkins
POSIX ACL을 사용하는 예제.
Linux 사용자 teleport
로 tbot
을 실행할 경우, 다음과 같이 tbot init
을 호출하여 인증서 디렉토리 /opt/machine-id
를 teleport: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/--debug | stderr에 자세한 로깅을 활성화합니다. |
-c/--config | Machine 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/--debug | stderr에 자세한 로깅을 활성화합니다. |
-c/--config | 구성 파일의 경로입니다. |
-a/--auth-server | Teleport 인증 서비스의 주소입니다. 가능할 경우 --proxy-server 를 사용하는 것이 좋습니다. |
--proxy-server | Teleport 프록시 서버의 주소입니다. |
--token | 새 봇을 온보딩하려는 경우의 봇 가입 토큰입니다; 첫 연결 시 사용됩니다. 토큰이 포함된 파일의 절대 경로일 수도 있습니다. |
--ca-pin | Teleport Auth Server를 검증하기 위한 CA 핀입니다; 첫 연결 시 사용됩니다. |
--data-dir | 내부 봇 데이터를 저장하는 디렉토리입니다. 프로덕션 환경에서는 이 디렉토리에 대한 접근이 제한되어야 합니다. |
--destination-dir | 단기간 머신 인증서를 쓰기 위한 디렉토리입니다. |
--certificate-ttl | 단기간 머신 인증서의 TTL입니다. |
--renewal-interval | 단기간 인증서가 갱신되는 간격입니다; 인증서 TTL보다 짧아야 합니다. |
--join-method | 클러스터에 가입하는 데 사용할 방법입니다. token 또는 iam 이 가능합니다. |
--oneshot | 설정할 경우, 첫 번째 갱신 후 종료합니다. |
tbot start
단기간 인증서를 설정된 간격으로 디스크에 가져오고 쓰면서 Machine ID 클라이언트 tbot
을 시작합니다.
플래그
플래그 | 설명 |
---|---|
-d/--debug | stderr에 자세한 로깅을 활성화합니다. |
-c/--config | Machine ID 구성 파일의 경로입니다. |
--[no-]fips | FIPS 준수 모드에서 tbot을 실행할지 여부입니다. 이는 FIPS tbot 바이너리가 필요합니다. |
-a/--auth-server | Teleport 인증 서비스의 주소입니다. 가능할 경우 --proxy-server 를 사용하는 것이 좋습니다. |
--proxy-server | Teleport 프록시 서버의 주소입니다. |
--token | 새 봇을 온보딩하려는 경우의 봇 가입 토큰입니다; 첫 연결 시 사용됩니다. 토큰이 포함된 파일의 절대 경로일 수도 있습니다. |
--ca-pin | Teleport 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/--debug | stderr에 자세한 로깅을 활성화합니다. |
-c/--config | 구성 파일의 경로입니다. |
--write | systemd 유닛 파일을 씁니다. 지정하지 않으면, 이 명령은 생성된 내용을 stdout에 출력하는 드라이런 모드로 실행됩니다. |
--systemd-directory | systemd 유닛 파일을 기록해야 하는 디렉토리의 경로입니다. 기본값은 '/etc/systemd/system'입니다. |
--force | 기존의 systemd 유닛 파일이 존재할 경우 덮어씁니다. |
--name | systemd 유닛의 이름입니다. 기본값은 'tbot'입니다. |
--user | 서비스가 실행되어야 하는 사용자입니다. 기본값은 'teleport'입니다. |
--group | 서비스가 실행되어야 하는 그룹입니다. 기본값은 'teleport'입니다. |
예제
tbot install systemd \ --config=/etc/tbot.yaml \ --write