InfoGrab Docs

에이전트에 새 서비스 활성화

요약

단일 Teleport 에이전트는 여러 서비스를 실행할 수 있습니다. Teleport 에이전트가 클러스터에 합류할 때, 자신을 인증하기 위해 Teleport Auth Service에 조인 토큰을 제시합니다. Teleport 에이전트가 클러스터에 합류하면, Teleport Auth Service는 에이전트에 대한 인증서를 발급합니다.

단일 Teleport 에이전트는 여러 서비스를 실행할 수 있습니다. 이 가이드는 Teleport 에이전트가 실행하는 서비스를 조정하여 인프라의 다양한 리소스를 프록시할 수 있는 방법을 보여줍니다.

작동 방식#

Teleport 에이전트가 클러스터에 합류할 때, 자신을 인증하기 위해 Teleport Auth Service에 조인 토큰을 제시합니다. 조인 토큰은 Teleport Auth Service 백엔드에 저장된 동적 리소스입니다. 여기에는 TTL(Time To Live), 이름, 그리고 토큰이 에이전트에서 실행을 인가하는 Teleport 서비스 목록이 포함됩니다.

Teleport 에이전트가 클러스터에 합류하면, Teleport Auth Service는 에이전트에 대한 인증서를 발급합니다. 인증서에는 에이전트가 실행할 수 있도록 인가된 Teleport 서비스가 포함됩니다. 에이전트에서 새 서비스를 실행하려면 해당 서비스에 대한 초기 합류 절차를 반복해야 합니다. 에이전트는 새 토큰으로 클러스터에 다시 합류하고 새 인증서를 받아야 합니다.

사전 요구 사항#

  • Teleport 클러스터
  • 클러스터에서 실행 중인 하나 이상의 Teleport 에이전트 (Linux 서버 또는 Kubernetes 파드)

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.

예시로, 이 가이드는 토큰 조인 방법을 사용하여 에이전트에 서비스를 추가하는 방법을 보여줍니다. 이는 여러 가능한 조인 방법 중 하나입니다. 전체 목록은 Teleport 에이전트 사용 개요를 읽어보세요.

1/3단계. 새 조인 토큰 생성#

에이전트에서 실행 중인 모든 서비스(추가하려는 새 서비스 포함)에 대한 새 조인 토큰을 생성합니다.

예를 들어, 에이전트가 Teleport 쿠버네티스 서비스를 실행하고 있고 Teleport 애플리케이션 서비스도 실행하려는 경우, Teleport 쿠버네티스 서비스와 Teleport 애플리케이션 서비스에 대한 조인 토큰을 생성합니다. 이를 위해 tctl tokens add--type 플래그에 두 서비스를 지정합니다:

$ tctl tokens add --type=kube,app --ttl=5m

다음 토큰 유형을 지정할 수 있습니다:

Role Teleport Service
app Application Service
auth Auth Service
bot Machine & Workload Identity Bot
db Database Service
discovery Discovery Service
kube Kubernetes Service
node SSH Service
proxy Proxy Service
windowsdesktop Windows Desktop Service

teleport-kube-agent Helm 차트를 사용하여 Teleport 에이전트를 실행하는 경우, 토큰 유형을 알게 되면 roles 필드에 필요한 역할이 포함되도록 values 파일을 업데이트합니다.

예를 들어, 다음 변경은 Teleport 애플리케이션 서비스를 활성화하기 위해 app 역할을 추가합니다:

- roles: kube,db
+ roles: kube,app,db

차트가 지원하는 역할 및 토큰 유형은 teleport-kube-agent 차트 레퍼런스를 참조하세요.

2/3단계. 에이전트 구성 편집#

모든 Teleport 에이전트 서비스는 동일한 teleport 프로세스에서 동시에 실행됩니다. teleport 데몬이 시작되면 구성 파일(기본적으로 /etc/teleport.yaml)을 로드하고 실행할 서비스를 결정합니다. 구성 파일에는 에이전트가 인증을 위해 Teleport Auth Service에 제시하는 조인 토큰에 대한 참조도 포함됩니다.

새 서비스 활성화#

Teleport 구성 파일에서 _service 문자열을 포함하는 최상위 구성 필드는 특정 Teleport 서비스의 실행 여부를 나타냅니다.

서비스를 활성화하려면 enabled 필드를 true로 설정하여 서비스에 대한 구성 필드를 추가합니다. 다음 구성 스니펫은 구성 파일에서 각 Teleport 에이전트 서비스를 활성화하는 예시입니다:

Teleport 에이전트가 Linux 서버에서 실행되는 경우, 구성 파일을 편집하여 새 서비스를 활성화합니다:

app_service:
  enabled: true

