Teleport는 인프라 접근 관리 도구로, 조직의 자원 접근 관리와 권한 관리를 도와 보안 사고를 방지하는 데 기여합니다. 이를 사용하면 SSH, Windows 접속, Kubernetes 클러스터, DBMS(데이터베이스 관리 시스템) 접속, 웹 애플리케이션에 더 쉽게 접근하도록 설정할 수 있고요. 조직은 멤버 관리, 인프라 자산 관리, 권한 관리, 보안 준수의 복잡성을 해소하고, 시간도 절약할 수 있죠. 인포그랩도 사내에 Teleport를 도입해 인프라 접근을 전보다 더 안전하고 편리하게 관리하고 있습니다.

저는 지난해 11월 Teleport를 인포그랩 기술 블로그에 자세히 소개했는데요. 이때 Teleport 아키텍처와 접근 관리 방식, 기능, 인포그랩의 도입 사례를 설명했습니다. 이번 글부터는 ‘Teleport 기능 톺아보기’ 시리즈를 진행하며 이 도구의 활용법을 자세히 알려드릴 건데요. 1탄으로 Enterprise Edition과 Community Edition의 주요 기능을 소개하고요. Enterprise Edition의 핵심 기능인 SSO와 Access Requests 이용 방법을 살펴보겠습니다.

Edition별 주요 기능

Teleport는 크게 Enterprise Edition과 Community Edition으로 나뉩니다.

Enterprise Edition에는 Teleport의 모든 기능이 있는데요. 이는 셀프 호스팅 버전과 클라우드 호스팅(SaaS) 버전으로 나뉘죠. 셀프 호스팅 버전은 특정 보안 요구 사항이 있는 조직이 사용하면 좋은데요. 이는 Hardware Security Modules와 FedRAMP 컴플라이언스와 같은 고급 기능을 지원합니다. 클라우드 호스팅 버전은 Auth 서비스와 Proxy 서비스의 배포를 유지, 확장, 보호하는 오버헤드를 없애주고요.

Community Edition은 취미나 개인 용도로 사용하기에 적합합니다. 이는 데이터베이스, Windows 데스크톱, Kubernetes 클러스터에 안전하게 액세스하는 무료, 오픈 소스 배포판을 제공하죠.

이제 Enterprise Edition과 Community Edition의 주요 기능을 알아보겠습니다(2024년 6월 기준).

Teleport 동작 방식. 출처=Teleport | 인포그랩 GitLab
Teleport 동작 방식. 출처=Teleport

Enterprise Edition

  • SSO(Single Sign-On)

    외부 ID 공급자(IdP)와 통합해 별도 사용자 관리와 인증을 사용하지 않고 해당 IdP 인증 정보로 접근하는 SSO를 서비스합니다. Enterprise Edition에서는 외부 IdP로 OIDC, SAML, Google Workspace, GitHub 등을 지원합니다.

  • Just In Time Access Requests

    최소 권한 부여 원칙을 준수하고, 무분별한 권한 할당을 지양하기 위해 특정 리소스나 역할의 임시 자격, 승인을 지원합니다.

  • Device Trust

    Teleport에 접근하는 장비를 검증, 제한해 사용자가 등록한 장비로만 접근하도록 합니다.

  • IP 기반 제한

    Teleport에 접근하는 Client IP를 검증, 제한해 악의적인 사용자를 막고, 특정 IP 사용자만 접근하도록 합니다.

Community Edition

  • Infra Connect

    Teleport에서 지원하는 인증·인가 방식으로 Server, Database, Kubernetes, App 접속을 안전하게 지원합니다.

  • RBAC(Role-Based Access Controls)

    역할 기반 제어 방식으로 RBAC*을 활용합니다. YAML을 사용해 단순하게 관리하고, 파일 내용을 직관적으로 이해할 수 있습니다.

  • SSO

    외부 IdP와 통합해 별도 사용자 관리와 인증을 활용하지 않고 해당 IdP 인증 정보로 접근하는 SSO를 서비스합니다. Community Edition에서는 외부 IdP로 GitHub만 지원합니다.

  • Audit Log

    Teleport로 접속하는 모든 인프라의 이벤트, 감사 로그를 JSON 형태로 제공하고, 세션 녹음도 지원합니다. 데이터는 클라우드 데이터베이스에 저장할 수 있으며 외부 로깅, 모니터링 서비스에 쉽게 연동할 수 있습니다.

  • Integration

    인프라, 클라우드에 등록하는 것 외에도 다양한 서비스와 통합할 수 있습니다. Slack, Mattermost, Discord, Jira, ServiceNow, GitLab, GitHub, Jenkins 등을 지원합니다(일부 서비스는 통합할 때 라이선스가 필요합니다).

    *RBAC(Role-Based Access Controls): 사용자, 역할, 팀의 중앙 디렉터리를 통해 인프라 권한 액세스를 관리하는 방식

