텔레포트 테라폼 프로바이더는 테라폼 사용자가 테라폼을 통해 텔레포트를 구성할 수 있도록 합니다.
이 섹션은 텔레포트 테라폼 프로바이더 참조입니다. 이곳에서는 지원되는 모든 리소스와 해당 필드를 나열합니다.
테라폼 프로바이더를 시작하려면 설치 가이드에서 시작해야 합니다. 작동하는 프로바이더를 얻은 후에는 "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
로 설정할 수도 있습니다.