InfoGrab Docs

장기 자격 증명으로 Teleport Terraform 프로바이더 실행하기

요약

이 가이드는 Terraform 사용자를 생성하고 Teleport Auth Service가 해당 사용자에 대한 장기 자격 증명에 서명하도록 하는 방법을 설명합니다. Teleport 관리자는 Teleport Terraform 프로바이더용 역할과 Terraform 프로바이더 역할을 가장(impersonate)할 수 있는 역할을 정의합니다.

이 가이드는 Terraform 사용자를 생성하고 Teleport Auth Service가 해당 사용자에 대한 장기 자격 증명에 서명하도록 하는 방법을 설명합니다. 그러면 Teleport Terraform 프로바이더가 해당 자격 증명을 사용하여 Teleport와 상호 작용할 수 있습니다.

동작 방식#

Teleport 관리자는 Teleport Terraform 프로바이더용 역할과 Terraform 프로바이더 역할을 가장(impersonate)할 수 있는 역할을 정의합니다. Teleport 사용자는 가장자 역할을 가정하고 tctl 명령을 실행하여 Teleport Auth Service가 Terraform 프로바이더용 사용자 인증서에 서명하도록 지시합니다. 그런 다음 프로바이더는 인증서를 로드하여 Teleport 클러스터에 인증하고 Teleport Auth Service 백엔드에서 리소스를 관리합니다.

Warning

장기 자격 증명은 다른 Teleport 자격 증명보다 덜 안전하며 사용을 권장하지 않습니다.

자격 증명은 완전한 Teleport 관리 접근 권한을 보유하므로 보호하고 교체해야 합니다. 가능한 경우 tbot, CI 또는 클라우드 환경에서 네이티브 머신 및 워크로드 아이덴티티 참여, 또는 로컬 사용을 위한 임시 봇 생성을 사용하는 것이 좋습니다.

어떤 것이 사용 사례에 맞는지 찾으려면 가능한 Terraform 프로바이더 설정 목록을 참조하세요.

장기 자격 증명은 ID 공급자(IdP) 침해 시 Teleport를 보호하는 추가 보안 계층인 관리 작업용 MFA(MFA4A)와 호환되지 않습니다.

사전 요구 사항#

  • A running Teleport cluster. If you want to get started with Teleport, sign up for a free trial or set up a demo environment.

  • The tctl and tsh clients.

    Installing `tctl` and `tsh` clients
    1. Determine the version of your Teleport cluster. The tctl and tsh clients must be at most one major version behind your Teleport cluster version. Send a GET request to the Proxy Service at /v1/webapi/find and use a JSON query tool to obtain your cluster version. Replace with the web address of your Teleport Proxy Service:

      $ TELEPORT_DOMAIN=
      $ TELEPORT_VERSION="$(curl -s https://$TELEPORT_DOMAIN/v1/webapi/find | jq -r '.server_version')"
      
    2. Follow the instructions for your platform to install tctl and tsh clients:

To check that you can connect to your Teleport cluster, sign in with tsh login, then verify that you can run tctl commands using your current credentials.

For example, run the following command, assigning to the domain name of the Teleport Proxy Service in your cluster and to your Teleport username:

$ tsh login --proxy= --user=
$ tctl status
# Cluster  (=teleport.url=)
# Version  (=teleport.version=)
# CA pin   (=presets.ca_pin=)

If you can connect to the cluster and run the tctl status command, you can use your current credentials to run subsequent tctl commands from your workstation. If you host your own Teleport cluster, you can also run tctl commands on the computer that hosts the Teleport Auth Service for full permissions.

1/3단계. Terraform용 Teleport 자격 증명 생성하기#

Terraform은 클러스터의 리소스를 관리하기 위해 Teleport 클러스터 인증 기관에서 서명한 ID 파일이 필요합니다. 이 목적으로 로컬 Teleport 사용자를 생성합니다.

  1. 임시 파일을 보관할 teleport-terraform이라는 폴더를 생성합니다:

    $ mkdir -p teleport-terraform
    $ cd teleport-terraform
    
  2. terraform.yaml이라는 새 파일을 생성하고 편집기에서 엽니다.

  3. 다음 내용을 terraform.yaml 파일에 붙여넣어 로컬 Teleport 사용자 및 역할에 대한 설정을 구성합니다:

    kind: user
    metadata:
      name: terraform
    spec:
      roles: ['terraform-provider']
    version: v2
    

Starting with 16.2, Teleport comes with a built-in role for the Terraform provider: terraform-provider.

RBAC for versions before v16.2 On older version you will need to create the Terraform role yourself. Write the following `role.yaml` manifest:
```yaml
kind: role
version: v7
metadata:
  name: terraform-provider
spec:
  allow:
    db_labels:
      '*': '*'
    app_labels:
      '*': '*'
    node_labels:
      '*': '*'
    rules:
      - resources:
        - 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
        - access_list
        - node
        verbs: ['list','create','read','update','delete']
```

Use `tctl create -f ./role.yaml` to create the role.

이 설정은 Teleport 클러스터에서 리소스를 관리하는 데 필요한 권한으로 terraform이라는 이름의 사용자와 역할을 구성합니다.

  1. 다음 명령을 실행하여 terraform 사용자와 역할을 생성합니다:

    $ tctl create terraform.yaml
    

    terraform 사용자는 로그인하여 자격 증명을 얻을 수 없으므로, 다른 사용자가 terraform 계정을 가장하여 인증서를 요청해야 합니다.

  2. terraform-impersonator.yaml이라는 새 파일을 생성하고 편집기에서 엽니다.

  3. 다음 내용을 terraform-impersonator.yaml 파일에 붙여넣어 Terraform 사용자를 가장할 수 있도록 하는 역할을 구성합니다:

    kind: role
    version: v7
    metadata:
      name: terraform-impersonator
    spec:
      allow:
        # 이 가장 역할은 이 역할이 할당된 모든 사용자가
        # "terraform"이라는 이름의 사용자를 가장하고 해당 사용자의 인증서를
        # 생성할 수 있도록 합니다. 역할 이름도 "terraform"입니다.
        impersonate:
          users: ['terraform']
          roles: ['terraform-provider']
    
  4. 다음 명령을 실행하여 terraform-impersonator 역할을 생성합니다:

    $ tctl create terraform-impersonator.yaml
    

Assign the terraform-impersonator role to your Teleport user by running the appropriate commands for your authentication provider:

  1. 다음 명령을 실행하여 Terraform 사용자에 대한 서명된 ID 파일을 요청합니다:

    $ tctl auth sign --user=terraform --out=terraform-identity
    

    이 명령을 실행하면 Terraform 사용자의 자격 증명이 포함된 terraform-identity 파일이 생성됩니다.

2/3단계. Terraform 구성 파일 준비하기#

Terraform 구성 파일을 준비하려면:

  1. main.tf라는 새 파일을 생성하고 편집기에서 엽니다.

  2. 다음 내용을 main.tf 파일에 붙여넣어 Terraform을 사용하여 예제 사용자와 역할을 정의합니다. 을 Teleport 프록시 서비스의 호스트와 포트로 교체합니다:

    terraform {
       required_providers {
          teleport = {
             source  = "terraform.releases.teleport.dev/gravitational/teleport"
             version = "~> (=teleport.major_version=).0"
          }
       }
    }
    
    provider "teleport" {
       addr               = ''
       identity_file_path = "terraform-identity"
    }
    
    # 테스트 역할을 생성해야 합니다. 리소스를 선언하지 않으면 Terraform이
    # Teleport에 연결을 시도하지 않아 설정을 검증할 수 없습니다.
    resource "teleport_role" "test" {
       version = "v7"
       metadata = {
          name        = "test"
          description = "Dummy role to validate Terraform Provider setup"
          labels = {
             test = "yes"
          }
       }
    
       spec = {}
    }
    

3/3단계. 구성 적용하기#

구성을 적용하려면:

  1. teleport-terraform 폴더의 내용을 확인합니다:

    $ ls
    # main.tf  terraform-identity  terraform-impersonator.yaml  terraform.yaml
    
  2. 다음 명령을 실행하여 Terraform 구성 파일이 포함된 작업 디렉터리를 초기화합니다:

    $ terraform init
    Initializing the backend...
    
    Initializing provider plugins...
    - Finding terraform.releases.teleport.dev/gravitational/teleport versions matching ...
    
  3. 다음 명령을 실행하여 구성 파일에 정의된 Terraform 플랜을 실행합니다:

    $ terraform apply
    Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
    + create
    
    Terraform will perform the following actions:
    
    # teleport_role.test will be created
    + resource "teleport_role" "test" {
       + id       = (known after apply)
       + kind     = (known after apply)
       + metadata = {
          + name      = "test"
          + namespace = (known after apply)
            }
       + spec     = {}
       + version  = "v7"
         }
    
    Plan: 1 to add, 0 to change, 0 to destroy.
    

다음 단계#

장기 자격 증명으로 Teleport Terraform 프로바이더 실행하기

원문 보기
요약

이 가이드는 Terraform 사용자를 생성하고 Teleport Auth Service가 해당 사용자에 대한 장기 자격 증명에 서명하도록 하는 방법을 설명합니다. Teleport 관리자는 Teleport Terraform 프로바이더용 역할과 Terraform 프로바이더 역할을 가장(impersonate)할 수 있는 역할을 정의합니다.

이 가이드는 Terraform 사용자를 생성하고 Teleport Auth Service가 해당 사용자에 대한 장기 자격 증명에 서명하도록 하는 방법을 설명합니다. 그러면 Teleport Terraform 프로바이더가 해당 자격 증명을 사용하여 Teleport와 상호 작용할 수 있습니다.

동작 방식#

Teleport 관리자는 Teleport Terraform 프로바이더용 역할과 Terraform 프로바이더 역할을 가장(impersonate)할 수 있는 역할을 정의합니다. Teleport 사용자는 가장자 역할을 가정하고 tctl 명령을 실행하여 Teleport Auth Service가 Terraform 프로바이더용 사용자 인증서에 서명하도록 지시합니다. 그런 다음 프로바이더는 인증서를 로드하여 Teleport 클러스터에 인증하고 Teleport Auth Service 백엔드에서 리소스를 관리합니다.

Warning

장기 자격 증명은 다른 Teleport 자격 증명보다 덜 안전하며 사용을 권장하지 않습니다.

자격 증명은 완전한 Teleport 관리 접근 권한을 보유하므로 보호하고 교체해야 합니다. 가능한 경우 tbot, CI 또는 클라우드 환경에서 네이티브 머신 및 워크로드 아이덴티티 참여, 또는 로컬 사용을 위한 임시 봇 생성을 사용하는 것이 좋습니다.

어떤 것이 사용 사례에 맞는지 찾으려면 가능한 Terraform 프로바이더 설정 목록을 참조하세요.

장기 자격 증명은 ID 공급자(IdP) 침해 시 Teleport를 보호하는 추가 보안 계층인 관리 작업용 MFA(MFA4A)와 호환되지 않습니다.

사전 요구 사항#

  • A running Teleport cluster. If you want to get started with Teleport, sign up for a free trial or set up a demo environment.

  • The tctl and tsh clients.

    Installing `tctl` and `tsh` clients
    1. Determine the version of your Teleport cluster. The tctl and tsh clients must be at most one major version behind your Teleport cluster version. Send a GET request to the Proxy Service at /v1/webapi/find and use a JSON query tool to obtain your cluster version. Replace with the web address of your Teleport Proxy Service:

      $ TELEPORT_DOMAIN=
      $ TELEPORT_VERSION="$(curl -s https://$TELEPORT_DOMAIN/v1/webapi/find | jq -r '.server_version')"
      
    2. Follow the instructions for your platform to install tctl and tsh clients:

To check that you can connect to your Teleport cluster, sign in with tsh login, then verify that you can run tctl commands using your current credentials.

For example, run the following command, assigning to the domain name of the Teleport Proxy Service in your cluster and to your Teleport username:

$ tsh login --proxy= --user=
$ tctl status
# Cluster  (=teleport.url=)
# Version  (=teleport.version=)
# CA pin   (=presets.ca_pin=)

If you can connect to the cluster and run the tctl status command, you can use your current credentials to run subsequent tctl commands from your workstation. If you host your own Teleport cluster, you can also run tctl commands on the computer that hosts the Teleport Auth Service for full permissions.

1/3단계. Terraform용 Teleport 자격 증명 생성하기#

Terraform은 클러스터의 리소스를 관리하기 위해 Teleport 클러스터 인증 기관에서 서명한 ID 파일이 필요합니다. 이 목적으로 로컬 Teleport 사용자를 생성합니다.

  1. 임시 파일을 보관할 teleport-terraform이라는 폴더를 생성합니다:

    $ mkdir -p teleport-terraform
    $ cd teleport-terraform
    
  2. terraform.yaml이라는 새 파일을 생성하고 편집기에서 엽니다.

  3. 다음 내용을 terraform.yaml 파일에 붙여넣어 로컬 Teleport 사용자 및 역할에 대한 설정을 구성합니다:

    kind: user
    metadata:
      name: terraform
    spec:
      roles: ['terraform-provider']
    version: v2
    

Starting with 16.2, Teleport comes with a built-in role for the Terraform provider: terraform-provider.

RBAC for versions before v16.2 On older version you will need to create the Terraform role yourself. Write the following `role.yaml` manifest:
```yaml
kind: role
version: v7
metadata:
  name: terraform-provider
spec:
  allow:
    db_labels:
      '*': '*'
    app_labels:
      '*': '*'
    node_labels:
      '*': '*'
    rules:
      - resources:
        - 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
        - access_list
        - node
        verbs: ['list','create','read','update','delete']
```

Use `tctl create -f ./role.yaml` to create the role.

이 설정은 Teleport 클러스터에서 리소스를 관리하는 데 필요한 권한으로 terraform이라는 이름의 사용자와 역할을 구성합니다.

  1. 다음 명령을 실행하여 terraform 사용자와 역할을 생성합니다:

    $ tctl create terraform.yaml
    

    terraform 사용자는 로그인하여 자격 증명을 얻을 수 없으므로, 다른 사용자가 terraform 계정을 가장하여 인증서를 요청해야 합니다.

  2. terraform-impersonator.yaml이라는 새 파일을 생성하고 편집기에서 엽니다.

  3. 다음 내용을 terraform-impersonator.yaml 파일에 붙여넣어 Terraform 사용자를 가장할 수 있도록 하는 역할을 구성합니다:

    kind: role
    version: v7
    metadata:
      name: terraform-impersonator
    spec:
      allow:
        # 이 가장 역할은 이 역할이 할당된 모든 사용자가
        # "terraform"이라는 이름의 사용자를 가장하고 해당 사용자의 인증서를
        # 생성할 수 있도록 합니다. 역할 이름도 "terraform"입니다.
        impersonate:
          users: ['terraform']
          roles: ['terraform-provider']
    
  4. 다음 명령을 실행하여 terraform-impersonator 역할을 생성합니다:

    $ tctl create terraform-impersonator.yaml
    

Assign the terraform-impersonator role to your Teleport user by running the appropriate commands for your authentication provider:

  1. 다음 명령을 실행하여 Terraform 사용자에 대한 서명된 ID 파일을 요청합니다:

    $ tctl auth sign --user=terraform --out=terraform-identity
    

    이 명령을 실행하면 Terraform 사용자의 자격 증명이 포함된 terraform-identity 파일이 생성됩니다.

2/3단계. Terraform 구성 파일 준비하기#

Terraform 구성 파일을 준비하려면:

  1. main.tf라는 새 파일을 생성하고 편집기에서 엽니다.

  2. 다음 내용을 main.tf 파일에 붙여넣어 Terraform을 사용하여 예제 사용자와 역할을 정의합니다. 을 Teleport 프록시 서비스의 호스트와 포트로 교체합니다:

    terraform {
       required_providers {
          teleport = {
             source  = "terraform.releases.teleport.dev/gravitational/teleport"
             version = "~> (=teleport.major_version=).0"
          }
       }
    }
    
    provider "teleport" {
       addr               = ''
       identity_file_path = "terraform-identity"
    }
    
    # 테스트 역할을 생성해야 합니다. 리소스를 선언하지 않으면 Terraform이
    # Teleport에 연결을 시도하지 않아 설정을 검증할 수 없습니다.
    resource "teleport_role" "test" {
       version = "v7"
       metadata = {
          name        = "test"
          description = "Dummy role to validate Terraform Provider setup"
          labels = {
             test = "yes"
          }
       }
    
       spec = {}
    }
    

3/3단계. 구성 적용하기#

구성을 적용하려면:

  1. teleport-terraform 폴더의 내용을 확인합니다:

    $ ls
    # main.tf  terraform-identity  terraform-impersonator.yaml  terraform.yaml
    
  2. 다음 명령을 실행하여 Terraform 구성 파일이 포함된 작업 디렉터리를 초기화합니다:

    $ terraform init
    Initializing the backend...
    
    Initializing provider plugins...
    - Finding terraform.releases.teleport.dev/gravitational/teleport versions matching ...
    
  3. 다음 명령을 실행하여 구성 파일에 정의된 Terraform 플랜을 실행합니다:

    $ terraform apply
    Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
    + create
    
    Terraform will perform the following actions:
    
    # teleport_role.test will be created
    + resource "teleport_role" "test" {
       + id       = (known after apply)
       + kind     = (known after apply)
       + metadata = {
          + name      = "test"
          + namespace = (known after apply)
            }
       + spec     = {}
       + version  = "v7"
         }
    
    Plan: 1 to add, 0 to change, 0 to destroy.
    

다음 단계#