Infograb logo
GCP에서 Teleport 실행하기

이 가이드는 고객에게 Google Cloud (GCP)에서 자가 호스팅된 Teleport 클러스터를 배포하는 방법에 대한 개요를 제공합니다. 이 가이드는 프로덕션 환경에서 Teleport를 설정하고 실행하는 방법에 대한 기본적인 소개를 제공합니다.

이 가이드는 다음과 같이 나뉘어 있습니다:

Teleport Enterprise Cloud가 이 설정을 자동으로 처리하므로, 귀하는 즉시 안전한 인프라 접근을 제공할 수 있습니다.

무료 체험으로 Teleport Enterprise Cloud를 시작하세요.

GCP Teleport 소개

이 가이드는 GCP에서 Teleport를 설정, 구성 및 실행하는 방법을 다룹니다.

고가용성 모드에서 Teleport를 실행하기 위해 다음 GCP 서비스가 필요합니다:

기타 필요 사항:

선택 사항:

  • 관리 도구: Cloud Deployment Manager
  • 로깅: Stackdriver

고가용성 모드에서 Teleport를 설정할 것을 권장합니다. 고가용성 모드에서는 Firestore가 클러스터 상태 및 감사 로그에 사용되며, Google Cloud Storage가 세션 녹음을 위해 사용됩니다.

이 가이드 전반에 걸쳐, 다음 자리 표시자 변수를 사용합니다. 귀하의 환경에 적합한 값으로 바꾸십시오.

이름예시설명
Example_GCP_PROJECTteleport-project귀하의 GCP 프로젝트 ID
Example_GCP_CREDENTIALS/var/lib/teleport/google.json서비스 계정 자격 증명 경로
Example_FIRESTORE_CLUSTER_STATEteleport-cluster-stateTeleport 클러스터 상태를 위한 Firestore 컬렉션 이름
Example_FIRESTORE_AUDIT_LOGSteleport-audit-logsTeleport 감사 로그를 위한 Firestore 컬렉션 이름
Example_BUCKET_NAMEteleport-session-recordings세션 녹음 저장을 위한 GCS 버킷 이름

Compute Engine: VM 인스턴스 및 인스턴스 그룹

생산 환경에서는 n1-standard-2 인스턴스 사용을 권장합니다. Teleport의 Proxy 서버와 Auth 서버는 각기 인스턴스 그룹을 사용하여 분리하는 것이 좋습니다.

Compute Engine: 헬스 체크

GCP는 헬스 체크에 크게 의존합니다, 이는 인스턴스 그룹에 새로운 인스턴스를 추가할 때 유용합니다.

Teleport에서 헬스 체크를 활성화하려면 teleport start --diag-addr=0.0.0.0:3000으로 시작하고 자세한 정보는 관리자 가이드: 문제 해결을 참조하세요.

Storage: Cloud Firestore

Firestore 백엔드는 실시간 업데이트를 사용하여 개별 Auth 서버를 동기화하며, 네이티브 모드로 구성된 Firestore가 필요합니다.

Teleport를 구성하여 Firestore에 감사 이벤트를 저장하려면, Auth 서버의 구성 파일의 teleport 섹션에 다음을 추가하세요 (기본적으로 /etc/teleport.yaml):

teleport:
  storage:
    type: firestore
    collection_name: Example_FIRESTORE_CLUSTER_STATE
    project_id: Example_GCP_PROJECT
    credentials_path: Example_GCP_CREDENTIALS
    audit_events_uri: [ 'firestore://Example_FIRESTORE_AUDIT_LOGS?projectID=Example_GCP_PROJECT&credentialsPath=Example_GCP_CREDENTIALS' ]
테이블 이름

Example_FIRESTORE_CLUSTER_STATEExample_FIRESTORE_AUDIT_LOGS다른 Firestore 컬렉션을 가리키도록 주의해야 합니다. 각 스키마는 서로 다르며, 두 유형의 데이터에 대해 동일한 컬렉션을 사용하면 오류가 발생합니다.

Storage: Google Cloud Storage

Google Cloud Storage 백엔드는 Teleport 세션 녹음에 사용됩니다. Teleport는 시작할 때 버킷이 존재하지 않을 경우 자동으로 생성하려고 시도합니다. 원하는 경우, 사전에 버킷을 생성할 수 있습니다. 이 경우, Teleport는 버킷을 생성할 권한이 필요하지 않습니다.

버킷을 생성할 때, Dual-region으로 설정하고 Standard 저장소 클래스를 사용하는 것을 권장합니다. Google 관리 키를 사용하여 Uniform 액세스 제어를 제공합니다.

audit_sessions_uri를 설정할 때 gs:// 접두사를 사용하세요.