Teleport 에이전트가 teleport-kube-agent 차트를 사용하여 실행되는 경우, values 파일을 편집하여 apps에 항목을 추가합니다:

apps:
  - name: myapp
    # ...

Teleport 에이전트가 Linux 서버에서 실행되는 경우, 구성 파일을 편집하여 새 서비스를 활성화합니다:

db_service:
  enabled: true

Teleport 에이전트가 teleport-kube-agent 차트를 사용하여 실행되는 경우, values 파일을 편집하여 databases에 항목을 추가합니다:

databases:
  - name: mydb
    # ...

Teleport 에이전트가 Linux 서버에서 실행되는 경우, 구성 파일을 편집하여 새 서비스를 활성화합니다:

kubernetes_service:
  enabled: true

Teleport 에이전트가 teleport-kube-agent 차트를 사용하여 실행되는 경우, values 파일을 편집하여 kubeClusterName 필드를 추가합니다:

kubeClusterName: mycluster

Teleport 에이전트가 Linux 서버에서 실행되는 경우, 구성 파일을 편집하여 새 서비스를 활성화합니다:

ssh_service:
  enabled: true

Teleport SSH 서비스는 teleport-kube-agent 차트에서 사용할 수 없습니다.

Teleport 에이전트가 Linux 서버에서 실행되는 경우, 구성 파일을 편집하여 새 서비스를 활성화합니다:

windows_desktop_service:
  enabled: true

Windows Desktop 서비스는 teleport-kube-agent 차트에서 사용할 수 없습니다.

위의 예시들이 새 서비스를 활성화하지만, 리소스를 프록시하도록 구성하지는 않는다는 점에 유의하세요. 새 Teleport 서비스를 구성하는 방법은 리소스 등록 가이드를 읽어보세요.

조인 토큰 업데이트#

에이전트의 구성 파일이 새 조인 토큰을 참조하는지 확인합니다.

  1. 생성한 조인 토큰의 이름을 찾습니다:

    $ tctl tokens ls
    # Token                            Type        Labels Expiry Time (UTC)
    # -------------------------------- ----------- ------ -------------------------------
    # (=presets.tokens.first=) Node,Db,App        10 Aug 23 19:49 UTC (4m11s)
    

    이 경우 토큰 이름은 <code>[presets.tokens.first]</code>입니다.

  2. 에이전트의 구성 파일에서 teleport.join_params 또는 teleport.auth_token을 업데이트합니다:

      teleport:
        join_params:
    -     token_name: (=presets.tokens.second=)
    +     token_name: (=presets.tokens.first=)
          method: token
    

    이 필드의 값이 파일 경로인 경우, 해당 경로의 파일을 편집하여 새 토큰의 이름을 참조하도록 합니다. 예를 들어, 필드 값이 /var/lib/teleport/token인 경우 다음 명령을 실행합니다:

    $ echo (=presets.tokens.first=) > /var/lib/teleport/token
    

    에이전트를 배포하기 위해 teleport-kube-agent Helm 차트를 사용하는 경우, values 파일에서 authToken 필드 또는 joinParams.tokenName 필드를 확인하세요.

3/3단계. 새 조인 토큰으로 Teleport 에이전트 시작#

Teleport 에이전트를 재시작하여 새 토큰으로 클러스터에 다시 합류하고 실행하려는 추가 서비스를 인가하는 인증서를 받습니다.

Linux 서버#

Teleport 에이전트가 Linux 서버에서 실행되는 경우:

  1. 에이전트의 상태 디렉터리를 삭제합니다. 기본값은 /var/lib/teleport입니다. (에이전트 구성 파일의 teleport.data_dir 필드를 확인하세요.) 데이터 디렉터리가 없으면 에이전트는 기존 자격 증명을 읽는 대신 Auth Service에서 초기 자격 증명을 가져옵니다.

  2. 에이전트를 재시작합니다:

    $ sudo systemctl reload teleport
    

Helm 차트#

Helm 릴리즈를 업그레이드합니다:

$ helm upgrade teleport-agent teleport-kube-agent

추가 읽기: 코드로 토큰 관리#

이 가이드에서는 tctl을 사용하여 토큰을 생성하는 방법을 보여주지만, Teleport Terraform 프로바이더 또는 Kubernetes 오퍼레이터를 사용하여 토큰을 관리할 수도 있습니다. 토큰 리소스에 대한 자세한 내용은 다음 문서를 참조하세요:

에이전트에 조인 토큰을 할당하는 프로세스를 자동화하는 시스템을 구축하여 실행하는 모든 Teleport 서비스에 올바른 조인 토큰 권한이 있는지 확인할 수 있습니다. 다음은 문서의 예시입니다:

