이제 디지털 트랜스포메이션과 소프트웨어 도입은 모든 산업에서 필수가 됐습니다. IT, DevOps 환경은 실시간으로 변화하고 있고요. 이에 발맞춰 다양한 기술, 도구, 방법론도 새롭게 나오고 있죠. 아울러 소프트웨어가 기하급수적으로 늘어나면서 운영 환경은 갈수록 복잡해지고 있는데요. 조직에서 이를 관리할 때 어려움이 많습니다. 특히 자원 접근 관리, 권한 관리가 제대로 이뤄지지 않으면 보안 취약점이 발생하고요. 시스템 변조와 데이터 유출 등 위험도 생길 수 있죠.

인프라 접근 관리 도구인 Teleport는 이러한 문제점을 손쉽게 해결하는 수단으로 요즘 주목받습니다. Teleport를 사용하면 SSH, Windows 접속, Kubernetes 클러스터, DBMS(데이터베이스 관리 시스템) 접속, 웹 애플리케이션에 더 쉽게 접근하도록 설정할 수 있는데요. 조직에서 멤버 관리, 인프라 자산 관리, 권한 관리, 보안 준수 등의 복잡성을 해소하고, 시간을 아끼고 싶다면 이 도구를 사용해볼만 합니다.

인포그랩에서는 사내에 Teleport를 도입해 인프라 접근 관리의 안전성과 효율성을 높였고요. 서버를 증설하거나, 팀별 또는 멤버별로 작업 수행 범위가 바뀌더라도 최소 권한을 유지하고, 서버와 환경을 설정하기 더 편리해졌습니다. 이 글에서는 Teleport 기능과 동작 방식, 활용 방법, 인포그랩의 도입 사례를 자세히 소개하겠습니다.

Teleport란?

Teleport 서비스 개념도. 출처=Teleport | 인포그랩 GitLab
Teleport 서비스 개념도. 출처=Teleport

Teleport는 인증, 인가, 자원 관리 등 인프라 운영에 필요한 복잡한 프로세스를 중앙 집중식으로 간소화하고 효율적으로 관리하는 도구입니다. 이 도구는 DevOps 생태계에서 사용하는 대부분의 인프라 서비스에서 작동하도록 설계됐는데요. 현재 Teleport에서는 다음 항목을 지원합니다.

  • SSH
  • Kubernetes
  • Database
  • WebApp
  • Windows
  • AWS Console

Teleport 아키텍처

Teleport 아키텍처는 여러 서비스를 구성, 연동하여 클러스터 형태로 동작합니다. Teleport를 사용하려면 Auth Service, Proxy Service, Agents를 필수로 구성해야 합니다.

Auth Service. 출처=Teleport | 인포그랩 GitLab
Auth Service. 출처=Teleport

  • **Auth Service : **클라이언트(사용자, 서버 등)에게 인증서를 발급하고 Audit 로그를 유지 관리합니다. 이는 일반적으로 Private 네트워크에 위치하며 외부에서 접근할 수 없습니다.

    Proxy Service. 출처=Teleport | 인포그랩 GitLab
    Proxy Service. 출처=Teleport

  • **Proxy Service : **사용자 요청 처리, 자격 증명을 Auth Service에 전달하며, 리소스 접근을 담당합니다. 이는 Public 네트워크에 위치하며 외부에서 접근할 수 있습니다.

  • **Agents : **Teleport에서 관리할 인프라 서비스 등록, 인프라 접근을 담당합니다. 이는 등록할 인프라 서비스와 동일한 네트워크에서 실행되며, 해당 인프라 서비스와 같은 기본 프로토콜을 사용합니다. 사용자 요청을 대상 리소스로 라우팅하는 ‘사이드카’ 형태와 비슷합니다.

이외에도 Teleport에는 SSH Service, Kubernetes Service, Database Service 등 다양한 서비스가 있습니다. 이러한 서비스를 이용하려면 Teleport 클러스터에 각 서비스를 구성하고, 연동해야 합니다.

Teleport 접근 관리 방식

사용자가 인프라 서비스에 안전하고 효율적으로 접근하도록 Teleport에서 지원하는 인증, 인가 방식을 알아보겠습니다.

