인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
Teleport Terraform 제공자
Teleport Terraform 제공자를 사용하면 Terraform 사용자가 Terraform을 통해 Teleport를 구성할 수 있습니다.
이 섹션은 Teleport Terraform 제공자 참조입니다. 지원되는 모든 리소스와 그 필드를 나열합니다.
Tip
Terraform 제공자를 사용하려면 설치 가이드에서 시작해야 합니다. 작동하는 제공자를 얻으면 "IaC로 사용자 및 역할 관리하기" 가이드를 따르는 것을 권장합니다.
제공자는 Terraform 데이터 소스와 Terraform 리소스로 Teleport 리소스를 노출합니다. 데이터 소스는 Terraform이 Teleport에서 정보를 가져오는 데 사용되며, 리소스는 Teleport에서 리소스를 생성하는 데 사용됩니다.
예제 사용법
terraform {
required_providers {
teleport = {
source = "terraform.releases.teleport.dev/gravitational/teleport"
version = "~> 15.0"
}
}
}
provider "teleport" {
# 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" {
# Teleport Enterprise (관리되는) 테넌트 URL의 호스트:포트를 가리키도록 addr를 업데이트하십시오
addr = "mytenant.teleport.sh:443"
identity_file_path = "terraform-identity/identity"
}
연결 방법
이 섹션에서는 Terraform 제공자에게 자격 증명을 전달하는 다양한 방법을 나열합니다. 어떤 방법이 귀하의 사용 사례에 적합한지 확인할 수 있습니다 Teleport Terraform 제공자 설정 페이지에서
신원 파일로
이 연결 방법을 사용하면 신원 파일을 제공해야 합니다. 이 파일은 Terraform이 프록시 서비스(포트 443 또는 3080)와 인증 서비스(포트 3025)를 통해 연결하도록 허용합니다. 이것은 Terraform 제공자에게 자격 증명을 전달하는 권장 방법입니다.
신원 파일은 여러 가지 방법으로 얻을 수 있습니다:
tctl
을 사용하여 로컬에서 신원 파일 얻기
16.2 버전부터 tctl
및 로컬 자격 증명을 사용하여 임시 봇을 만들고 해당 신원을 셸의 환경 변수에 로드할 수 있습니다:
eval "$(tctl terraform env)"🔑 MFA가 필요한지 감지 중이것은 관리자 수준의 작업이며 완료하려면 MFA가 필요합니다보안 키를 누르십시오보안 키 누름 감지됨⚙️ 임시 봇 "tctl-terraform-env-82ab1a2e" 및 해당 토큰 생성 중🤖 임시 봇을 사용하여 인증서 확보 중🚀 인증서가 확보되었습니다. 이제 이 터미널에서 1시간0분0초 동안 Terraform을 사용할 수 있습니다.
자세한 내용은 "Terraform 제공자를 로컬에서 실행하기" 가이드를 참조하십시오.
tbot
를 통한 신원 파일 얻기
tbot
은 MachineID에 의존하여 단기 자격 증명을 얻고 자동으로 갱신합니다. 이러한 자격 증명은 유출하기 어려우며, 더 정확하게 누가 어떤 역할에 접근할 수 있는지 제어할 수 있습니다 (예: prod
환경을 대상으로 하는 GitHub Actions 파이프라인만 인증서를 얻도록 허용할 수 있습니다).
tbot
을 설정하고 Terraform이 그 신원을 사용하도록 하려면 Terraform Provider 가이드를 따라 하십시오.
tctl auth sign
을 통한 신원 파일 얻기
다음 명령어로 신원 파일을 얻을 수 있습니다.
tctl auth sign --user terraform --format file -o identity.pem
이 인증 방법은 다음과 같은 제한 사항이 있습니다:
- 이러한 자격 증명은 높은 권한을 가지며 장기간 사용할 수 있습니다. 이를 보호하고 갱신해야 합니다.
- 이 인증 방법은 MFA가
webauthn
으로 설정된 Teleport 클러스터에서는 작동하지 않습니다. 그런 클러스터에서는 Teleport가 모든 장기 인증서를 거부하고 관리 작업을 위한 추가 MFA 챌린지를 요구합니다.
토큰을 사용하여 (네이티브 MachineID)
16.2부터 Teleport Terraform 제공자는 네이티브 MachineID( tbot
없이)를 사용하여 Teleport 클러스터에 조인할 수 있습니다. Terraform Provider는 자신의 런타임(AWS, GCP, Kubernetes, CI/CD 시스템)을 사용하여 Teleport에 자신의 신원을 증명합니다.
제공자 구성에서 join_method
와 join_token
을 모두 설정하여 모든 위임 조인 방법을 사용할 수 있습니다.
이 설정에 대한 자세한 내용은 "CI 또는 클라우드에서 Teleport Terraform 제공자 실행" 가이드에 설명되어 있습니다.
키, 인증서 및 CA 인증서를 사용하여
이 연결 방법을 사용하면 TLS 키, TLS 인증서 및 Teleport Auth 서비스 TLS CA 인증서를 제공해야 합니다. 이는 다음 명령어로 얻을 수 있습니다:
tctl auth sign --user terraform --format=tls -o terraform.pem
이 인증 방법은 다음과 같은 제한 사항이 있습니다:
- 제공자는 인증서에 직접 연결할 수 있습니다(포트 3025). 대부분의 클러스터에서는 프록시만 공개적으로 노출됩니다.
- 이러한 자격 증명은 높은 권한을 가지며 장기간 사용할 수 있습니다. 이를 보호하고 갱신해야 합니다.
- 이 인증 방법은 MFA가
webauthn
으로 설정된 Teleport 클러스터에서는 작동하지 않습니다. 그런 클러스터에서는 Teleport가 모든 장기 인증서를 거부하고 관리 작업을 위한 추가 MFA 챌린지를 요구합니다.
스키마
선택 사항
addr
(문자열) Teleport 주소의 호스트:포트입니다. 이는 Teleport 프록시 서비스 주소(포트 443 또는 4080) 또는 Teleport Auth 서비스 주소(포트 3025)가 될 수 있습니다. 이 값은 환경 변수TF_TELEPORT_ADDR
로도 설정할 수 있습니다.audience_tag
(문자열)terraform
방법으로 네이티브 Machine ID 조인에 사용되는 선택적 청중 태그의 이름입니다. 이 값은 환경 변수TF_TELEPORT_JOIN_AUDIENCE_TAG
로도 설정할 수 있습니다.cert_base64
(문자열) Base64로 인코딩된 TLS 인증서입니다. 이 값은 환경 변수TF_TELEPORT_CERT_BASE64
로도 설정할 수 있습니다.cert_path
(문자열) Teleport 인증서 파일의 경로입니다. 이 값은 환경 변수TF_TELEPORT_CERT
로도 설정할 수 있습니다.dial_timeout_duration
(문자열) 서버에 연결할 때 타임아웃을 설정합니다. 이 값은 환경 변수TF_TELEPORT_DIAL_TIMEOUT_DURATION
로도 설정할 수 있습니다.identity_file
(문자열, 민감함) Teleport 신원 파일 내용입니다. 이 값은 환경 변수TF_TELEPORT_IDENTITY_FILE
로도 설정할 수 있습니다.identity_file_base64
(문자열, 민감함) Base64로 인코딩된 Teleport 신원 파일 내용입니다. 이 값은 환경 변수TF_TELEPORT_IDENTITY_FILE_BASE64
로도 설정할 수 있습니다.identity_file_path
(문자열) Teleport 신원 파일 경로입니다. 이 값은 환경 변수TF_TELEPORT_IDENTITY_FILE_PATH
로도 설정할 수 있습니다.join_method
(문자열) 네이티브 Terraform MachineID 지원을 활성화합니다. 설정 시 Terraform은 MachineID를 사용하여 안전하게 Teleport 클러스터에 조인하고 자격 증명을 얻습니다. 가능한 값에 대해서는 조인 방법 참조를 참조하세요. 위임된 조인 방법을 사용해야 합니다. 이 값은 환경 변수TF_TELEPORT_JOIN_METHOD
로도 설정할 수 있습니다.join_token
(문자열) 네이티브 MachineID 조인에 사용되는 토큰의 이름입니다. 이 값은 위임된 조인 방법에는 민감하지 않습니다. 이 값은 환경 변수TF_TELEPORT_JOIN_TOKEN
으로도 설정할 수 있습니다.key_base64
(문자열, 민감함) Base64로 인코딩된 TLS 인증 키입니다. 이 값은 환경 변수TF_TELEPORT_KEY_BASE64
로도 설정할 수 있습니다.key_path
(문자열) Teleport 인증 키 파일의 경로입니다. 이 값은 환경 변수TF_TELEPORT_KEY
로도 설정할 수 있습니다.profile_dir
(문자열) Teleport 프로필 경로입니다. 이 값은 환경 변수TF_TELEPORT_PROFILE_PATH
로도 설정할 수 있습니다.profile_name
(문자열) Teleport 프로필 이름입니다. 이 값은 환경 변수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
(문자열) Teleport 루트 CA의 경로입니다. 이 값은 환경 변수TF_TELEPORT_ROOT_CA
로도 설정할 수 있습니다.