에이전트에 새 서비스 활성화

원문 보기
요약

단일 Teleport 에이전트는 여러 서비스를 실행할 수 있습니다. Teleport 에이전트가 클러스터에 합류할 때, 자신을 인증하기 위해 Teleport Auth Service에 조인 토큰을 제시합니다. Teleport 에이전트가 클러스터에 합류하면, Teleport Auth Service는 에이전트에 대한 인증서를 발급합니다.

단일 Teleport 에이전트는 여러 서비스를 실행할 수 있습니다. 이 가이드는 Teleport 에이전트가 실행하는 서비스를 조정하여 인프라의 다양한 리소스를 프록시할 수 있는 방법을 보여줍니다.

작동 방식#

Teleport 에이전트가 클러스터에 합류할 때, 자신을 인증하기 위해 Teleport Auth Service에 조인 토큰을 제시합니다. 조인 토큰은 Teleport Auth Service 백엔드에 저장된 동적 리소스입니다. 여기에는 TTL(Time To Live), 이름, 그리고 토큰이 에이전트에서 실행을 인가하는 Teleport 서비스 목록이 포함됩니다.

Teleport 에이전트가 클러스터에 합류하면, Teleport Auth Service는 에이전트에 대한 인증서를 발급합니다. 인증서에는 에이전트가 실행할 수 있도록 인가된 Teleport 서비스가 포함됩니다. 에이전트에서 새 서비스를 실행하려면 해당 서비스에 대한 초기 합류 절차를 반복해야 합니다. 에이전트는 새 토큰으로 클러스터에 다시 합류하고 새 인증서를 받아야 합니다.

사전 요구 사항#

  • Teleport 클러스터
  • 클러스터에서 실행 중인 하나 이상의 Teleport 에이전트 (Linux 서버 또는 Kubernetes 파드)

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.

예시로, 이 가이드는 토큰 조인 방법을 사용하여 에이전트에 서비스를 추가하는 방법을 보여줍니다. 이는 여러 가능한 조인 방법 중 하나입니다. 전체 목록은 Teleport 에이전트 사용 개요를 읽어보세요.

1/3단계. 새 조인 토큰 생성#

에이전트에서 실행 중인 모든 서비스(추가하려는 새 서비스 포함)에 대한 새 조인 토큰을 생성합니다.

예를 들어, 에이전트가 Teleport 쿠버네티스 서비스를 실행하고 있고 Teleport 애플리케이션 서비스도 실행하려는 경우, Teleport 쿠버네티스 서비스와 Teleport 애플리케이션 서비스에 대한 조인 토큰을 생성합니다. 이를 위해 tctl tokens add--type 플래그에 두 서비스를 지정합니다:

$ tctl tokens add --type=kube,app --ttl=5m

다음 토큰 유형을 지정할 수 있습니다:

Role Teleport Service
app Application Service
auth Auth Service
bot Machine & Workload Identity Bot
db Database Service
discovery Discovery Service
kube Kubernetes Service
node SSH Service
proxy Proxy Service
windowsdesktop Windows Desktop Service

teleport-kube-agent Helm 차트를 사용하여 Teleport 에이전트를 실행하는 경우, 토큰 유형을 알게 되면 roles 필드에 필요한 역할이 포함되도록 values 파일을 업데이트합니다.

예를 들어, 다음 변경은 Teleport 애플리케이션 서비스를 활성화하기 위해 app 역할을 추가합니다:

- roles: kube,db
+ roles: kube,app,db

차트가 지원하는 역할 및 토큰 유형은 teleport-kube-agent 차트 레퍼런스를 참조하세요.

2/3단계. 에이전트 구성 편집#

모든 Teleport 에이전트 서비스는 동일한 teleport 프로세스에서 동시에 실행됩니다. teleport 데몬이 시작되면 구성 파일(기본적으로 /etc/teleport.yaml)을 로드하고 실행할 서비스를 결정합니다. 구성 파일에는 에이전트가 인증을 위해 Teleport Auth Service에 제시하는 조인 토큰에 대한 참조도 포함됩니다.

새 서비스 활성화#

Teleport 구성 파일에서 _service 문자열을 포함하는 최상위 구성 필드는 특정 Teleport 서비스의 실행 여부를 나타냅니다.

서비스를 활성화하려면 enabled 필드를 true로 설정하여 서비스에 대한 구성 필드를 추가합니다. 다음 구성 스니펫은 구성 파일에서 각 Teleport 에이전트 서비스를 활성화하는 예시입니다:

Teleport 에이전트가 Linux 서버에서 실행되는 경우, 구성 파일을 편집하여 새 서비스를 활성화합니다:

app_service:
  enabled: true

