본문 바로가기
카테고리 없음

[계정/권한 관리] Teleport - 최초 설정 및 메뉴 설명

by 이뫼장 2023. 12. 26.

이전글

2023.12.26 - [분류 전체보기] - [계정/권한 관리] Teleport - 설치 & 실행

 


 

글 작성 당시에는 하나의 글로 작성하려 했으나 설명 중 Teleport 외 이것저것 주변지식을 설명하다보니 글이 길어져서 두개의 글로 나눴습니다..  

 

 

최초 관리자 계정 생성

Teleport는 타 오픈소스와는 다르게 최초에 Super Admin 계정을 제공하지 않는다. 그래서 처음 실행 전 Admin 계정을 CLI를 통해 생성해주어야 한다. 

 

Admin 계정 생성 시에는 Admin 계정으로 사용하기 위해 role(역할)을 부여해야 하며, Teleport가 기본으로 제공하는 editor, auditor, access의 3개의 role 중에 부여해야한다. (이후 Custom roles를 추가할 수 있다.)

  • editor : editor 역할은 사용자에게 클러스터 구성을 수정할 수 있는 권한을 부여한다.
  • auditor : auditor 역할은 사용자에게 감사 로그를 볼 수 있는 권한을 부여한다.
  • access : 액세스 역할은 사용자에게 클러스터 리소스에 액세스할 수 있는 권한을 부여한다.

관리자 계정이기 때문에 모든 역할을 부여할 예정이다. 

 

관리자 계정을 생성 및 역할 부여를 위해서는 "tctl user add"를 사용하면 되지만, Teleport가 Container 환경에서 실행 중이기 그냥 명령어를 실행 시 실행되지 않는다. (tctl 명령어가 로컬 호스트에는 없을 것이다.)

 

방법은 아래와 같이 두가지 중 편한 방법으로 실행하면 된다. (-distroless 버전의 이미지 사용자는 2번방법이안됨) 

  1. "docker exec"를 사용하여  Container에 명령어 주입
  2. "docker exec -it"로 컨테이너에 진입하여 명령어를 실행

 

계정 생성하기

docker exec teleport tctl users add hellolcs --roles=editor,auditor,access --logins=root
  • tctl users add hellolcs : hellolcs라는 계정을 생성한다. 대신에 생성할 ID를 입력하면 된다. 
  • --roles=editor,auditor,access : 전체 역할을 부여
  • --logins=root : 서버에 접근할때 사용할 계정

 

계정 생성을 위한 추가 설정

계정 생성 시 별도 URL을 출력하며 해당 URL로 진입하여 추가 설정을 해야 계정 설정이 완료 된다. 

 

초기 Container 실행 시 hostname을 localhost로 했기 때문에 URL이 https://localhost:3080으로 나오니 localhost부분을 서버 IP로 변경하여 웹브라우저를 통해 진입하면 아래와 같이 패스워드 설정 화면이 나온다.

 

패스워드를 입력하면 2-Factor Device 등록을 해야하며, 구글 OTP(Acuthenticator)를 사용하면 된다. 

 

 구글 OTP(Google Authenticator) QR코드 스캔 후 등록된 OTP를 아래 화면 Authenticator Code"에 등록하면 아래와 같이 등록 성공화면을 보게 된다. 

 

이렇게 해서 처음 보게되는 Teleport 화면이다. 

 

 

메뉴 구성

메뉴 구성은 Drill-Down 메뉴로 Management, Resources 두개의 메뉴가 있다. 

Management는 관리자가 사이트를 설정하는 메뉴이며, Resources는 사이트의 이용자가 사용하게 되는 메뉴이다.

 

Resources 메뉴는 보면 쉽게 알 수 있는 메뉴이므로 Management 메뉴에 대해서만 확인해 보려 한다.

 

Users

계정을 등록하는 메뉴이다.

