InfoGrab DocsInfoGrab Docs

Teleport 접근 제어 시작하기

요약

Teleport 역할 기반 접근 제어(RBAC)는 인프라 내에서 누가 무엇에 접근할 수 있는지 관리하는 시스템입니다. 이 가이드는 리소스에 레이블을 적용하고, 최소 역할을 설정하고, 특정 역할에서 사용 가능한 리소스에 접근하는 과정을 안내하여 Teleport의 RBAC를 이해하는 데 도움이 됩니다.

Teleport 역할 기반 접근 제어(RBAC)는 인프라 내에서 누가 무엇에 접근할 수 있는지 관리하는 시스템입니다. 사용자에게 직접 권한을 할당하는 대신, 권한 세트를 정의하는 역할을 만든 다음 해당 역할을 사용자에게 할당합니다.

이 가이드는 리소스에 레이블을 적용하고, 최소 역할을 설정하고, 특정 역할에서 사용 가능한 리소스에 접근하는 과정을 안내하여 Teleport의 RBAC를 이해하는 데 도움이 됩니다.

작동 방식#

이 가이드에서는 Docker 컨테이너와 Teleport SSH Service를 사용하여 Teleport에 서버를 등록하고 서버 접근을 위한 RBAC 규칙을 적용하는 방법을 설명합니다. 예제에서는 Teleport로 보호된 서버를 사용하지만, 인프라 리소스 접근을 위한 RBAC 규칙 적용은 모든 Teleport로 보호된 리소스에서 유사하게 작동합니다.

사전 요구 사항#

  • 실행 중인 Teleport 클러스터. Teleport를 시작하려면 무료 체험판에 가입하거나 데모 환경을 구성하세요.

  • tctl and tsh clients.

    Installing `tctl` and `tsh` clients
    1. Teleport 클러스터의 버전을 확인합니다. tctl and tsh clients는 Teleport 클러스터 버전보다 최대 한 개의 메이저 버전까지만 뒤처질 수 있습니다. Proxy Service의 /v1/webapi/find로 GET 요청을 보내고 JSON 쿼리 도구를 사용하여 클러스터 버전을 확인합니다. teleport.example.com:443를 Teleport Proxy Service의 웹 주소로 바꿉니다:

      $ TELEPORT_DOMAIN=teleport.example.com:443
      $ TELEPORT_VERSION="$(curl -s https://$TELEPORT_DOMAIN/v1/webapi/find | jq -r '.server_version')"
      
    2. 사용 중인 플랫폼에 대한 지침에 따라 tctl and tsh clients를 설치합니다:

Mac

     `tctl` and `tsh` clients가 포함된, 서명된 Teleport macOS .pkg 설치 프로그램을 다운로드합니다:
 
     ```code
     $ curl -O https://cdn.teleport.dev/teleport-${TELEPORT_VERSION?}.pkg
     ```

     Finder에서 `pkg` 파일을 더블 클릭하여 설치를 시작합니다.
 
     
Warning
       Homebrew를 사용하여 Teleport를 설치하는 것은 지원되지 않습니다. Homebrew의
       Teleport 패키지는 Teleport에서 유지 관리하지 않으므로 신뢰성이나 보안을
       보장할 수 없습니다.
     

Windows - Powershell

     ```code
     $ curl.exe -O https://cdn.teleport.dev/teleport-v${TELEPORT_VERSION?}-windows-amd64-bin.zip
     # Unzip the archive and move the `tctl` and `tsh` clients to your %PATH%
     # NOTE: Do not place the `tctl` and `tsh` clients in the System32 directory, as this can cause issues when using WinSCP.
     # Use %SystemRoot% (C:\Windows) or %USERPROFILE% (C:\Users\<username>) instead.
     ```
 
   

 
   

Linux

     Linux 설치판의 모든 Teleport 바이너리에는 `tctl` and `tsh` clients가 포함되어 있습니다.  RPM/DEB
     패키지 및 i386/ARM/ARM64용 다운로드를 포함한 더 많은 옵션은
     [설치 페이지](../installation/installation.mdx)를 참조하세요.
 
     ```code
     $ curl -O https://cdn.teleport.dev/teleport-v${TELEPORT_VERSION?}-linux-amd64-bin.tar.gz
     $ tar -xzf teleport-v${TELEPORT_VERSION?}-linux-amd64-bin.tar.gz
     $ cd teleport
     $ sudo ./install
     # Teleport binaries have been copied to /usr/local/bin
     ```
   

 

Teleport cluster에 연결할 수 있는지 확인하려면 tsh login으로 로그인한 다음, 현재 자격 증명으로 tctl 명령을 실행할 수 있는지 확인합니다.

예를 들어, teleport.example.com에 cluster 내 Teleport Proxy Service의 도메인 이름을, email@example.com에 Teleport 사용자 이름을 지정하여 다음 명령을 실행합니다:

$ tsh login --proxy=teleport.example.com --user=email@example.com
$ tctl status
# Cluster  (=teleport.url=)
# Version  (=teleport.version=)
# CA pin   (=presets.ca_pin=)

cluster에 연결하여 tctl status 명령을 실행할 수 있다면, 현재 자격 증명을 사용하여 워크스테이션에서 이후의 tctl 명령을 실행할 수 있습니다. 자체 Teleport cluster를 호스팅하는 경우, 전체 권한을 얻기 위해 Teleport Auth Service를 호스팅하는 컴퓨터에서 tctl 명령을 실행할 수도 있습니다.

  • 조인 토큰과 다른 역할을 생성할 권한이 있는 Teleport 사용자. 사전 설정 editor 역할이 있는 데모 클러스터를 사용하는 것을 권장합니다.
  • 워크스테이션에 Docker가 설치되어 있어야 합니다. Docker는 이 가이드에서 사용하는 로컬 데모 환경에만 필요합니다. Docker 설치 지침은 Docker 웹사이트에서 확인할 수 있습니다. Docker 없이 Teleport에 서버를 등록하려면 서버 접근 시작하기 가이드를 참조하세요.

1/3단계. 레이블로 리소스 등록#

이 섹션에서는 Teleport 클러스터에 두 개의 서버를 등록합니다. 하나의 서버에는 env:local-dev 레이블이 있고 다른 하나에는 env:local-prod 레이블이 있습니다. 이 가이드의 뒷부분에서 env:local-dev 레이블이 있는 서버에 대한 접근을 허용하고 env:local-prod 레이블에 대한 접근을 거부하는 역할을 만들 것입니다.