Teleport 에이전트가 teleport-kube-agent 차트를 사용하여 실행되는 경우, values 파일을 편집하여 apps에 항목을 추가합니다:

apps:
  - name: myapp
    # ...

Teleport 에이전트가 Linux 서버에서 실행되는 경우, 구성 파일을 편집하여 새 서비스를 활성화합니다:

db_service:
  enabled: true

Teleport 에이전트가 teleport-kube-agent 차트를 사용하여 실행되는 경우, values 파일을 편집하여 databases에 항목을 추가합니다:

databases:
  - name: mydb
    # ...

Teleport 에이전트가 Linux 서버에서 실행되는 경우, 구성 파일을 편집하여 새 서비스를 활성화합니다:

kubernetes_service:
  enabled: true

Teleport 에이전트가 teleport-kube-agent 차트를 사용하여 실행되는 경우, values 파일을 편집하여 kubeClusterName 필드를 추가합니다:

kubeClusterName: mycluster

Teleport 에이전트가 Linux 서버에서 실행되는 경우, 구성 파일을 편집하여 새 서비스를 활성화합니다:

ssh_service:
  enabled: true

Teleport SSH 서비스는 teleport-kube-agent 차트에서 사용할 수 없습니다.

Teleport 에이전트가 Linux 서버에서 실행되는 경우, 구성 파일을 편집하여 새 서비스를 활성화합니다:

windows_desktop_service:
  enabled: true

Windows Desktop 서비스는 teleport-kube-agent 차트에서 사용할 수 없습니다.

위의 예시들이 새 서비스를 활성화하지만, 리소스를 프록시하도록 구성하지는 않는다는 점에 유의하세요. 새 Teleport 서비스를 구성하는 방법은 리소스 등록 가이드를 읽어보세요.

조인 토큰 업데이트#

에이전트의 구성 파일이 새 조인 토큰을 참조하는지 확인합니다.

  1. 생성한 조인 토큰의 이름을 찾습니다:

    $ tctl tokens ls
    # Token                            Type        Labels Expiry Time (UTC)
    # -------------------------------- ----------- ------ -------------------------------
    # (=presets.tokens.first=) Node,Db,App        10 Aug 23 19:49 UTC (4m11s)
    

    이 경우 토큰 이름은 <code>[presets.tokens.first]</code>입니다.

  2. 에이전트의 구성 파일에서 teleport.join_params 또는 teleport.auth_token을 업데이트합니다:

      teleport:
        join_params:
    -     token_name: (=presets.tokens.second=)
    +     token_name: (=presets.tokens.first=)
          method: token
    

    이 필드의 값이 파일 경로인 경우, 해당 경로의 파일을 편집하여 새 토큰의 이름을 참조하도록 합니다. 예를 들어, 필드 값이 /var/lib/teleport/token인 경우 다음 명령을 실행합니다:

    $ echo (=presets.tokens.first=) > /var/lib/teleport/token
    

    에이전트를 배포하기 위해 teleport-kube-agent Helm 차트를 사용하는 경우, values 파일에서 authToken 필드 또는 joinParams.tokenName 필드를 확인하세요.

3/3단계. 새 조인 토큰으로 Teleport 에이전트 시작#

Teleport 에이전트를 재시작하여 새 토큰으로 클러스터에 다시 합류하고 실행하려는 추가 서비스를 인가하는 인증서를 받습니다.

Linux 서버#

Teleport 에이전트가 Linux 서버에서 실행되는 경우:

  1. 에이전트의 상태 디렉터리를 삭제합니다. 기본값은 /var/lib/teleport입니다. (에이전트 구성 파일의 teleport.data_dir 필드를 확인하세요.) 데이터 디렉터리가 없으면 에이전트는 기존 자격 증명을 읽는 대신 Auth Service에서 초기 자격 증명을 가져옵니다.

  2. 에이전트를 재시작합니다:

    $ sudo systemctl reload teleport
    

Helm 차트#

Helm 릴리즈를 업그레이드합니다:

$ helm upgrade teleport-agent teleport-kube-agent

추가 읽기: 코드로 토큰 관리#

이 가이드에서는 tctl을 사용하여 토큰을 생성하는 방법을 보여주지만, Teleport Terraform 프로바이더 또는 Kubernetes 오퍼레이터를 사용하여 토큰을 관리할 수도 있습니다. 토큰 리소스에 대한 자세한 내용은 다음 문서를 참조하세요:

에이전트에 조인 토큰을 할당하는 프로세스를 자동화하는 시스템을 구축하여 실행하는 모든 Teleport 서비스에 올바른 조인 토큰 권한이 있는지 확인할 수 있습니다. 다음은 문서의 예시입니다: