Infograb logo
기계 ID를 Teleport Terraform Provider와 함께 사용하기

Teleport Terraform 프로바이더는 Terraform을 사용하여 Teleport 클러스터를 구성하는 데 사용될 수 있습니다. 이 Terraform 프로바이더는 Teleport와 인증할 수 있는 방법이 필요하며, 기계 ID 자격 증명을 이 용도로 사용할 수 있습니다.

이 가이드에서는 tbot을 구성하여 Teleport Terraform 프로바이더를 위한 자격 증명을 생성하고 Terraform을 사용하여 Teleport 역할을 구성하는 방법을 설명합니다.

필수 조건

  • 실행 중인 Teleport 클러스터 버전 이상. Teleport를 시작하려면, 가입하기 위해 무료 평가판에 등록하거나 데모 환경 설정하기를 참조하세요.

  • tctl 관리 도구와 tsh 클라이언트 도구.

    tctltsh 다운로드에 대한 지침은 설치를 방문하세요.

  • 당신의 Teleport 클러스터에 연결할 수 있는지 확인하려면, tsh login으로 로그인한 다음 현재 자격 증명을 사용하여 tctl 명령어를 실행할 수 있는지 확인하십시오.

    예를 들어:

    tsh login --proxy=teleport.example.com --user=email@example.com
    tctl status

    클러스터 teleport.example.com

    버전 16.2.0

    CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678

    클러스터에 연결하고 tctl status 명령어를 실행할 수 있다면, 현재 자격 증명을 사용하여 작업대에서 후속 tctl 명령어를 실행할 수 있습니다.

    자신의 Teleport 클러스터를 호스팅하는 경우, Teleport 인증 서비스를 호스팅하는 컴퓨터에서 전체 권한으로 tctl 명령어를 실행할 수도 있습니다.

  • Terraform >= 1.0.0+

    terraform version

    Terraform v1.0.0

  • tbot은 이미 설치되어야 하며, Terraform을 실행할 기계에서 구성되어 있어야 합니다. 자세한 내용은 배포 가이드를 참조하십시오.

1단계/3단계. RBAC 구성

먼저, Teleport는 tbot에서 생성된 자격 증명이 Teleport 구성을 수정할 수 있도록 설정해야 합니다. 이는 필요한 권한을 부여하는 역할을 생성하고 이 역할을 봇에 할당하여 수행됩니다.

다음 내용을 포함하는 role.yaml 파일을 만듭니다:

kind: role
version: v6
metadata:
  name: example-role
spec:
  allow:
    rules:
    - resources:
      # 현재 Terraform으로 구성할 수 있는 모든 리소스를 나타냅니다.
      # 이 목록에서 Terraform으로 구성할 계획이 없는 리소스를 제거하여 
      # 영향을 줄이는 것이 좋습니다.
      - app
      - cluster_auth_preference
      - cluster_networking_config
      - db
      - device
      - github
      - login_rule
      - oidc
      - okta_import_rule
      - role
      - saml
      - session_recording_config
      - token
      - trusted_cluster
      - user
      verbs:
      - create
      - read
      - update
      - delete
      - list

example-role을 사용 사례와 관련된 설명적인 이름으로 바꿉니다.

tctl create -f ./role.yaml을 사용하여 역할을 생성합니다.

이제 tctl bots update를 사용하여 봇에 역할을 추가합니다. example을 배포 가이드에서 생성한 봇의 이름으로 바꾸고, example-role을 방금 생성한 역할의 이름으로 바꿉니다:

$ tctl bots update example --add-roles example-role

2단계/3단계. tbot 출력 구성

이제 tbot은 Terraform 프로바이더에서 필요한 자격 증명을 생성할 출력을 구성해야 합니다. Terraform 프로바이더가 Teleport API에 액세스할 것이므로, identity 출력 유형을 사용하는 것이 적합합니다.

이 가이드에서는 directory 대상을 사용할 것입니다. 이렇게 하면 이 자격 증명이 디스크의 지정된 디렉토리에 기록됩니다. 이 디렉토리는 tbot이 실행되는 리눅스 사용자로 인해 기록될 수 있어야 하며, Terraform을 실행할 리눅스 사용자에 의해 읽힐 수 있어야 합니다.

tbot 구성에서 identity 출력을 추가합니다:

outputs:
- type: identity
  destination:
    type: directory
    # 이 가이드에서는 /opt/machine-id를 대상 디렉토리로 사용합니다.
    # 이를 사용자 정의할 수 있습니다. 여러 출출이 같은 대상을 공유할 수 없습니다.
    path: /opt/machine-id

tbot을 백그라운드 서비스로 운영하는 경우, 이를 다시 시작합니다. tbot을 원샷 모드로 실행하는 경우(자격 증명을 생성하고 프로세스를 종료하는 대신 배경 프로세스를 실행함) Terraform 계획을 나중에 실행하기 전에 실행해야 합니다.

이제 /opt/machine-id 아래에 identity 파일이 있어야 합니다. 이 파일에는 Terraform 프로바이더가 Teleport 인증 서버와 인증하는 데 필요한 개인 키 및 서명된 인증서가 포함되어 있습니다.

3단계/3단계. identity 출력을 사용하여 Terraform 사용

새 Terraform 작업 디렉토리를 만드는 것으로 시작합니다:

mkdir ./my-terraform && cd ./my-terraform
terraform init

기계 ID에서 출력된 자격 증명을 사용하도록 Teleport Terraform 프로바이더를 구성하려면 identity_file_path 옵션을 사용합니다. TLS 인증서를 사용하여 Terraform 프로바이더를 구성할 수 있지만, identity 파일은 더 많은 Teleport 구성에서 지원을 제공합니다.

이 예제는 설명 목적을 위한 간단한 역할을 생성합니다. 이 역할은 Teleport 클러스터 내에서 유용하지 않을 가능성이 높습니다. 따라서 Terraform을 올바르게 구성했음을 확인한 후, 이 리소스는 필요에 맞게 수정해야 합니다.

이 디렉토리에서 main.tf를 생성합니다:

terraform {
  required_providers {
    teleport = {
      version = "16.2.0"
      source  = "terraform.releases.teleport.dev/gravitational/teleport"
    }
  }
}

provider "teleport" {
  # Teleport 프록시 또는 인증 서버의 주소로 교체하십시오.
  addr               = "teleport.example.com:443"
  # 이전 단계의 identity 출력에서 구성된 디렉토리로 교체하십시오.
  identity_file_path = "/opt/machine-id/identity"
}

# 이것은 예제입니다. 구현하고자 하는 리소스로 교체하십시오.
# 지원되는 옵션에 대한 참조를 보려면 다음을 참조하십시오:
# https://goteleport.com/docs/reference/terraform-provider/
resource "teleport_role" "terraform-test" {
  version = "v7"
  metadata = {
    name        = "terraform-test"
    description = "Terraform으로 생성된 예제 역할"
  }

  spec = {
    # 이 역할은 예제 역할로 아무 작업도 수행하지 않습니다.
    allow = {}
  }
}

teleport.example.com:443를 Teleport 프록시 또는 인증 서버의 주소로 교체하십시오. 만약 /opt/machine-id에서 대상 디렉토리를 수정했다면, 이 또한 교체해야 합니다.

이제 Terraform을 실행하여 구성을 테스트합니다:

terraform apply

Teleport 클러스터를 확인하여 역할이 생성되었는지 확인합니다:

tctl get role/terraform-test

다음 단계

Teleport 원문 보기