서버 접근과 머신 및 워크로드 아이덴티티
Teleport는 서버에 대한 SSH 접근을 보호하고 제어합니다. 이 가이드에서는 Teleport에 등록된 Linux 서버에 접근하는 데 사용할 수 있는 자격 증명을 생성하도록 tbot을 설정합니다. A running Teleport cluster.
Teleport는 서버에 대한 SSH 접근을 보호하고 제어합니다. 머신 및 워크로드 아이덴티티를 사용하여 머신에 이러한 서버에 대한 안전하고 단기적인 접근을 허용할 수 있습니다.
이 가이드에서는 Teleport에 등록된 Linux 서버에 접근하는 데 사용할 수 있는 자격 증명을 생성하도록 tbot을 설정합니다. 가이드는 Teleport CLI tsh 및 OpenSSH 클라이언트를 사용한 접근을 다룹니다.
사전 조건#
-
A running Teleport cluster. If you want to get started with Teleport, sign up for a free trial or set up a demo environment.
-
The
tctlandtshclients.Installing `tctl` and `tsh` clients
-
Determine the version of your Teleport cluster. The
tctlandtshclients must be at most one major version behind your Teleport cluster version. Send a GET request to the Proxy Service at/v1/webapi/findand use a JSON query tool to obtain your cluster version. Replace with the web address of your Teleport Proxy Service:$ TELEPORT_DOMAIN= $ TELEPORT_VERSION="$(curl -s https://$TELEPORT_DOMAIN/v1/webapi/find | jq -r '.server_version')" -
Follow the instructions for your platform to install
tctlandtshclients:
-
- 아직 서버를 Teleport에 연결하지 않았다면 시작 가이드를 따르세요.
To check that you can connect to your Teleport cluster, sign in with tsh login, then
verify that you can run tctl commands using your current credentials.
For example, run the following command, assigning to the domain name of the Teleport Proxy Service in your cluster and to your Teleport username:
$ tsh login --proxy= --user=
$ tctl status
# Cluster (=teleport.url=)
# Version (=teleport.version=)
# CA pin (=presets.ca_pin=)
If you can connect to the cluster and run the tctl status command, you can use your
current credentials to run subsequent tctl commands from your workstation.
If you host your own Teleport cluster, you can also run tctl commands on the computer that
hosts the Teleport Auth Service for full permissions.
- SSH로 Linux 호스트에 연결할 머신에
tbot이 이미 설치되고 설정되어 있어야 합니다. 자세한 내용은 배포 가이드를 참조하세요.
1단계/3단계. RBAC 설정#
먼저 봇이 생성한 자격 증명이 인프라의 SSH 서버에 연결할 수 있도록 Teleport를 설정해야 합니다. 이 예시에서는 root 사용자 이름으로 모든 SSH 노드에 대한 접근이 허용됩니다. 이는 필요한 권한을 부여하는 역할을 만들고 해당 역할을 봇에 할당하는 방식으로 수행됩니다.
다음 내용으로 role.yaml 파일을 만듭니다:
kind: role
version: v6
metadata:
name: example-role
spec:
allow:
# Linux 사용자 'root'로 로그인 허용.
logins: ['root']
# 모든 노드에 대한 연결 허용. ansible이 접근해야 하는
# 노드에만 일치하도록 이 레이블을 조정하세요.
node_labels:
'*': '*'
example-role을 사용 사례와 관련된 설명적인 이름으로 교체하세요.
자격 증명으로 실행해야 하는 명령에 따라 root 이외의 사용자에게 접근을 허용하도록 조정할 수도 있습니다.
프로덕션 환경에서는 봇이 접근해야 하는 호스트만으로 접근을 제한하도록 node_labels를 조정해야 합니다. 이를 최소 권한 원칙이라고 하며, 유출된 자격 증명이 할 수 있는 피해를 제한합니다.
tctl create -f ./role.yaml을 사용하여 역할을 만듭니다.
이제 tctl bots update를 사용하여 봇에 역할을 추가합니다. example을 배포 가이드에서 만든 봇의 이름으로, example-role을 방금 만든 역할의 이름으로 교체하세요:
$ tctl bots update example --add-roles example-role
2단계/3단계. tbot 출력 서비스 설정#
이제 SSH 인증서와 OpenSSH 설정을 생성할 서비스로 tbot을 설정해야 합니다. 이를 위해 identity 출력 서비스 유형을 사용합니다.
출력 서비스는 대상으로 설정해야 합니다. 이 예시에서는 directory 대상을 사용합니다. 이는 자격 증명을 디스크의 지정된 디렉터리에 기록합니다. tbot이 실행되는 Linux 사용자가 이 디렉터리에 쓸 수 있고 SSH를 사용해야 하는 Linux 사용자가 읽을 수 있도록 하세요.
tbot 설정을 수정하여 identity 서비스를 추가합니다:
services:
- type: identity
destination:
type: directory
# 이 가이드에서는 /opt/machine-id를 대상 디렉터리로 사용합니다.
# 필요에 따라 커스터마이즈할 수 있습니다. 여러 출력은 동일한
# 대상을 공유할 수 없습니다.
path: /opt/machine-id
tbot을 백그라운드 서비스로 실행 중인 경우 재시작하세요. 원샷 모드로 실행 중이라면 tbot이 생성한 자격 증명을 사용하여 SSH로 노드에 연결하기 전에 실행해야 합니다.
3단계/3단계. 출력 자격 증명 사용#
tbot이 실행되거나 재시작된 후 /opt/machine-id 아래에서 여러 파일을 볼 수 있습니다:
identity:tsh가 인증하는 데 사용할 수 있는 자격 증명 번들입니다.ssh_config: OpenSSH 및 다른 도구에서 연결 시 올바른 자격 증명으로 Teleport Proxy Service를 사용하도록 설정하는 데 사용할 수 있습니다.known_hosts: Teleport SSH 호스트 CA가 포함되어 있어 SSH 클라이언트가 호스트의 인증서를 검증할 수 있습니다.key-cert.pub: Teleport SSH 사용자 CA가 서명한 SSH 인증서입니다.key: SSH 인증서를 사용하는 데 필요한 개인 키입니다.
이 자격 증명은 Teleport의 CLI tsh 또는 ssh 및 sftp와 같은 OpenSSH 클라이언트 도구와 함께 사용할 수 있습니다.
tsh를 사용하여 연결#
tbot 아이덴티티 서비스와 함께 tsh를 사용하려면 -i 플래그를 사용하여 identity 파일의 경로를 지정해야 합니다. 또한 --proxy를 사용하여 연결 시 사용할 Teleport Proxy Service의 주소를 지정해야 합니다.
이 예시에서 tsh는 example.teleport.sh:443 프록시를 통해 my-host라는 노드에 연결하고 hostname 명령을 실행하는 데 사용됩니다:
$ tsh -i /opt/machine-id/identity --proxy example.teleport.sh:443 ssh root@my-host hostname
my-host
OpenSSH를 사용하여 연결#
아이덴티티 서비스와 함께 OpenSSH를 사용하려면 -F 플래그를 사용하여 ssh_config의 경로를 ssh에 제공해야 합니다.
생성된 ssh_config를 사용하면 노드 이름에 Teleport 클러스터 이름을 추가해야 합니다 - 이 예시에서는 example.teleport.sh 클러스터에 속하는 노드 my-host에서 root로 hostname 명령이 실행됩니다.
$ ssh -F /opt/machine-id/ssh_config root@my-host.example.teleport.sh hostname
my-host
OpenSSH의 ssh_config는 tsh가 설치되어 있어야 합니다. OpenSSH 클라이언트가 Teleport의 포트 멀티플렉싱과 호환되도록 tsh가 사용되기 때문입니다.
다른 도구를 사용하여 연결#
다른 SSH 도구와 통합하려면 먼저 ssh_config가 해당 도구와 호환되는지 확인하세요. 이는 Ansible과 같은 많은 도구에 해당되며 "OpenSSH를 사용하여 연결" 아래에 제공된 지침으로 충분합니다.
Ansible과 통합하려면 Ansible 전용 가이드를 확인하세요.
도구가 ssh_config와 호환되지 않는 경우에도 머신 및 워크로드 아이덴티티가 생성한 자격 증명을 사용하도록 설정할 수 있습니다. SSH 클라이언트 인증서와 ProxyCommand 또는 ProxyJump 기능을 지원해야 합니다.
다음 단계#
- 사용 가능한 모든 설정 옵션을 확인하려면 설정 레퍼런스를 읽으세요.
