Teleport Terraform 프로바이더 참조
Teleport Terraform 프로바이더는 Terraform 사용자가 Terraform에서 Teleport를 구성할 수 있게 합니다. 이 섹션은 Teleport Terraform 프로바이더 참조입니다. Terraform 프로바이더를 시작하려면 설치 가이드로 시작해야 합니다.
Teleport Terraform 프로바이더는 Terraform 사용자가 Terraform에서 Teleport를 구성할 수 있게 합니다.
이 섹션은 Teleport Terraform 프로바이더 참조입니다. 지원되는 모든 리소스와 해당 필드를 나열합니다.
Terraform 프로바이더를 시작하려면 설치 가이드로 시작해야 합니다. 작동하는 프로바이더를 얻으면 "IaC로 사용자 및 역할 관리" 가이드를 따르는 것을 권장합니다.
프로바이더는 Teleport 리소스를 Terraform 데이터 소스와 Terraform 리소스로 노출합니다. 데이터 소스는 Terraform이 Teleport에서 정보를 가져오는 데 사용되며, 리소스는 Teleport에 리소스를 생성하는 데 사용됩니다.
사용 예시#
terraform {
required_providers {
teleport = {
source = "terraform.releases.teleport.dev/gravitational/teleport"
version = "~> (=teleport.major_version=).0"
}
}
}
provider "teleport" {
# Update addr to point to Teleport Auth/Proxy
# 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 = "~> (=cloud.major_version=).0"
}
}
}
provider "teleport" {
# Update addr to point to your Teleport Enterprise (managed) tenant URL's host:port
addr = "mytenant.teleport.sh:443"
identity_file_path = "terraform-identity/identity"
}
연결 방법#
이 섹션은 Terraform 프로바이더에 자격 증명을 전달하는 다양한 방법을 나열합니다. Teleport Terraform 프로바이더 설정 페이지에서 사용 사례에 맞는 방법을 찾을 수 있습니다.
ID 파일 사용#
이 연결 방법을 사용하면 ID 파일을 제공해야 합니다. 이 파일을 통해 Terraform은 Proxy Service(포트 443 또는 3080)와 Auth Service(포트 3025) 모두를 통해 연결할 수 있습니다. 이것이 Terraform 프로바이더에 자격 증명을 전달하는 권장 방법입니다.
ID 파일은 여러 가지 방법으로 얻을 수 있습니다:
tctl로 로컬에서 ID 파일 얻기#
16.2부터 tctl과 로컬 자격 증명을 사용하여 임시 봇을 생성하고 셸의 환경 변수에 해당 ID를 로드할 수 있습니다:
$ eval "$(tctl terraform env)"
🔑 Detecting if MFA is required
This is an admin-level action and requires MFA to complete
Tap any security key
Detected security key tap
⚙️ Creating temporary bot "tctl-terraform-env-82ab1a2e" and its token
🤖 Using the temporary bot to obtain certificates
🚀 Certificates obtained, you can now use Terraform in this terminal for 1h0m0s
자세한 내용은 "Terraform 프로바이더 로컬 실행" 가이드에서 찾을 수 있습니다.
tbot으로 ID 파일 얻기#
tbot은 머신 및 워크로드 아이덴티티를 사용하여 단기 자격 증명을 얻고 자동으로 갱신합니다. 이러한 자격 증명은 탈취하기 어렵고, 누가 어떤 역할에 대한 액세스 권한을 갖는지 더 정밀하게 제어할 수 있습니다(예: prod 환경을 대상으로 하는 GitHub Actions 파이프라인만 인증서를 얻을 수 있도록 허용).
Terraform이 해당 ID를 사용하도록 tbot을 설정하려면 Terraform 프로바이더 가이드를 따르세요.
tctl auth sign으로 ID 파일 얻기#
다음 명령으로 ID 파일을 얻을 수 있습니다:
$ tctl auth sign --user terraform --format file -o identity.pem
이 인증 방법에는 다음과 같은 제한 사항이 있습니다:
- 이러한 자격 증명은 고권한이며 장기적입니다. 보호되고 교체되어야 합니다.
- 이 인증 방법은 MFA가
webauthn으로 설정된 Teleport 클러스터에 대해 작동하지 않습니다. 이러한 클러스터에서 Teleport는 장기 인증서를 거부하고 관리 작업에 추가 MFA 챌린지를 요구합니다.
토큰 사용(네이티브 머신 및 워크로드 아이덴티티)#
16.2부터 Teleport Terraform 프로바이더는 네이티브로 머신 및 워크로드 아이덴티티(tbot 없이)를 사용하여 Teleport 클러스터에 참여할 수 있습니다. Terraform 프로바이더는 런타임(AWS, GCP, Kubernetes, CI/CD 시스템)에 의존하여 Teleport에 자신의 ID를 증명합니다.
공급자 구성에서 join_method와 join_token을 모두 설정하여 위임 조인 메서드를 사용할 수 있습니다.
이 설정은 "CI 또는 클라우드에서 Teleport Terraform 프로바이더 실행" 가이드에서 더 자세히 설명됩니다.
키, 인증서 및 CA 인증서 사용#
이 연결 방법을 사용하면 TLS 키, TLS 인증서 및 Teleport Auth Service TLS CA 인증서를 제공해야 합니다. 다음 명령으로 얻을 수 있습니다:
$ tctl auth sign --user terraform --format=tls -o terraform.pem
이 인증 방법에는 다음과 같은 제한 사항이 있습니다:
- 프로바이더는 Auth에 직접(포트 3025)만 연결할 수 있습니다. 대부분의 클러스터에서 프록시만 공개적으로 노출됩니다.
- 이러한 자격 증명은 고권한이며 장기적입니다. 보호되고 교체되어야 합니다.
- 이 인증 방법은 MFA가
webauthn으로 설정된 Teleport 클러스터에 대해 작동하지 않습니다. 이러한 클러스터에서 Teleport는 장기 인증서를 거부하고 관리 작업에 추가 MFA 챌린지를 요구합니다.
스키마#
선택#
addr(문자열) Teleport 주소의 host:port입니다. Teleport Proxy Service 주소(포트 443 또는 3080) 또는 Teleport Auth Service 주소(포트 3025)일 수 있습니다. 환경 변수TF_TELEPORT_ADDR로도 설정할 수 있습니다.audience_tag(문자열)terraform메서드를 사용한 네이티브 Machine ID 조인에 사용되는 선택적 audience 태그의 이름입니다. 환경 변수TF_TELEPORT_JOIN_AUDIENCE_TAG로도 설정할 수 있습니다.cert_base64(문자열) Base64 인코딩된 TLS 인증 인증서입니다. 환경 변수TF_TELEPORT_CERT_BASE64로도 설정할 수 있습니다.cert_path(문자열) Teleport 인증 인증서 파일 경로입니다. 환경 변수TF_TELEPORT_CERT로도 설정할 수 있습니다.dial_timeout_duration(문자열) DialTimeout은 서버에 연결할 때의 시간 초과를 설정합니다. 환경 변수TF_TELEPORT_DIAL_TIMEOUT_DURATION으로도 설정할 수 있습니다.gitlab_id_token_env_var(문자열)gitlab조인 메서드를 위해 GitLab에서 발행된 ID 토큰을 가져오는 데 사용되는 환경 변수입니다. 설정되지 않으면 기본값은TBOT_GITLAB_JWT입니다. 환경 변수TF_TELEPORT_GITLAB_ID_TOKEN_ENV_VAR로도 설정할 수 있습니다.identity_file(문자열, 민감) Teleport ID 파일 내용입니다. 환경 변수TF_TELEPORT_IDENTITY_FILE로도 설정할 수 있습니다.identity_file_base64(문자열, 민감) Base64 인코딩된 Teleport ID 파일 내용입니다. 환경 변수TF_TELEPORT_IDENTITY_FILE_BASE64로도 설정할 수 있습니다.identity_file_path(문자열) Teleport ID 파일 경로입니다. 환경 변수TF_TELEPORT_IDENTITY_FILE_PATH로도 설정할 수 있습니다.insecure(불리언) Teleport 클러스터에 참여할 때 프록시 인증서 확인을 건너뜁니다. 프로덕션 환경에서는 권장하지 않습니다. 환경 변수TF_TELEPORT_INSECURE로도 설정할 수 있습니다.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로도 설정할 수 있습니다.