계정 등록 시 User Role 등록은 필수이며, 계정 생성 시 아래와 같이 생성된 계정에 별도 URL이 발급되며, 계정의 소유자는 해당 링크를 통해 패스워드 설정 및 OTP를 필수로 등록해야 한다. (해당 URL의 lifecycle이 있으므로 유의해야 한다.)

계정 생성 시 발급되는 계정 사후 설정 URL link

 

Auth Connectors

AD, Okata 등 사용자 계정 정보 연동을 위한  외부 소스 연동 기능이다. (SSO)

Enterprise 기능이므로 필자는 사용하지 않는다. 

 

Intergrations

Intergrations는 Enroll New Resource(신규 리소스 등록)과 Enroll New Intergration(신규 통합 등록)에서 등록한 리소스 또는 Machine을 관리하는 메뉴이다. 

  • Enroll New Resource : 통합 관리하려는 리소스(os/dbms/k8s 등)을 등록하는 메뉴이다.
  • Enroll New Intergration : Teleport를 사용하려는 시스템을 등록하는 메뉴이다.  예를 들어 Jenkins가 CI/CD를 위해 특정 서버를 ssh 접속 해야 한다면 해당 메뉴에서 Jenkins를 Machine ID를 설정해주어야 한다. 

 

User Roles

접근 권한을 관리하는 메뉴이다.

Teleport는 기본적으로 RBAC(Role Based Access Controll)로 동작하도록 설계되어 있다. 

즉,  역할(Role) 별로 접근범위 및 권한을 설정하고 계정에 해당에 해당 역할을 연결하여 계정 별 접근범위 및 권한을 통제한다.

 

User Roles에는 해당 역할(범위+권한)을 설정하는 메뉴이다.

Teleport는 기본으로 3가지의 Role을 제공하며 해당 Role은 본 글 상단에 설명되어 있으니 참고 바라며, Custom Role은 다음 글에서 설명할 예정이다. 

 

Session & Identify Locks

말그대로 세션 및 ID를 잠그는 메뉴이다. ID 잠금 설정 시 잠금시간(TTL)을 설정할 수 있다.

 

Trusted Devices

Enterprise 기능이다. 신뢰하는 기기를 등록하는 메뉴이며 신뢰하는 기기로 등록되면 해당기기에서 접근 시 엄격한 인증을 하지 않아도 된다. 

Activity (Session Recodings, Audit Log)

Teleport는 각 세션 별로 녹화기능을 제공한다. 해당 녹화는 모든 시간을 녹화하는 것은 아니며, 키 이벤트 또는 네트워크 전송 등의 이벤트가 발생할 시에만 녹화한다. (Role 설정 시 "enhanced_recording" 필드에서 항목 설정 가능)

 

Audit Log는 세션에 대한 로그이며, 접속, 접속종료, 데이터 전송 등의 이벤트에 대해 로깅한다.

 

다만, 전송한 커맨드에 대해 텍스트를 로깅하지 않고 녹화만 한다.  

해당 기능은 추가적인 확인이 필요하며, 사용한 명령어별 테스트 기반의 로깅이 아닌 화면 녹화이므로 사용자 행위 감사 시에 큰 어려움이 있을 것으로 예상된다. 

 

Clusters

Manage Clusters는 현재 클러스터의 정보를 확인하는 메뉴이며, Trusted Clusters는 Cluster를 연동할 때 사용하는 메뉴이다. 특별히 사용할 일은 없어 보인다. 

 

 

 

마치며..

이번 글에서는 최초 구동 후 간략히 메뉴 구성에 대해서 확인하였다.

다음 글 부터는 목적에 맞게 SSH 접근통제 하려는 서버(Client) 등록 및 사용자 접근을 통제하기 위한 User Role 등록에 대해 알아보려 한다.

 

 


다음글::

2024.01.02 - [분류 전체보기] - [계정/권한 관리] Teleport - Server Resource(ssh 서버) 등록하기