storage:
    ...
    audit_sessions_uri: 'gs://Example_BUCKET_NAME?projectID=Example_GCP_PROJECT&credentialsPath=Example_GCP_CREDENTIALS'
    ...

Network Services: 로드 밸런싱

프록시와 SSH 트래픽에 로드 밸런싱이 필요합니다. Teleport는 SSH 및 웹 트래픽에 대해 사용자 지정 포트를 요구하므로 TCP 로드 밸런싱을 사용하세요.

Network Services: Cloud DNS

Cloud DNS는 Teleport Proxy의 공개 URL 설정에 사용됩니다.

Access: 서비스 계정

Teleport Auth 서버는 Firestore 및 Google Cloud Storage에 읽기 및 쓰기가 필요합니다. 이럴 경우, 정확한 권한을 가진 서비스 계정이 필요합니다.

Teleport가 GCS 버킷을 만들 수 있도록 하려면, storage.buckets.create 권한을 허용하는 역할을 생성해야 합니다. Teleport 설치 전에 버킷을 생성하기로 선택한 경우 이 단계를 건너뛸 수 있습니다.

이 역할을 생성하려면 YAML 파일에 역할을 정의하는 것으로 시작하십시오:

# teleport_auth_role.yaml
title: teleport_auth_role
description: 'GCP에 대한 Teleport 권한'
stage: ALPHA
includedPermissions:
# Teleport가 세션을 위한 GCS 버킷을 생성할 수 있도록 허용합니다.
# 존재하지 않는 경우
- storage.buckets.create

이 파일을 사용하여 역할을 생성합니다:

gcloud iam roles create teleport_auth_role \ --project Example_GCP_PROJECT \ --file teleport_auth_role.yaml \ --format yaml

출력의 name 필드는 사용자 지정 역할의 완전한 자격 이름임에 유의해야 하며, 앞 단계에서 사용해야 합니다.

export IAM_ROLE=<role name output from above>

이미 Teleport Auth 서버에 대해 GCP 서비스 계정이 없다면, 다음 명령어로 생성할 수 있으며, 그렇지 않다면 기존 서비스 계정을 사용하십시오.

gcloud iam service-accounts create teleport-auth-server \ --description="Teleport Auth Server를 위한 서비스 계정" \ --display-name="Teleport Auth 서버" \ --format=yaml

출력의 email 필드는 서비스 계정의 식별자로 사용해야 합니다.

export SERVICE_ACCOUNT=<email output from above command>

마지막으로, 필요한 IAM 역할을 새로 생성된 서비스 계정에 바인딩합니다.

우리 사용자 정의 IAM 역할은 Teleport가 세션 녹음을 위한 GCS

버킷을 만들 수 있도록 허용합니다. 존재하지 않을 경우.

gcloud projects add-iam-policy-binding Example_GCP_PROJECT \ --member=serviceAccount:$SERVICE_ACCOUNT \ --role=$IAM_ROLE

datastore.owner는 필요한 Firestore 접근을 부여합니다.

gcloud projects add-iam-policy-binding Example_GCP_PROJECT \ --member=serviceAccount:$SERVICE_ACCOUNT \ --role=roles/datastore.owner

storage.objectAdmin은 저장소 객체를 읽고/쓰고/삭제하는 데 필요합니다.

gcloud projects add-iam-policy-binding Example_GCP_PROJECT \ --member=serviceAccount:$SERVICE_ACCOUNT \ --role=roles/storage.objectAdmin

JSON 서비스 키 다운로드

이 서비스 계정의 자격 증명은 JSON 형식으로 내보내야 하며, 이 가이드 나머지 부분을 통해 Teleport에 제공되어야 합니다.

GCP 빠른 시작

1. 리소스 생성

리소스를 생성하는 것부터 시작하는 것을 권장합니다. 이것들을 Cloud Deployment Manager 또는 Terraform과 같은 인프라 자동화 도구로 생성할 것을 강력히 권장합니다.

2. Teleport 설치 및 구성

설치 페이지에서 설치 지침을 따르세요.

아래 단계에 따라 Teleport를 구성하는 것을 권장합니다:

1. Teleport Auth 서버 구성
아래 예시 teleport.yaml을 사용하고, systemd를 통해 시작하십시오. DEB/RPM 설치 시 자동으로 systemd 구성이 포함됩니다.

