Infograb logo
텔레포트 테라폼 프로바이더

텔레포트 테라폼 프로바이더는 테라폼 사용자가 테라폼을 통해 텔레포트를 구성할 수 있도록 합니다.

이 섹션은 텔레포트 테라폼 프로바이더 참조입니다. 이곳에서는 지원되는 모든 리소스와 해당 필드를 나열합니다.

Tip

테라폼 프로바이더를 시작하려면 설치 가이드에서 시작해야 합니다. 작동하는 프로바이더를 얻은 후에는 "IaC로 사용자 및 역할 관리하기" 가이드를 따르는 것이 좋습니다.

프로바이더는 텔레포트 리소스를 테라폼 데이터 소스와 테라폼 리소스로 노출합니다. 데이터 소스는 테라폼이 텔레포트에서 정보를 가져오는 데 사용되며, 리소스는 텔레포트 내에서 리소스를 생성하는 데 사용됩니다.

사용 예

terraform {
  required_providers {
    teleport = {
      source  = "terraform.releases.teleport.dev/gravitational/teleport"
      version = "~> 15.0"
    }
  }
}

provider "teleport" {
  # 텔레포트 Auth/Proxy를 가리키도록 addr 업데이트
  # addr              = "auth.example.com:3025"
  addr               = "proxy.example.com:443"
  identity_file_path = "terraform-identity/identity"
}
terraform {
  required_providers {
    teleport = {
      source  = "terraform.releases.teleport.dev/gravitational/teleport"
      version = "~> 15.0"
    }
  }
}

provider "teleport" {
  # 텔레포트 엔터프라이즈(관리형) 테넌트 URL의 host:port를 가리키도록 addr 업데이트
  addr               = "mytenant.teleport.sh:443"
  identity_file_path = "terraform-identity/identity"
}

연결 방법

신원 파일을 사용하여

이 연결 방법을 사용하려면 신원 파일을 제공해야 합니다. 이 파일은 테라폼이 프록시 서비스(포트 443 또는 3080)와 인증 서비스(포트 3025)를 통해 연결할 수 있도록 합니다. 자격 증명을 테라폼 프로바이더에 전달하는 권장 방법입니다.

신원 파일은 여러 방법으로 얻을 수 있습니다:

tbot을 통한 신원 파일 얻기

Tbot은 MachineID를 사용하여 단기 자격 증명을 획득하고 자동으로 갱신합니다. 이러한 자격 증명은 탈취하기가 어려우며, 사용자가 각 역할에 대한 접근 권한을 더 정확하게 제어할 수 있습니다 (예: prod 환경을 대상으로 하는 GitHub Actions 파이프라인만 인증서를 받도록 허용할 수 있습니다).

이 설정을 달성하기 위해 테라폼 프로바이더 가이드를 따를 수 있습니다.

tctl auth sign을 통한 신원 파일 얻기

다음 명령어로 신원 파일을 얻을 수 있습니다.

tctl auth sign --user terraform --format file -o identity.pem

이 인증 방법에는 다음과 같은 제한 사항이 있습니다:

  • 이러한 자격 증명은 높은 권한을 가진 장기 자격 증명으로, 보호 및 회전이 필요합니다.
  • 이 인증 방법은 MFA가 webauthn으로 설정된 텔레포트 클러스터에서 작동하지 않습니다. 그러한 클러스터에서는 텔레포트가 모든 장기 인증서를 거부하고 관리 작업에 대한 추가 MFA 챌린지를 요구합니다.

키, 인증서 및 CA 인증서를 통한 연결

이 연결 방법을 사용하려면 TLS 키, TLS 인증서 및 텔레포트 인증 서비스 TLS CA 인증서를 제공해야 합니다. 다음 명령어로 얻을 수 있습니다:

tctl auth sign --user terraform --format=tls -o terraform.pem

이 인증 방법에는 다음과 같은 제한 사항이 있습니다:

  • 프로바이더는 Auth에만 직접 연결할 수 있습니다(포트 3025). 대부분의 클러스터에서는 프록시만 공개적으로 노출됩니다.
  • 이러한 자격 증명은 높은 권한을 가진 장기 자격 증명으로, 보호 및 회전이 필요합니다.
  • 이 인증 방법은 MFA가 webauthn으로 설정된 텔레포트 클러스터에서 작동하지 않습니다. 그러한 클러스터에서는 텔레포트가 모든 장기 인증서를 거부하고 관리 작업에 대한 추가 MFA 챌린지를 요구합니다.

