Infograb logo
백업 및 복원

이 가이드는 백업해야 하는 Teleport 배포의 구성 요소를 설명하고 백업 수행을 위한 권장 접근 방식을 제시합니다.

Tip

Teleport Enterprise Cloud는 이 설정을 자동으로 처리하므로 즉시 인프라에 대한 안전한 액세스를 제공할 수 있습니다.

Teleport Enterprise Cloud의 무료 평가판으로 시작하세요.

백업해야 할 내용

Teleport 서비스

Teleport의 Proxy 서비스와 노드는 상태 비저장(stateless)입니다. 이러한 구성 요소는 오직 teleport.yaml 만 백업하면 됩니다.

Auth 서비스는 Teleport의 두뇌이며, 백엔드에 따라 정기적으로 백업해야 합니다.

예를 들어, DynamoDB가 있는 AWS에서 실행되는 Teleport 클러스터는 다음 데이터를 백업해야 합니다:

항목위치 (예: AWS 고객)
로컬 사용자 (SSO 아님)DynamoDB
인증 기관DynamoDB
신뢰할 수 있는 클러스터DynamoDB
커넥터: SSODynamoDB / 파일 시스템
RBACDynamoDB / 파일 시스템
teleport.yaml파일 시스템
teleport.service파일 시스템
license.pem파일 시스템
TLS 키/인증서파일 시스템 / AWS Certificate Manager
감사 로그DynamoDB
세션 녹화S3

이 고객의 경우, DynamoDB 백업을 위해 AWS 모범 사례를 사용할 것을 권장합니다. DynamoDB가 Teleport 감사 로그에 사용되는 경우, 기록된 이벤트는 TTL이 1년입니다.

백엔드권장 백업 전략
로컬 파일 시스템/var/lib/teleport/storage 디렉터리 및 tctl get all --with-secrets 출력 백업하기.
DynamoDBAWS의 백업 및 복원 가이드라인을 따르세요
etcdetcd의 재해 복구 가이드라인을 따르세요
FirestoreGCP의 자동 백업 가이드라인을 따르세요

Teleport Enterprise Cloud는 모든 Auth 서비스 및 Proxy 서비스 백업을 관리합니다.

Teleport 노드는 상태 비저장이지만, 구성 파일을 복원할 수 있는지 확인해야 합니다.

Teleport 리소스

Teleport는 역할, 신뢰할 수 있는 클러스터, 로컬 사용자 및 인증 커넥터를 위한 YAML 리소스를 사용합니다. 이들은 tctl 또는 웹 UI를 통해 생성될 수 있습니다.

중단 사태에 대비하여 동적 리소스 구성을 백업하여 복원할 수 있도록 해야 합니다.

권장 백업 관행

대규모로 Teleport를 실행하는 경우, 팀은 Teleport를 복원할 수 있는 자동화된 방법을 가져야 합니다. 전반적으로, 다음과 같은 접근 방식을 권장합니다:

  • 백엔드를 지속하고 백업합니다.
  • Auth 서비스 인스턴스 간에 해당 백엔드를 공유합니다.
  • 동적 리소스 구성을 개별 파일로 git 리포지토리에 저장합니다.
  • CI 시스템이 git 리포지토리에서 tctl create -f *.yaml 을 실행하도록 합니다. -f 플래그는 tctl create 가 리소스가 이미 존재할 경우 오류를 반환하지 않도록 지시하므로 이 명령은 정기적으로 실행할 수 있습니다.
  • 동적 리소스 구성을 개별 파일로 git 리포지토리에 저장합니다.
  • CI 시스템이 git 리포지토리에서 tctl create -f *.yaml 을 실행하도록 합니다. -f 플래그는 tctl create 가 리소스가 이미 존재할 경우 오류를 반환하지 않도록 지시하므로 이 명령은 정기적으로 실행할 수 있습니다.

백엔드 마이그레이션

Teleport에서 아래 명령어를 사용하여 리소스 컬렉션을 내보낼 수 있습니다. 이 기능은 한 백엔드에서 다른 백엔드로 마이그레이션하는 데 도움이 됩니다.

tctl get all --with-secrets 를 사용하면 아래 항목을 가져옵니다:

  • 사용자
  • 인증 기관
  • 신뢰된 클러스터
  • 커넥터:
    • GitHub
    • SAML
    • OIDC
  • 역할

백엔드를 마이그레이션할 때는 Auth Service의 data_dir/storage 를 직접 백업해야 합니다.

클러스터 백업 및 복원 예제

로컬 머신에서 tctl을 사용하기 위해 tsh로 클러스터에 로그인합니다.

"tsh login"을 실행하지 않고도 Auth Service 호스트에서 tctl을 실행할 수 있습니다.

tsh login --proxy=teleport.example.com --user=myuser

이전 클러스터에서 동적 구성 상태 내보내기

tctl get all --with-secrets > state.yaml