SSO, Access Requests 가이드

인포그랩은 Teleport Enterprise Edition을 사용해 사내 인프라 접근을 관리하는데요. Enterprise Edition은 Community Edition보다 더 많은 액세스 제어, 컴플라이언스, Identity 기능을 제공하죠. 저는 사용자 입장에서 특히 유용했던 Teleport 기능을 일부 소개하려는데요. 바로 SSO와 Access Requests입니다. 두 기능은 Community Edition에서도 이용할 수 있지만 기능 지원 규모가 Enterprise Edition보다 제한적인데요. 이 글에서는 Enterprise Edition을 기준으로 SSO와 Access Requests의 이용 방법을 자세히 알아보겠습니다.

SSO

Teleport에서는 SSO로 외부 IdP와 통합해 별도 사용자 관리와 인증을 사용하지 않고 해당 IdP 인증 정보로 접근할 수 있습니다. 특히 Enterprise Edition에서는 외부 IdP로 OIDC, SAML, Google Workspace, GitHub 등을 지원하고요. 다양한 SSO를 등록할 수 있습니다.

SSO를 사용하면 관리자는 비밀번호 관리 취약점을 예방할 수 있고요. 조직 변동에 따른 사용자 관리 방식을 간소화하고, 권한을 효율적으로 관리할 수 있습니다. 사용자는 간편하게 로그인할 수 있죠.

참고로 외부 IdP와 통합하는 방법은 다른 도구와 통합하는 방법과 비슷한데요. IdP를 관리해 봤다면 이를 쉽게 수행할 수 있습니다. 지금부터 SSO로 외부 IdP인 OIDC와 통합하고, 기존 OIDC 인증 정보로 Teleport에 로그인하는 방법을 설명하겠습니다.

  1. 아래와 같이 OIDC 인증 정보와 URL 정보를 입력한 뒤, 그룹별로 할당할 역할을 설정합니다. 이 예제는 YAML로 작성했습니다.
    kind: oidc
    metadata:
    name: oidc_connector
    spec:
    claims_to_roles:
    - claim: groups
    roles:
    - access
    value: users
    - claim: groups
    roles:
    - editor
    value: admins
    client_id: <CLIENT-NAME>
    client_secret: <CLIENT-SECRET>
    issuer_url: https://idp.example.com/
    redirect_url: https://mytenant.teleport.sh:443/v1/webapi/oidc/callback
    max_age: 24h
    version: v3

  1. 환경에 맞게 값을 수정한 YAML 파일을 Teleport 서버에 생성합니다. 그다음, tctl create -f filename.yaml 명령어를 실행합니다. 이후 Teleport Access Management 메뉴의 Auth Connectors 카테고리에 아래 화면과 같이 OIDC 프로바이더가 뜨는 걸 확인할 수 있습니다.
    Teleport Access Management 메뉴의 Auth Connectors 카테고리에 OIDC 프로바이더가 뜬 모습 | 인포그랩 GitLab
    Teleport Access Management 메뉴의 Auth Connectors 카테고리에 OIDC 프로바이더가 뜬 모습

  2. 사용자가 Teleport에 로그인할 때 아래 화면이 나타납니다.
    Teleport 로그인 화면 | 인포그랩 GitLab
    Teleport 로그인 화면

  3. 이렇게 외부 IdP와 통합하면 터미널에서 tsh 명령어 도구로 간편하게 로그인하고, 인프라에 접근할 수 있는데요. tsh 명령어 도구로 Teleport에 로그인하면 아래 화면과 같이 ‘로그인 성공(Login Successful)’ 메시지가 뜹니다.
    OIDC 통합 이후 터미널에서 `tsh` 명령어 도구로 Teleport에 로그인할 때 뜨는 성공 메시지 | 인포그랩 GitLab
    OIDC 통합 이후 터미널에서 tsh 명령어 도구로 Teleport에 로그인할 때 뜨는 성공 메시지

외부 IdP와 통합하기 전에는 웹과 터미널 인증, 세션이 분리돼 로그인을 각각 따로 해야 했죠. 그러나 통합 이후에는 웹이나 터미널에서 해당 IdP 인증 정보로 단 한 번에 쉽고 빠르게 로그인할 수 있습니다.

Access Requests

조직에서 인프라 접근을 관리할 때, 필수 권한이 없거나 추가 권한이 필요해 이를 요청하고 할당하는 일이 있죠. 이때 사용자는 ‘어떤 리소스나 역할의 권한을 요청할지’ 파악하는 데 시간이 걸리고요. 관리자는 해당 요청을 승인하고, 작업이 끝난 뒤 권한을 회수하는 데 긴 시간이 소요됩니다. Teleport에서는 이러한 워크플로를 Access Requests로 간소화할 수 있습니다.