#
# Auth 서버를 위한 Teleport 구성 파일의 샘플인 teleport.yaml
#
teleport:
  nodename: teleport-auth-server
  data_dir: /var/lib/teleport
  pid_file: /run/teleport.pid
  connection_limits:
    max_connections: 15000
    max_users: 250
  log:
    output: stderr
    severity: DEBUG
  storage:
    type: firestore
    collection_name: Example_FIRESTORE_CLUSTER_STATE
    # 자격 증명: Firestore 및 Google Storage에 사용되는 Google 서비스 계정 파일의 경로.
    credentials_path: Example_GCP_CREDENTIALS
    project_id: Example_GCP_PROJECT
    audit_events_uri: 'firestore://Example_FIRESTORE_AUDIT_LOGS?projectID=Example_GCP_PROJECT&credentialsPath=Example_GCP_CREDENTIALS'
    audit_sessions_uri: 'gs://Example_BUCKET_NAME?projectID=Example_GCP_PROJECT&credentialsPath=Example_GCP_CREDENTIALS'
auth_service:
  enabled: true
  tokens:
    - "proxy:abcd123-insecure-do-not-use-this"
    - "node:efgh456-insecure-do-not-use-this"
proxy_service:
  enabled: false
ssh_service:
  enabled: false

1. Teleport Auth 서버 구성
아래 예시 teleport.yaml을 사용하고, systemd를 통해 시작하십시오. DEB/RPM 설치 시 자동으로 systemd 구성이 포함됩니다.

#
# Auth 서버를 위한 Teleport 구성 파일의 샘플인 teleport.yaml
#
teleport:
  nodename: teleport-auth-server
  data_dir: /var/lib/teleport
  pid_file: /run/teleport.pid
  connection_limits:
    max_connections: 15000
    max_users: 250
  log:
    output: stderr
    severity: DEBUG
  storage:
    type: firestore
    collection_name: Example_FIRESTORE_CLUSTER_STATE
    # 자격 증명: Firestore 및 Google Storage에 사용되는 Google 서비스 계정 파일의 경로.
    credentials_path: Example_GCP_CREDENTIALS
    project_id: Example_GCP_PROJECT
    audit_events_uri: 'firestore://Example_FIRESTORE_AUDIT_LOGS?projectID=Example_GCP_PROJECT&credentialsPath=Example_GCP_CREDENTIALS'
    audit_sessions_uri: 'gs://Example_BUCKET_NAME?projectID=Example_GCP_PROJECT&credentialsPath=Example_GCP_CREDENTIALS'
auth_service:
  enabled: true
  license_file: /var/lib/teleport/license.pem
  tokens:
    - "proxy:abcd123-insecure-do-not-use-this"
    - "node:efgh456-insecure-do-not-use-this"
proxy_service:
  enabled: false
ssh_service:
  enabled: false

Teleport 인증 서비스는 Teleport Enterprise 계정을 인증하기 위해 라이선스 파일을 읽습니다.

라이선스 파일을 얻으려면 Teleport 계정 대시보드로 이동하여 로그인하십시오.
teleport.sh에서 시작하고 Teleport 계정 이름(예: my-company)을 입력하세요.
로그인 후 "GENERATE LICENSE KEY" 버튼이 표시되며, 이 버튼을 클릭하면 새로운 라이선스 파일이 생성되고 이를 다운로드할 수 있습니다.

Auth 서버의 라이선스 파일을 경로 /var/lib/teleport/license.pem에 저장하세요.

2. 프록시 설정

다음 구성 파일을 /etc/teleport.yaml로 Proxy 서버에 저장하세요:

# 모든 트래픽을 TCP 포트 443에서 다중화 활성화
version: v3
teleport:
  auth_token: abcd123-insecure-do-not-use-this
  # 고가용성 모드 설정 시, Auth 서버를 가리키는 TCP 로드 밸런서를 사용하는 것을 권장합니다.
  auth_server: auth.example.com:3025
# 프록시 서비스 활성화, Auth 및 SSH 비활성화
ssh_service:
  enabled: false
auth_service:
  enabled: false
proxy_service:
  enabled: true
  web_listen_addr: 0.0.0.0:443
  public_addr: teleport.example.com:443
  # teleport.example.com에 대한 ACME 인증서를 자동으로 획득 (단일 프록시에 대해 작동)
  acme:
    enabled: true
    email: example@email.com

3. Teleport 노드 설정

다음 구성 파일을 노드의 /etc/teleport.yaml로 저장하세요:

version: v3
teleport:
  auth_token: efgh456-insecure-do-not-use-this
  # Teleport 에이전트는 Proxy 서비스의 
  # 공개 주소를 통해 클러스터에 가입할 수 있습니다. 이는 프록시 
  # 서비스와 에이전트 간의 역터널을 설정하며 모든 트래픽에 사용됩니다.
  proxy_server: teleport.example.com:443
# SSH 서비스 활성화 및 Auth 및 프록시 서비스 비활성화
ssh_service:
  enabled: true
auth_service:
  enabled: false
proxy_service:
  enabled: false

4. 사용자 추가

로컬 사용자 가이드를 따르거나 Google Workspace와 통합하여 SSO 접근을 제공합니다.

Teleport 원문 보기