스키마

선택 사항

  • addr (문자열) 텔레포트 주소의 host:port. 이는 텔레포트 프록시 서비스 주소(포트 443 또는 4080) 또는 텔레포트 인증 서비스 주소(포트 3025)가 될 수 있습니다. 이는 환경 변수 TF_TELEPORT_ADDR로 설정할 수도 있습니다.
  • cert_base64 (문자열) Base64 인코딩된 TLS 인증서입니다. 이는 환경 변수 TF_TELEPORT_CERT_BASE64로 설정할 수도 있습니다.
  • cert_path (문자열) 텔레포트 인증서 파일의 경로입니다. 이는 환경 변수 TF_TELEPORT_CERT로 설정할 수도 있습니다.
  • dial_timeout_duration (문자열) 서버에 연결할 때의 시간 초과를 설정합니다. 이는 환경 변수 TF_TELEPORT_DIAL_TIMEOUT_DURATION으로 설정할 수도 있습니다.
  • identity_file (문자열, 민감) 텔레포트 신원 파일 내용입니다. 이는 환경 변수 TF_TELEPORT_IDENTITY_FILE로 설정할 수도 있습니다.
  • identity_file_base64 (문자열, 민감) Base64 인코딩된 텔레포트 신원 파일 내용입니다. 이는 환경 변수 TF_TELEPORT_IDENTITY_FILE_BASE64로 설정할 수도 있습니다.
  • identity_file_path (문자열) 텔레포트 신원 파일 경로입니다. 이는 환경 변수 TF_TELEPORT_IDENTITY_FILE_PATH로 설정할 수도 있습니다.
  • join_method (문자열) 네이티브 테라폼 MachineID 지원을 활성화합니다. 설정 시 테라폼은 MachineID를 사용하여 텔레포트 클러스터에 안전하게 조인하고 자격 증명을 얻습니다. 가능한 값은 조인 방법 참조에서 확인할 수 있으며, 위임된 조인 방법 을 사용해야 합니다. 이는 환경 변수 TF_TELEPORT_JOIN_METHOD로 설정할 수도 있습니다.
  • join_token (문자열) 네이티브 MachineID 조인에 사용되는 토큰의 이름입니다. 이 값은 위임된 조인 방법 에 대해 민감하지 않습니다. 이는 환경 변수 TF_TELEPORT_JOIN_TOKEN으로 설정할 수도 있습니다.
  • key_base64 (문자열, 민감) Base64 인코딩된 TLS 인증 키입니다. 이는 환경 변수 TF_TELEPORT_KEY_BASE64로 설정할 수도 있습니다.
  • key_path (문자열) 텔레포트 인증 키 파일의 경로입니다. 이는 환경 변수 TF_TELEPORT_KEY로 설정할 수도 있습니다.
  • profile_dir (문자열) 텔레포트 프로필 경로입니다. 이는 환경 변수 TF_TELEPORT_PROFILE_PATH로 설정할 수도 있습니다.
  • profile_name (문자열) 텔레포트 프로필 이름입니다. 이는 환경 변수 TF_TELEPORT_PROFILE_NAME으로 설정할 수도 있습니다.
  • retry_base_duration (문자열) API가 'not found'를 반환할 때의 재시도 알고리즘: 재시도 간의 기본 기간 (https://pkg.go.dev/time#ParseDuration). 이는 환경 변수 TF_TELEPORT_RETRY_BASE_DURATION으로 설정할 수도 있습니다.
  • retry_cap_duration (문자열) API가 'not found'를 반환할 때의 재시도 알고리즘: 재시도 간의 최대 기간 (https://pkg.go.dev/time#ParseDuration). 이는 환경 변수 TF_TELEPORT_RETRY_CAP_DURATION으로 설정할 수도 있습니다.
  • retry_max_tries (문자열) API가 'not found'를 반환할 때의 재시도 알고리즘: 최대 시도 횟수입니다. 이는 환경 변수 TF_TELEPORT_RETRY_MAX_TRIES으로 설정할 수도 있습니다.
  • root_ca_base64 (문자열) Base64 인코딩된 루트 CA입니다. 이는 환경 변수 TF_TELEPORT_CA_BASE64으로 설정할 수도 있습니다.
  • root_ca_path (문자열) 텔레포트 루트 CA의 경로입니다. 이는 환경 변수 TF_TELEPORT_ROOT_CA로 설정할 수도 있습니다.
Teleport 원문 보기