Access Requests는 특정 리소스나 역할의 임시 자격, 승인을 지원합니다. 사용자가 권한을 요청하면, 관리자가 이를 확인한 뒤 승인 또는 거부하고요. 임시 자격을 지원하므로 정해진 기간에만 권한을 부여하고, 이후 자동 회수할 수도 있죠. 이로써 ‘필요 이상의 권한을 부여하지 않고 작업에 필요한 권한만 부여한다’는 최소 권한 부여 원칙을 준수하며, 권한을 유연하게 관리할 수 있습니다.

지금부터 Access Requests로 사용자가 권한을 요청하고, 관리자가 이를 승인하는 방법을 살펴보겠습니다.

  1. Teleport에서 아래 화면과 같이 빨간색 테두리로 표시한 아이콘을 눌러 Access Requests 메뉴로 이동합니다. 이 메뉴에서 권한을 요청합니다.

    Teleport에서 빨간색 테두리로 표시한 아이콘을 누르면 Access Requests 메뉴로 이동함 | 인포그랩 GitLab
    Teleport에서 빨간색 테두리로 표시한 아이콘을 누르면 Access Requests 메뉴로 이동함

  2. Teleport에서 권한은 리소스, 역할별로 요청할 수 있고요. 권한 개시일(Start Date)과 접근 기간(Access Duration)도 설정할 수 있습니다. 또 요청 사유(Request Reason)도 입력할 수 있죠. 여기서는 특정 Kubernetes 리소스에 View 역할을 3일 동안 이용하도록 아래 화면과 같이 신청했습니다.

    Teleport Access Requests 메뉴에서 권한을 요청할 때, 권한 개시일과 접근 기간, 요청 사유를 입력한 화면 | 인포그랩 GitLab
    Teleport Access Requests 메뉴에서 권한을 요청할 때, 권한 개시일과 접근 기간, 요청 사유를 입력한 화면

  3. 관리자는 Teleport의 Access Requests 메뉴에서 권한 요청 내용을 확인한 뒤, 아래 화면과 같이 승인(Approve Short-term Access) 또는 거부(Reject Request)할 수 있습니다.

    Teleport Access Requests 메뉴에서 권한 요청을 검토하는 화면 | 인포그랩 GitLab
    Teleport Access Requests 메뉴에서 권한 요청을 검토하는 화면

  4. 승인받은 사용자는 Teleport의 Access Requests 메뉴에서 할당받은 권한을 확인한 뒤, 아래 화면과 같이 Assume Roles 버튼을 눌러 웹이나 터미널에서 접근할 수 있습니다. 만료 기간이 지나면 권한은 자동 회수됩니다.

    Teleport Access Requests 메뉴에서 할당받은 권한을 확인하고(위), Resources 메뉴에서 관련 리소스를 확인하는 화면(아래) | 인포그랩 GitLab
    Teleport Access Requests 메뉴에서 할당받은 권한을 확인하고(위), Resources 메뉴에서 관련 리소스를 확인하는 화면(아래)

    한편, Teleport를 Slack과 연결하면 권한 요청, 승인 여부를 Slack 특정 채널에서 메시지로 받을 수 있습니다. 이로써 사용자와 관리자가 워크플로 진행 과정을 쉽고 빠르게 확인할 수 있습니다.

    Slack에 전송된 Teleport 권한 요청, 승인 메시지 | 인포그랩 GitLab
    Slack에 전송된 Teleport 권한 요청, 승인 메시지

맺음말

인포그랩은 완성형 플랫폼을 구성하기 위해 사내 인프라 접근 관리 도구로 Teleport를 도입했습니다. 이전에 Community Edition을 사용할 때는 편리하지만 아쉬운 점도 여럿 있었는데요. Enterprise Edition을 사용하면서 이를 해소했습니다. Enterprise Edition에서는 Community Edition보다 훨씬 더 다양한 기능을 이용할 수 있었는데요. 이로써 워크플로를 단순화하고 자동화해 시간과 비용을 많이 절약했죠. 인포그랩 구성원도 Teleport에 긍정적인 반응을 보였고요. 앞으로도 Teleport의 다양한 알짜 기능과 활용 방식을 계속 소개하겠습니다.

참고 자료

  1. How to Choose a Teleport Edition
  2. Teleport Features
  3. Teleport - Pricing
  4. Teleport - Integrations
  5. Teleport - Configure Single Sign-On

인포그랩은 GitLab과 DevOps를 맞춤형으로 기술 지원합니다. GitLab(Omnibus/Cloud Native Hybrid) 구축 지원이 필요하시면 문의하기로 연락해 주십시오.