초기화되지 않은 새로운 백엔드를 준비합니다 (이전 구성 파일에서 비기본 구성 값을 포팅해야 합니다)

mkdir fresh && cat > fresh.yaml << EOFteleport: data_dir: freshEOF

새 서버 부트스트랩 (먼저 오래된 서버를 종료하세요!)

sudo teleport start --config fresh.yaml --bootstrap state.yaml

다른 터미널에서 상태가 올바르게 전이되었는지 확인합니다

tctl --config fresh.yaml get all

<여기에서 당신의 상태>

--bootstrap 플래그는 Auth Service가 첫 시작 시 백엔드 초기화를 수행할 때를 제외하고는 효과가 없으므로, 관리되는/고가용성 컨텍스트에서 사용하기에 안전합니다.

제한사항

--bootstrap 플래그는 신뢰된 클러스터 핸드셰이크를 다시 트리거하지 않으므로, 신뢰된 클러스터 리소스는 수동으로 다시 생성해야 합니다.

기존 클러스터의 구성 파일을 수정하는 것과 관련된 모든 제한 사항은 이전 클러스터의 상태에서 부트스트랩된 새로운 클러스터에도 적용됩니다:

  • 클러스터 이름을 변경하면 CA가 손상됩니다. 이것은 감지되며 Teleport는 시작을 거부합니다.
  • 일부 사용자 인증 메커니즘(예: WebAuthn)은 웹 UI의 공용 엔드포인트가 동일하게 유지되어야 합니다. Teleport에서는 이것을 감지할 수 없으므로 주의해야 합니다!
  • 초대 토큰이 Auth Service의 구성 파일에 정의된 모든 노드는 자동으로 조인할 수 있지만, 동적으로 추가된 노드는 다시 초대되어야 합니다.

Teleport에서 아래 명령어를 사용하여 리소스 컬렉션을 내보낼 수 있습니다. 이 기능은 한 백엔드에서 다른 백엔드로 마이그레이션하는 데 도움이 됩니다.

tctl get all --with-secrets 를 사용하면 아래 항목을 가져옵니다:

  • 사용자
  • 인증 기관
  • 신뢰된 클러스터
  • GitHub 커넥터
  • 역할

백엔드를 마이그레이션할 때는 Auth Service의 data_dir/storage 를 직접 백업해야 합니다.

클러스터 백업 및 복원 예제

로컬 머신에서 tctl을 사용하기 위해 tsh로 클러스터에 로그인합니다.

"tsh login"을 실행하지 않고도 Auth Service 호스트에서 tctl을 실행할 수 있습니다.

tsh login --user=myuser --proxy=teleport.example.com

이전 클러스터에서 동적 구성 상태 내보내기

tctl get all --with-secrets > state.yaml

초기화되지 않은 새로운 백엔드를 준비합니다 (이전 구성 파일에서 비기본 구성 값을 포팅해야 합니다)

mkdir fresh && cat > fresh.yaml << EOFteleport: data_dir: freshEOF

새 서버 부트스트랩 (먼저 오래된 서버를 종료하세요!)

sudo teleport start --config fresh.yaml --bootstrap state.yaml

다른 터미널에서 상태가 올바르게 전이되었는지 확인합니다

tctl --config fresh.yaml get all

<여기에서 당신의 상태>

--bootstrap 플래그는 Auth Service가 첫 시작 시 백엔드 초기화를 수행할 때를 제외하고는 효과가 없으므로, 관리되는/고가용성 컨텍스트에서 사용하기에 안전합니다.

제한 사항

--bootstrap 플래그는 신뢰 클러스터 핸드쉐이크를 다시 트리거하지 않으므로 신뢰 클러스터 리소스는 수동으로 다시 생성해야 합니다.

기존 클러스터의 상태에서 부트스트랩되는 새 클러스터에도 기존 클러스터의 구성 파일을 수정하는 것과 관련된 모든 제한 사항이 적용됩니다:

  • 클러스터 이름을 변경하면 CA가 손상됩니다. 이는 감지되며 Teleport는 시작을 거부합니다.
  • 일부 사용자 인증 메커니즘(예: WebAuthn)은 웹 UI의 공개 엔드포인트가 동일해야 합니다. 이는 Teleport에 의해 감지되지 않으므로 주의하십시오!
  • 인증 서비스의 구성 파일에 초대 토큰이 정의된 노드는 자동으로 조인할 수 있지만, 동적으로 추가된 노드는 다시 초대받아야 합니다.

Teleport Enterprise Cloud에서는 백엔드 데이터가 자동으로 관리됩니다.

구성 리소스를 셀프 호스팅된 Teleport 클러스터로 마이그레이션하려면, 구성 리소스를 git 리포지토리에 저장하고 각 리소스에 대해 정기적으로 tctl create -f 를 실행하는 권장 백업 관행을 따르십시오.

이렇게 하면 저장소 백엔드에 관계없이 구성 리소스를 최신 상태로 유지할 수 있습니다.

Teleport 원문 보기