인증 방식

Teleport에서는 **인증 기관(Certificate Authorities)과 단기 인증서(Short-Lived Certificates)**를 인증 방식으로 활용합니다. Teleport를 이용할 때는 모든 사용자와 인프라 서비스가 ‘신뢰하는 인증 기관’이 발급한 유효한 인증서가 있어야 합니다. 참고로 Teleport에서는 SSH 인증에 Open SSH를, 나머지 인증(Kubernetes, Database 등)에 단기 인증서를 사용합니다. Teleport에서 인증서를 사용하는 이유는 다음과 같습니다.

  • 인증서는 사용자 또는 서비스 ID와 매핑됩니다. 이에 모든 연결과 작업은 사용자나 서비스로 추적될 수 있습니다.
  • 단기 인증서는 유효 기간이 짧아 자동으로 만료됩니다. 이는 삭제하거나 유지 관리하지 않아도 돼 편리합니다.
  • 인증서는 최초 사용 신뢰(TOFU) 문제를 해결합니다. Teleport 클러스터에서는 모든 서버에 고유한 ID와 인증서가 있습니다. ‘신뢰할 수 없는 인증 기관’이 클라이언트 인증서에 서명하면 연결을 허용하지 않습니다.
  • 인증서는 상호 인증 채널인 mTLS를 활성화합니다. mTLS는 스푸핑, 온 패스 공격, 크리덴셜 스터핑 등 다양한 공격을 완화합니다.

아래는 각 인증서에 포함된 메타데이터 항목입니다.

Teleport 인증서. 출처=Teleport | 인포그랩 GitLab
Teleport 인증서. 출처=Teleport

*스푸핑(spoofing): 공격자가 네트워크, 웹사이트 등의 데이터 위변조를 활용해 정상 시스템인 것처럼 위장하여 일반 사용자를 속이는 해킹 기법

*온 패스 공격(On-path attack): 두 장치(웹 브라우저와 웹 서버) 사이에 자신을 배치하고 두 장치 간 통신을 가로채거나 수정하는 공격

*크리덴셜 스터핑(Credential Stuffing): 해커가 다크 웹에서 구매한 인증 정보를 활용해 봇으로 웹사이트에 계속 접속하려 시도하는 자동화된 사이버 공격

인가 방식

Teleport의 인가 방식은 사용자와 RBAC(Role Based Access Control)을 활용합니다. 사용자는 ‘CLI와 API를 이용해 수동으로 만든 Local 사용자’와 ‘SSO 프로토콜(OAuth 2.0, OIDC, SAML)을 사용해 서드 파티 ID 공급자로 인증된 외부 사용자’로 나뉩니다.

RBAC 방식에서는 모든 사용자가 ‘등록된 인프라와 접근 가능한 Teleport 기능’을 관리하는 하나 이상의 역할을 할당받습니다. 인가 방식으로 RBAC을 사용하면 조직과 팀, 서비스에 맞는 다양한 역할을 만들 수 있습니다. 아울러 사용자에게 권한을 부여하여 유연성, 확정성, 규정 준수, 운용 효율성을 향상할 수 있습니다. 또 서버 루트 접근 방지 조치, 사용자·인프라·데이터 보안과 규정 준수 프로세스를 더 쉽게 만들 수 있습니다.

Teleport에서는 RBAC을 Yaml 파일 형식으로 관리합니다. 이는 아래와 같은 특징이 있습니다.

  • ‘Allow Rules’와 ‘Deny Rules’ 두 가지 방식으로 작동함
  • 기본적으로 아무것도 허용하지 않음
  • ‘Deny Rules’를 먼저 평가하며, 이게 우선권이 있음

RBAC 방식에서는 Teleport 구성에 접근 제어를 정의하는 Rules, 역할에 할당된 사용자가 해당 인프라 서비스 대상에서 어떠한 권한을 가질지 정의하는 Principals, 해당 규칙이 적용되는 인프라 서비스 대상을 정의하는 Labels, 변수화와 정규 표현식을 활용한 동적 할당을 정의하는 Templates 등을 활용합니다.

Teleport 지원 기능

Teleport는 인프라 접근 관리의 안전성과 효율성을 높이는 기능을 다수 제공하는데요. 이 가운데 다섯 가지 핵심 기능을 살펴보겠습니다.

API와 CLI(Command-Line Interface) 지원

Teleport는 자체 API와 CLI로 자동화와 서비스 통합 기능을 제공합니다. API와 CLI를 활용하면 복잡한 워크플로를 자동화할 수 있고요. 사내에서 사용하는 기존 도구, 시스템과 통합하여 워크플로를 단순화할 수 있습니다. Teleport에서는 다음 4가지 CLI를 제공합니다.

  • teleport: Teleport Service를 구성, 관리하는 CLI
  • tsh: 사용자가 Teleport에 인증하고 클러스터 리소스에 접근하는 CLI
  • tctl: 관리자가 Teleport 클러스터를 구성, 관리하는 CLI
  • tbot: Machine ID와 함께 단기 자격 증명을 서비스 계정(예: CI/CD 서버)에 제공하는 CLI

SSO(Single Sign-On)

Teleport에서는 SSO 기능을 지원합니다. 이로써 외부 ID 공급자(IdP)와 통합하여 별도의 사용자 관리와 인증을 활용하지 않고도 기존 인증 정보로 접근할 수 있죠. 관리자는 단일 자격 증명을 활용하여 비밀번호 관리 취약점을 예방할 수 있고요. 조직 변동에 따른 유저 관리 방식을 간소화하고, 권한을 효율적으로 관리할 수 있습니다. 사용자는 한 가지 자격 증명만 기억하면 되는데요. 그 결과, 로그인 프로세스가 편리해지고, 권한도 간편하게 획득할 수 있습니다.

Audit & Session Recording

Teleport에서는 데몬이 보안 관련 모든 이벤트를 감지하여 클러스터의 인증 서비스에 전달합니다. 해당 이벤트에는 로그인 시도, 접근 허용/거부, 세션 생성/종료 등 Teleport 클러스터의 전반적인 활동이 체계적으로 기록되고요. 이는 JSON 형식으로 저장됩니다. Teleport에서는 모든 활동 기록을 제공하기에 의심스러운 활동이나 잠재적인 보안 위반을 신속하게 식별하고 대응하며, 감사 활동에 도움을 줍니다. 또 Teleport에서 Session Recording 기능을 사용하면 대화형 세션을 만들어 작업한 활동을 기록, 저장할 수 있는데요. 이 기능을 사용하면 동료와 협업하거나, 문제를 해결하기 위해 과거 세션을 검토할 수 있고요. 이로써 작업 과정의 투명성을 확보할 수 있습니다.

Passwordless Access

Teleport는 비밀번호 없는 접근 방식을 지원합니다. 기존 비밀번호를 없애고 생체 인식 또는 하드웨어 토큰 등을 대신 활용하는데요. 이로써 피싱, 무차별 암호 대입 공격에 대비해 보안을 강화할 수 있고요. 사용자에게 더 편리한 인증 프로세스를 제공할 수 있죠. 관리자는 다양한 산업에서 요구하는 엄격한 보안 프로토콜을 충족할 수 있어 비밀번호를 관리하고 재설정하는 부담을 줄일 수 있습니다.

Access Requests

Teleport 안에서 사용자는 별도 도구를 활용하지 않고 특정 리소스, 역할에 권한을 요청할 수 있습니다. 관리자는 해당 요청을 승인하고 거부할 수 있죠. 이 기능을 사용하면 ‘필요 이상의 권한을 부여하지 않고 작업에 필요한 권한만 부여한다’는 최소 권한 부여 원칙을 유지할 수 있습니다. 특히 Teleport는 Slack, Jira, Mattermost 등 도구와 연동해 워크플로를 간소화하도록 지원하는데요. 이는 사용자가 각종 상황에 신속하게 대응하고, 워크플로를 유연하게 관리하는 데 도움이 됩니다.

인포그랩의 Teleport 도입 사례

Teleport 리소스 관리 화면. 출처=Teleport | 인포그랩 GitLab
Teleport 리소스 관리 화면. 출처=Teleport

인포그랩에서는 온라인 서비스로 회사 홈페이지 인사이트만 운영하다가 올해 신규 서비스 Plumber, DevOps Expert Labs를 론칭했는데요. 이 과정에서 리뷰 환경과 스테이징 환경을 추가 및 증설했고, 서버가 늘었습니다. 아울러 내부에는 DevOps R&D, PoC 환경용 서버가 있는데요. 회사 멤버가 늘어나면서 서버가 계속 증가하는 추세입니다. 또 팀, 멤버별로 역할과 작업 수행 범위가 다른데요. 서버를 증설하거나 팀 또는 구성원의 작업 수행 범위가 바뀌면 그에 맞춰 매번 각 서버와 환경을 설정해야 했습니다. 그 결과, 최소 권한을 유지하기가 힘들어지고요. 서버와 환경을 관리하는 데 시간이 오래 걸리는 등 불편이 생겼습니다.

저는 DevOps 엔지니어로서 멤버 관리, 인프라 자산 관리, 권한 관리, 보안 준수 등의 복잡성을 해소하고, 시간을 절약하기 위해 위 문제를 해결하는 서비스를 여기저기 찾았습니다. 그러던 중 Teleport를 우연히 접했는데요. 앞서 설명한 Teleport의 다양한 기능과 인증, 보안 방식을 내부에서 검토했고요. Teleport가 인포그랩이 현재 겪는 인프라 관리의 문제점 - 서버 증설 및 관리와 작업 수행 범위 변화에 따른 최소 권한 유지의 어려움, 서버와 환경 설정의 불편 을 해결할 수 있는 서비스라고 판단했습니다. 이에 사내 인프라 관리에 Teleport를 도입하기로 결정했죠.

인포그랩에서는 현재 순차적으로 각 서버를 Teleport로 마이그레이션 하고 있고요. 이를 완료한 서버에는 기존 접근 방식을 차단했습니다. 아울러 사내에 ‘Teleport 이용 가이드’를 만들어 멤버들에게 변경 사항을 안내했고요. Teleport 도입 이후, 사내에서 긍정적인 피드백을 받았습니다. 사용자와 관리자 입장에서 ‘Teleport 도입은 결과적으로 성공적’이라는 반응이었는데요. 그 이유는 아래와 같습니다.

사용자 입장:

  • 접속 방법이 통일된 점
  • 각 서버의 Endpoint를 몰라도 되는 점
  • 추가 권한 요청이 쉬워진 점

관리자 입장:

  • 한 곳에서 멤버·권한을 관리할 수 있는 점
  • 인프라 자원을 한눈에 볼 수 있는 점
  • 작업 시간이 줄어든 점

맺음말

지금까지 Teleport 기능과 동작 방식, 활용 방법, 인포그랩의 도입 사례를 살펴봤습니다. 인포그랩에서는 앞으로 ‘완성형 플랫폼 구성’으로 서버를 증설할 때, Teleport에 등록을 자동화할 계획입니다. 최소 권한 유지, 서버 증설과 작업 수행 범위 변화에 따른 서버와 환경 설정에 어려움이 있다면 Teleport를 해결책으로 사용할 만합니다. Teleport 도입 여부가 고민되시면 인포그랩에 문의하세요. 인포그랩에서는 Teleport를 잘 활용하는 방법을 계속 연구하고 있는데요. 앞으로 그 내용을 여러분과 공유할 예정입니다.

인포그랩은 GitLab 및 DevOps에 대한 맞춤 기술 지원을 제공합니다. GitLab(Omnibus/Cloud Native Hybrid) 구축 관련한 지원이 필요하시면 문의하기 로 연락 주십시오.

참고자료

1.How Teleport Works

2.Get Started with Teleport

3.Teleport Authentication with Certificates

4.Teleport Authorization

5.Teleport Access Controls Reference

6.Fast, Secure, and Scalable, Identity-Native Infrastructure Access

6.한국정보통신기술협회 정보통신용어사전 '스푸핑' 설명

7.Cloud Flare 홈페이지 ‘경로상 공격자’ 설명

8.Akamai 홈페이지 ‘크리덴셜 스터핑’ 설명