이 지침을 따르기 전에 teleport.example.com:443에 Teleport 클러스터 호스트명과 포트를 할당합니다(scheme(https://)은 제외).

env:local-dev 레이블로 서버 등록#

  1. 서버가 클러스터에 조인하기 위해 사용할 조인 토큰을 생성합니다:

    $ tctl tokens add --type=node --format=text
    
  2. 토큰을 token에, Teleport Proxy Service의 호스트와 웹 포트를 example.teleport.sh:443에 할당합니다.

  3. 다음 Teleport 구성을 local-dev.yaml 파일에 복사합니다:

    version: v3
    teleport:
      data_dir: /var/lib/teleport
      join_params:
        token_name: token
        method: token
      proxy_server: example.teleport.sh:443
    auth_service:
      enabled: "false"
    ssh_service:
      enabled: "true"
      labels:
        env: local-dev
    proxy_service:
      enabled: "false"
    

    이 Teleport 구성은 Teleport SSH Service를 활성화하여 Teleport 클러스터에 서버를 등록합니다. ssh_service.labels 필드는 서버에 env:local-dev라는 레이블을 추가합니다.

  4. 생성한 구성 파일의 절대 경로를 dev-config-path에 할당합니다.

  5. 워크스테이션에서 Docker 컨테이너를 시작하여 Teleport 클러스터에 리소스로 등록하려는 서버를 준비합니다:

    $ docker run -v dev-config-path:/etc/teleport.yaml --interactive --tty ubuntu:24.04 /bin/bash
    
  6. 컨테이너 셸에서 curl과 sudo를 설치합니다:

    $ apt-get update && apt-get install -y curl sudo
    
  7. 컨테이너 셸에서 컨테이너에 Teleport를 설치합니다:

    $ curl "https://teleport.example.com:443/scripts/install.sh" | bash
    
  8. 컨테이너 셸에서 Teleport SSH Service를 시작합니다:

    $ teleport start
    

    컨테이너 셸에 연결된 터미널을 열어두세요.

  9. 잠시 기다립니다. tsh login으로 로그인했는지 확인하고 레이블로 등록된 서버를 나열하여 서버가 클러스터에 조인했는지 확인합니다. 방금 등록한 서버가 표시되어야 합니다:

    $ tsh ls env=local-dev
    Node Name    Address    Labels
    ------------ ---------- -------------
    80f60427d316 ⟵ Tunnel   env=local-dev
    

env:local-prod 레이블로 서버 등록#

  1. 별도의 터미널을 엽니다.

  2. 서버가 클러스터에 조인하기 위해 사용할 조인 토큰을 생성합니다:

    $ tctl tokens add --type=node --format=text
    
  3. 토큰을 token에 할당합니다.

  4. 다음 YAML 문서를 local-prod.yaml 파일에 복사합니다. 이 구성은 env:local-prod 레이블로 Teleport SSH Service를 시작합니다:

    version: v3
    teleport:
      data_dir: /var/lib/teleport
      join_params:
        token_name: token
        method: token
      proxy_server: example.teleport.sh:443
    auth_service:
      enabled: "false"
    ssh_service:
      enabled: "true"
      labels:
        env: local-prod
    proxy_service:
      enabled: "false"
    
  5. 생성한 구성 파일의 절대 경로를 prod-config-path에 할당합니다.

  6. 워크스테이션에서 Docker 컨테이너를 시작하여 Teleport 클러스터에 리소스로 등록하려는 서버를 준비합니다:

    $ docker run -v prod-config-path:/etc/teleport.yaml --interactive --tty ubuntu:24.04 /bin/bash
    
  7. 컨테이너 셸에서 curl과 sudo를 설치합니다:

    $ apt-get update && apt-get install -y curl sudo
    
  8. 컨테이너 셸에서 컨테이너에 Teleport를 설치합니다:

    $ curl "https://teleport.example.com:443/scripts/install.sh" | bash
    
  9. 컨테이너 셸에서 Teleport SSH Service를 시작합니다:

    $ teleport start
    

    컨테이너 셸에 연결된 터미널을 열어두세요.

  10. 서버가 클러스터에 조인했는지 확인합니다:

    $ tsh ls env=local-prod
    Node Name    Address    Labels
    ------------ ---------- --------------
    ba2290caf694 ⟵ Tunnel   env=local-prod
    

2/3단계. Teleport 역할 생성#

env:local-dev 레이블이 있는 서버에는 접근할 수 있지만 env:local-prod 레이블이 있는 서버에는 접근할 수 없는 역할을 생성합니다.

  1. 다음 내용으로 role.yaml 파일을 생성합니다:

    kind: role
    version: v7
    metadata:
      name: local-dev-only
    spec:
      allow:
        logins: [root]
        node_labels:
          env: local-*
      deny:
        node_labels:
          env: local-prod
    

    allow 블록은 사용자가 접근할 수 있는 항목을 나타냅니다. 기본적으로 아무것도 허용되지 않으므로 각 역할에는 권한을 제공하는 최소한 하나의 allow 필드가 포함되어야 합니다.

    spec.allow.logins 필드를 사용하면 서버에 연결할 때 root 로그인을 사용할 수 있습니다. 덜 허용적인 로그인으로 변경할 수 있지만, 여기서는 스핀업한 Docker 컨테이너에서 유일하게 사용 가능한 로그인이기 때문에 root를 사용합니다.

    spec.allow.node_labels는 하나 이상의 문자와 일치하는 와일드카드 구문을 사용하여 서버에 할당한 env:local-devenv:local-prod 레이블과 같이 env:local-로 시작하는 레이블이 있는 모든 서버에 사용자가 연결할 수 있게 합니다.

    그러나 deny.node_labels 필드가 env:local-prod를 지정하므로, 이 역할을 가진 사용자는 env:local-dev 레이블이 있는 서버에만 접근할 수 있습니다.

  2. 역할을 생성합니다:

    $ tctl create role.yaml
    

3/3단계. 서버 접근#

이 단계에서는 local-dev-only 역할로 로컬 Teleport 사용자를 만들고, 사용 가능한 서버를 나열한 다음 env:local-dev 레이블이 있는 서버에 연결합니다.

  1. local-dev-only 역할로 alice라는 로컬 사용자를 생성합니다:

    $ tctl users add alice --roles=local-dev-only
    
  2. 터미널의 지침에 따라 alice로 로그인합니다.

  3. 터미널에서 클러스터에서 로그아웃하고 다시 로그인합니다. example.teleport.sh에 Teleport Proxy Service의 도메인 이름을 할당합니다:

    $ tsh logout
    $ tsh login --user=alice --proxy=example.teleport.sh
    
  4. 사용자가 접근할 수 있는 모든 서버를 나열합니다. 하나만 표시되어야 합니다:

    $ tsh ls
    Node Name    Address    Labels
    ------------ ---------- -------------
    ba2290caf694 ⟵ Tunnel   env=local-dev
    

    aliceenv:local-prod 레이블이 있는 서버에 대한 접근이 거부되므로 env:local-dev 레이블이 있는 서버만 연결 가능합니다.

  5. tsh ls에 표시된 Node Name 필드의 값을 사용하여 서버에 접근합니다. ba2290caf694에 서버의 이름을 할당합니다:

    $ tsh ssh root@ba2290caf694
    

다음 단계#

이 가이드에서는 서버를 등록할 때 붙인 레이블에 따라 SSH 서버에 대한 접근을 허용하고 거부하는 Teleport 역할을 만들었습니다. Teleport 역할로 할 수 있는 더 많은 것들을 읽어보세요.

Teleport RBAC 기본 사항 더 알아보기#

Teleport 역할을 사용하여 RBAC를 관리하는 방법에 대해 자세히 알아보세요:

특정 종류의 리소스에 대한 RBAC 구성#

모든 Teleport로 보호된 리소스에 레이블을 지정하고 해당 레이블을 사용하여 RBAC 정책을 설정할 수 있습니다. 또한 각 종류의 Teleport 리소스에는 접근을 제어하는 데 사용할 수 있는 더 구체적인 속성이 있습니다. 각 종류의 리소스에 대한 RBAC를 세밀화하려면 아래 가이드를 읽으세요:

참조 가이드#

Teleport 역할에서 구성할 수 있는 필드에 대한 전체 설명은 Teleport 접근 제어 참조를 참조하세요.

Teleport 접근 제어 시작하기

Teleport v18.9
원문 보기
요약

Teleport 역할 기반 접근 제어(RBAC)는 인프라 내에서 누가 무엇에 접근할 수 있는지 관리하는 시스템입니다. 이 가이드는 리소스에 레이블을 적용하고, 최소 역할을 설정하고, 특정 역할에서 사용 가능한 리소스에 접근하는 과정을 안내하여 Teleport의 RBAC를 이해하는 데 도움이 됩니다.

Teleport 역할 기반 접근 제어(RBAC)는 인프라 내에서 누가 무엇에 접근할 수 있는지 관리하는 시스템입니다. 사용자에게 직접 권한을 할당하는 대신, 권한 세트를 정의하는 역할을 만든 다음 해당 역할을 사용자에게 할당합니다.

이 가이드는 리소스에 레이블을 적용하고, 최소 역할을 설정하고, 특정 역할에서 사용 가능한 리소스에 접근하는 과정을 안내하여 Teleport의 RBAC를 이해하는 데 도움이 됩니다.

작동 방식#

이 가이드에서는 Docker 컨테이너와 Teleport SSH Service를 사용하여 Teleport에 서버를 등록하고 서버 접근을 위한 RBAC 규칙을 적용하는 방법을 설명합니다. 예제에서는 Teleport로 보호된 서버를 사용하지만, 인프라 리소스 접근을 위한 RBAC 규칙 적용은 모든 Teleport로 보호된 리소스에서 유사하게 작동합니다.

사전 요구 사항#

  • 실행 중인 Teleport 클러스터. Teleport를 시작하려면 무료 체험판에 가입하거나 데모 환경을 구성하세요.

  • tctl and tsh clients.

    Installing `tctl` and `tsh` clients
    1. Teleport 클러스터의 버전을 확인합니다. tctl and tsh clients는 Teleport 클러스터 버전보다 최대 한 개의 메이저 버전까지만 뒤처질 수 있습니다. Proxy Service의 /v1/webapi/find로 GET 요청을 보내고 JSON 쿼리 도구를 사용하여 클러스터 버전을 확인합니다. teleport.example.com:443를 Teleport Proxy Service의 웹 주소로 바꿉니다:

      $ TELEPORT_DOMAIN=teleport.example.com:443
      $ TELEPORT_VERSION="$(curl -s https://$TELEPORT_DOMAIN/v1/webapi/find | jq -r '.server_version')"
      
    2. 사용 중인 플랫폼에 대한 지침에 따라 tctl and tsh clients를 설치합니다:

Mac

     `tctl` and `tsh` clients가 포함된, 서명된 Teleport macOS .pkg 설치 프로그램을 다운로드합니다:
 
     ```code
     $ curl -O https://cdn.teleport.dev/teleport-${TELEPORT_VERSION?}.pkg
     ```

     Finder에서 `pkg` 파일을 더블 클릭하여 설치를 시작합니다.
 
     
Warning
       Homebrew를 사용하여 Teleport를 설치하는 것은 지원되지 않습니다. Homebrew의
       Teleport 패키지는 Teleport에서 유지 관리하지 않으므로 신뢰성이나 보안을
       보장할 수 없습니다.
     

Windows - Powershell

     ```code
     $ curl.exe -O https://cdn.teleport.dev/teleport-v${TELEPORT_VERSION?}-windows-amd64-bin.zip
     # Unzip the archive and move the `tctl` and `tsh` clients to your %PATH%
     # NOTE: Do not place the `tctl` and `tsh` clients in the System32 directory, as this can cause issues when using WinSCP.
     # Use %SystemRoot% (C:\Windows) or %USERPROFILE% (C:\Users\<username>) instead.
     ```
 
   

 
   

Linux

     Linux 설치판의 모든 Teleport 바이너리에는 `tctl` and `tsh` clients가 포함되어 있습니다.  RPM/DEB
     패키지 및 i386/ARM/ARM64용 다운로드를 포함한 더 많은 옵션은
     [설치 페이지](../installation/installation.mdx)를 참조하세요.
 
     ```code
     $ curl -O https://cdn.teleport.dev/teleport-v${TELEPORT_VERSION?}-linux-amd64-bin.tar.gz
     $ tar -xzf teleport-v${TELEPORT_VERSION?}-linux-amd64-bin.tar.gz
     $ cd teleport
     $ sudo ./install
     # Teleport binaries have been copied to /usr/local/bin
     ```
   

 

Teleport cluster에 연결할 수 있는지 확인하려면 tsh login으로 로그인한 다음, 현재 자격 증명으로 tctl 명령을 실행할 수 있는지 확인합니다.

예를 들어, teleport.example.com에 cluster 내 Teleport Proxy Service의 도메인 이름을, email@example.com에 Teleport 사용자 이름을 지정하여 다음 명령을 실행합니다:

$ tsh login --proxy=teleport.example.com --user=email@example.com
$ tctl status
# Cluster  (=teleport.url=)
# Version  (=teleport.version=)
# CA pin   (=presets.ca_pin=)

cluster에 연결하여 tctl status 명령을 실행할 수 있다면, 현재 자격 증명을 사용하여 워크스테이션에서 이후의 tctl 명령을 실행할 수 있습니다. 자체 Teleport cluster를 호스팅하는 경우, 전체 권한을 얻기 위해 Teleport Auth Service를 호스팅하는 컴퓨터에서 tctl 명령을 실행할 수도 있습니다.

  • 조인 토큰과 다른 역할을 생성할 권한이 있는 Teleport 사용자. 사전 설정 editor 역할이 있는 데모 클러스터를 사용하는 것을 권장합니다.
  • 워크스테이션에 Docker가 설치되어 있어야 합니다. Docker는 이 가이드에서 사용하는 로컬 데모 환경에만 필요합니다. Docker 설치 지침은 Docker 웹사이트에서 확인할 수 있습니다. Docker 없이 Teleport에 서버를 등록하려면 서버 접근 시작하기 가이드를 참조하세요.

1/3단계. 레이블로 리소스 등록#

이 섹션에서는 Teleport 클러스터에 두 개의 서버를 등록합니다. 하나의 서버에는 env:local-dev 레이블이 있고 다른 하나에는 env:local-prod 레이블이 있습니다. 이 가이드의 뒷부분에서 env:local-dev 레이블이 있는 서버에 대한 접근을 허용하고 env:local-prod 레이블에 대한 접근을 거부하는 역할을 만들 것입니다.

이 지침을 따르기 전에 teleport.example.com:443에 Teleport 클러스터 호스트명과 포트를 할당합니다(scheme(https://)은 제외).

env:local-dev 레이블로 서버 등록#

  1. 서버가 클러스터에 조인하기 위해 사용할 조인 토큰을 생성합니다:

    $ tctl tokens add --type=node --format=text
    
  2. 토큰을 token에, Teleport Proxy Service의 호스트와 웹 포트를 example.teleport.sh:443에 할당합니다.

  3. 다음 Teleport 구성을 local-dev.yaml 파일에 복사합니다:

    version: v3
    teleport:
      data_dir: /var/lib/teleport
      join_params:
        token_name: token
        method: token
      proxy_server: example.teleport.sh:443
    auth_service:
      enabled: "false"
    ssh_service:
      enabled: "true"
      labels:
        env: local-dev
    proxy_service:
      enabled: "false"
    

    이 Teleport 구성은 Teleport SSH Service를 활성화하여 Teleport 클러스터에 서버를 등록합니다. ssh_service.labels 필드는 서버에 env:local-dev라는 레이블을 추가합니다.

  4. 생성한 구성 파일의 절대 경로를 dev-config-path에 할당합니다.

  5. 워크스테이션에서 Docker 컨테이너를 시작하여 Teleport 클러스터에 리소스로 등록하려는 서버를 준비합니다:

    $ docker run -v dev-config-path:/etc/teleport.yaml --interactive --tty ubuntu:24.04 /bin/bash
    
  6. 컨테이너 셸에서 curl과 sudo를 설치합니다:

    $ apt-get update && apt-get install -y curl sudo
    
  7. 컨테이너 셸에서 컨테이너에 Teleport를 설치합니다:

    $ curl "https://teleport.example.com:443/scripts/install.sh" | bash
    
  8. 컨테이너 셸에서 Teleport SSH Service를 시작합니다:

    $ teleport start
    

    컨테이너 셸에 연결된 터미널을 열어두세요.

  9. 잠시 기다립니다. tsh login으로 로그인했는지 확인하고 레이블로 등록된 서버를 나열하여 서버가 클러스터에 조인했는지 확인합니다. 방금 등록한 서버가 표시되어야 합니다:

    $ tsh ls env=local-dev
    Node Name    Address    Labels
    ------------ ---------- -------------
    80f60427d316 ⟵ Tunnel   env=local-dev
    

env:local-prod 레이블로 서버 등록#

  1. 별도의 터미널을 엽니다.

  2. 서버가 클러스터에 조인하기 위해 사용할 조인 토큰을 생성합니다:

    $ tctl tokens add --type=node --format=text
    
  3. 토큰을 token에 할당합니다.

  4. 다음 YAML 문서를 local-prod.yaml 파일에 복사합니다. 이 구성은 env:local-prod 레이블로 Teleport SSH Service를 시작합니다:

    version: v3
    teleport:
      data_dir: /var/lib/teleport
      join_params:
        token_name: token
        method: token
      proxy_server: example.teleport.sh:443
    auth_service:
      enabled: "false"
    ssh_service:
      enabled: "true"
      labels:
        env: local-prod
    proxy_service:
      enabled: "false"
    
  5. 생성한 구성 파일의 절대 경로를 prod-config-path에 할당합니다.

  6. 워크스테이션에서 Docker 컨테이너를 시작하여 Teleport 클러스터에 리소스로 등록하려는 서버를 준비합니다:

    $ docker run -v prod-config-path:/etc/teleport.yaml --interactive --tty ubuntu:24.04 /bin/bash
    
  7. 컨테이너 셸에서 curl과 sudo를 설치합니다:

    $ apt-get update && apt-get install -y curl sudo
    
  8. 컨테이너 셸에서 컨테이너에 Teleport를 설치합니다:

    $ curl "https://teleport.example.com:443/scripts/install.sh" | bash
    
  9. 컨테이너 셸에서 Teleport SSH Service를 시작합니다:

    $ teleport start
    

    컨테이너 셸에 연결된 터미널을 열어두세요.

  10. 서버가 클러스터에 조인했는지 확인합니다:

    $ tsh ls env=local-prod
    Node Name    Address    Labels
    ------------ ---------- --------------
    ba2290caf694 ⟵ Tunnel   env=local-prod
    

2/3단계. Teleport 역할 생성#

env:local-dev 레이블이 있는 서버에는 접근할 수 있지만 env:local-prod 레이블이 있는 서버에는 접근할 수 없는 역할을 생성합니다.

  1. 다음 내용으로 role.yaml 파일을 생성합니다:

    kind: role
    version: v7
    metadata:
      name: local-dev-only
    spec:
      allow:
        logins: [root]
        node_labels:
          env: local-*
      deny:
        node_labels:
          env: local-prod
    

    allow 블록은 사용자가 접근할 수 있는 항목을 나타냅니다. 기본적으로 아무것도 허용되지 않으므로 각 역할에는 권한을 제공하는 최소한 하나의 allow 필드가 포함되어야 합니다.

    spec.allow.logins 필드를 사용하면 서버에 연결할 때 root 로그인을 사용할 수 있습니다. 덜 허용적인 로그인으로 변경할 수 있지만, 여기서는 스핀업한 Docker 컨테이너에서 유일하게 사용 가능한 로그인이기 때문에 root를 사용합니다.

    spec.allow.node_labels는 하나 이상의 문자와 일치하는 와일드카드 구문을 사용하여 서버에 할당한 env:local-devenv:local-prod 레이블과 같이 env:local-로 시작하는 레이블이 있는 모든 서버에 사용자가 연결할 수 있게 합니다.

    그러나 deny.node_labels 필드가 env:local-prod를 지정하므로, 이 역할을 가진 사용자는 env:local-dev 레이블이 있는 서버에만 접근할 수 있습니다.

  2. 역할을 생성합니다:

    $ tctl create role.yaml
    

3/3단계. 서버 접근#

이 단계에서는 local-dev-only 역할로 로컬 Teleport 사용자를 만들고, 사용 가능한 서버를 나열한 다음 env:local-dev 레이블이 있는 서버에 연결합니다.

  1. local-dev-only 역할로 alice라는 로컬 사용자를 생성합니다:

    $ tctl users add alice --roles=local-dev-only
    
  2. 터미널의 지침에 따라 alice로 로그인합니다.

  3. 터미널에서 클러스터에서 로그아웃하고 다시 로그인합니다. example.teleport.sh에 Teleport Proxy Service의 도메인 이름을 할당합니다:

    $ tsh logout
    $ tsh login --user=alice --proxy=example.teleport.sh
    
  4. 사용자가 접근할 수 있는 모든 서버를 나열합니다. 하나만 표시되어야 합니다:

    $ tsh ls
    Node Name    Address    Labels
    ------------ ---------- -------------
    ba2290caf694 ⟵ Tunnel   env=local-dev
    

    aliceenv:local-prod 레이블이 있는 서버에 대한 접근이 거부되므로 env:local-dev 레이블이 있는 서버만 연결 가능합니다.

  5. tsh ls에 표시된 Node Name 필드의 값을 사용하여 서버에 접근합니다. ba2290caf694에 서버의 이름을 할당합니다:

    $ tsh ssh root@ba2290caf694
    

다음 단계#

이 가이드에서는 서버를 등록할 때 붙인 레이블에 따라 SSH 서버에 대한 접근을 허용하고 거부하는 Teleport 역할을 만들었습니다. Teleport 역할로 할 수 있는 더 많은 것들을 읽어보세요.

Teleport RBAC 기본 사항 더 알아보기#

Teleport 역할을 사용하여 RBAC를 관리하는 방법에 대해 자세히 알아보세요:

특정 종류의 리소스에 대한 RBAC 구성#

모든 Teleport로 보호된 리소스에 레이블을 지정하고 해당 레이블을 사용하여 RBAC 정책을 설정할 수 있습니다. 또한 각 종류의 Teleport 리소스에는 접근을 제어하는 데 사용할 수 있는 더 구체적인 속성이 있습니다. 각 종류의 리소스에 대한 RBAC를 세밀화하려면 아래 가이드를 읽으세요:

참조 가이드#

Teleport 역할에서 구성할 수 있는 필드에 대한 전체 설명은 Teleport 접근 제어 참조를 참조하세요.