Infograb logo
서버 액세스를 위한 머신 ID

Teleport는 서버에 대한 SSH 액세스를 보호하고 제어합니다. 머신 ID는 이러한 서버에 안전하고 단기적인 액세스를 부여하는 데 사용될 수 있습니다.

이 가이드에서는 tbot 을 구성하여 Teleport에 등록된 Linux 서버에 접근할 수 있는 자격 증명을 생성하는 방법을 설명합니다. 이 가이드는 Teleport CLI tsh 및 OpenSSH 클라이언트를 통한 액세스를 다룹니다.

전제 조건

  • 실행 중인 Teleport 클러스터 버전 17.0.0-dev 이상. Teleport를 시작하려면 가입하여 무료 평가판을 이용하거나 데모 환경 설정 방법을 확인하십시오.

  • tctl 관리자 도구와 tsh 클라이언트 도구.

    tctltsh 다운로드 방법에 대한 지침은 설치를 방문하십시오.

  • 서버를 Teleport에 연결하지 않은 경우, 서버 액세스 시작 가이드를 따르십시오.
  • 연결이 가능한지 확인하기 위해 tsh login 으로 로그인한 다음, 현재 자격 증명을 사용하여 tctl 명령어를 실행할 수 있는지 확인하십시오. 예를 들어:
    tsh login --proxy=teleport.example.com --user=email@example.com
    tctl status

    클러스터 teleport.example.com

    버전 17.0.0-dev

    CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678

    클러스터에 연결할 수 있고 tctl status 명령어를 실행할 수 있다면, 현재 자격 증명을 사용하여 워크스테이션에서 후속 tctl 명령어를 실행할 수 있습니다.
    자신의 Teleport 클러스터를 호스팅하는 경우, Teleport Auth Service를 호스팅하는 컴퓨터에서 전체 권한으로 tctl 명령어를 실행할 수도 있습니다.
  • tbot 은 SSH를 통해 Linux 호스트에 연결할 기계에 이미 설치되고 구성되어 있어야 합니다. 자세한 내용은 배포 가이드를 참조하십시오.

1/3단계. RBAC 구성

먼저, Teleport는 봇이 생성한 자격 증명이 인프라의 SSH 서버에 연결할 수 있도록 구성되어야 합니다. 이 예에서는 root 사용자에게 모든 SSH 노드에 대한 액세스를 부여합니다. 이를 위해 필요한 권한을 부여하는 역할을 만들고 이 역할을 Bot에 할당합니다.

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 를 사용하여 Bot에 역할을 추가합니다. 배포 가이드에서 생성한 Bot의 이름을 example 로 바꾸고 방금 생성한 역할의 이름을 example-role 로 바꾸십시오:

tctl bots update example --add-roles example-role

2/3단계. tbot 출력 구성

이제, tbot 은 SSH 인증서와 OpenSSH 구성을 생성할 출력을 구성해야 합니다. 이를 위해 identity 출력 유형을 사용합니다.

출력은 목적지가 구성되어야 합니다. 이 예에서는 directory 목적지를 사용합니다. 이는 이러한 자격 증명을 디스크의 지정된 디렉터리에 기록합니다. 이 디렉터리에 tbot 이 실행되는 Linux 사용자가 쓸 수 있고, SSH를 사용해야 하는 Linux 사용자가 읽을 수 있는지 확인하십시오.

tbot 구성에서 identity 출력을 추가하도록 수정하십시오:

outputs:
  - type: identity
    destination:
      type: directory
      # 이 가이드를 위해, /opt/machine-id가 목적지 디렉터리로 사용됩니다.
      # 이 경로를 사용자 정의할 수 있습니다. 여러 출출력이 동일한
      # 목적지를 공유할 수 없습니다.
      path: /opt/machine-id

tbot 을 백그라운드 서비스로 운영하는 경우, 이를 재시작하십시오. tbot 을 원샷 모드로 실행하는 경우, SSH를 통해 노드에 연결하기 위해 tbot 이 생성한 자격 증명을 사용하기 전에 실행해야 합니다.

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 또는 sshsftp 와 같은 OpenSSH 클라이언트 도구와 함께 사용할 수 있습니다.

tsh 를 사용하여 연결하기

tshtbot ID 출력과 함께 사용하려면 identity 파일의 경로를 -i 플래그를 사용하여 지정해야 합니다. 추가로, 연결을 할 때 사용해야 하는 Teleport Proxy Service의 주소를 지정하기 위해 --proxy 를 사용해야 합니다.

이 예제에서, 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를 사용하여 연결하기

ID 출력을 사용하여 OpenSSH를 사용하려면, ssh-F 플래그를 사용하여 ssh_config 경로를 제공해야 합니다.

생성된 ssh_config 에 Teleport 클러스터의 이름을 노드 이름에 추가해야 합니다. 이 예제에서, hostname 명령은 클러스터 example.teleport.sh 에 속하는 노드 my-host 에서 root 로 실행됩니다.

ssh -F /opt/machine-id/ssh_config root@my-host.example.teleport.sh hostname
my-host

OpenSSH를 위한 ssh_configtsh 가 설치되어 있어야 합니다. 이는 tsh 가 OpenSSH 클라이언트를 Teleport의 포트 다중화를 호환 가능하게 만드는 데 사용되기 때문입니다.

다른 도구를 사용하여 연결하기

다른 SSH 도구와 통합하려면 우선 ssh_config 가 호환되는지 확인해야 합니다. 이는 Ansible과 같은 많은 도구에 해당하며, "OpenSSH 사용하여 연결하기"에 제공된 지침이 충분할 것입니다.

Ansible과 통합하려면 Ansible 전용 가이드를 확인하시기 바랍니다.

귀하의 도구가 ssh_config 와 호환되지 않는 경우, Machine ID에 의해 생성된 자격 증명을 사용하도록 구성할 수 있는 가능성이 여전히 있을 수 있습니다. SSH 클라이언트 인증서를 지원하고 ProxyCommand 또는 ProxyJump 기능을 지원해야 합니다.

다음 단계

  • 구성 참조를 읽어 모든 사용 가능한 구성 옵션을 탐색하세요.
Teleport 원문 보기