Infograb logo
teleport_provision_token Terraform 리소스에 대한 참조

사용 예시

# Teleport Provision Token 리소스

resource "teleport_provision_token" "example" {
  metadata = {
    expires     = "2022-10-12T07:20:51Z"
    description = "예제 토큰"

    labels = {
      example               = "yes"
      "teleport.dev/origin" = "dynamic" // 이 레이블은 Teleport 측에서 기본적으로 추가됩니다.
    }
  }

  spec = {
    roles = ["Node", "Auth"]
  }
}

resource "teleport_provision_token" "iam-token" {
  metadata = {
    name = "iam-token"
  }
  spec = {
    roles       = ["Bot"]
    bot_name    = "mybot"
    join_method = "iam"
    allow = [{
      aws_account = "123456789012"
    }]
  }
}

스키마

필수

  • spec (속성) Spec은 프로비저닝 토큰 V2 스펙입니다 (아래의 중첩 스키마를 확인하십시오: nested schema for spec)
  • version (문자열) Version은 리소스 버전입니다. 반드시 지정해야 합니다. 지원되는 값: v2 .

선택적

  • metadata (속성) Metadata는 리소스 메타데이터입니다 (아래의 중첩 스키마를 확인하십시오: nested schema for metadata)
  • sub_kind (문자열) SubKind는 일부 리소스에서 사용되는 선택적 리소스 하위 종류입니다.

spec 에 대한 중첩 스키마

필수:

  • roles (문자열 목록) Roles는 토큰과 연관된 역할 리스트로, 사용자의 SSH 및 X509 인증서에 메타데이터로 변환됩니다.

선택적:

  • allow (속성 목록) Allow는 이 토큰을 사용할 노드는 이 토큰을 사용하기 위해 하나의 allow 규칙과 일치해야 합니다. (아래의 중첩 스키마를 참조하십시오: nested schema for specallow)
  • aws_iid_ttl (문자열) AWSIIDTTL은 이 토큰으로 클러스터에 조인하는 데 사용되는 AWS EC2 인스턴스 ID 문서에 대한 TTL입니다.
  • azure (속성) Azure는 "azure" 조인 방법에 관련된 옵션을 구성할 수 있습니다. (아래의 중첩 스키마를 참조하십시오: nested schema for specazure)
  • bot_name (문자열) BotName은 이 토큰이 접근을 부여하는 봇의 이름입니다.
  • circleci (속성) CircleCI는 "circleci" 조인 방법에 관련된 옵션을 구성할 수 있습니다. (아래의 중첩 스키마를 참조하십시오: nested schema for speccircleci)
  • gcp (속성) GCP는 "gcp" 조인 방법에 관련된 옵션을 구성할 수 있습니다. (아래의 중첩 스키마를 참조하십시오: nested schema for specgcp)
  • github (속성) GitHub는 "github" 조인 방법에 관련된 옵션을 구성할 수 있습니다. (아래의 중첩 스키마를 참조하십시오: nested schema for specgithub)
  • gitlab (속성) GitLab은 "gitlab" 조인 방법에 관련된 옵션을 구성할 수 있습니다. (아래의 중첩 스키마를 참조하십시오: nested schema for specgitlab)
  • join_method (문자열) JoinMethod는 이 토큰을 사용하기 위해 필요한 조인 방법입니다. 지원되는 조인 방법에는: azure, circleci, ec2, gcp, github, gitlab, iam, kubernetes, spacelift, token, tpm이 포함됩니다.
  • kubernetes (속성) Kubernetes는 "kubernetes" 조인 방법에 관련된 옵션을 구성할 수 있습니다. (아래의 중첩 스키마를 참조하십시오: nested schema for speckubernetes)
  • spacelift (속성) Spacelift는 "spacelift" 조인 방법에 관련된 옵션을 구성할 수 있습니다. (아래의 중첩 스키마를 참조하십시오: nested schema for specspacelift)
  • suggested_agent_matcher_labels (문자열 목록의 맵) SuggestedAgentMatcherLabels는 에이전트가 리소스와 일치하기 위해 사용할 레이블의 집합입니다. 에이전트가 이 토큰을 사용할 때 에이전트는 이러한 레이블과 일치하는 리소스를 모니터링해야 합니다. 데이터베이스의 경우, 이는 레이블을 db_service.resources.labels 에 추가하는 것을 의미합니다. 현재는 노드 조인 스크립트만 제안에 따라 구성을 생성합니다.
  • suggested_labels (문자열 목록의 맵) SuggestedLabels는 클러스터에 등록할 때 이 토큰을 사용할 때 리소스가 설정해야 하는 레이블의 집합입니다. 현재는 노드 조인 스크립트만 제안에 따라 구성을 생성합니다.
  • terraform_cloud (속성) TerraformCloud는 "terraform_cloud" 조인 방법에 관련된 옵션을 구성할 수 있습니다. (아래의 중첩 스키마를 참조하십시오: nested schema for specterraform_cloud)
  • tpm (속성) TPM은 "tpm" 조인 방법에 관련된 옵션을 구성할 수 있습니다. (아래의 중첩 스키마를 참조하십시오: nested schema for spectpm)

spec.allow 에 대한 중첩 스키마

선택 사항:

  • aws_account (문자열) AWSAccount는 AWS 계정 ID입니다.
  • aws_arn (문자열) AWSARN은 IAM 조인 방법에 사용되며, 조인하는 노드의 AWS 아이덴티티는 이 ARN과 일치해야 합니다. 와일드카드 "*" 및 "?"를 지원합니다.
  • aws_regions (문자열 리스트) AWSRegions는 EC2 조인 방법에 사용되며, 노드가 조인할 수 있는 AWS 리전의 리스트입니다.
  • aws_role (문자열) AWSRole은 EC2 조인 방법에 사용되며, Auth 서비스가 ec2 API를 호출하기 위해 맡을 AWS 역할의 ARN입니다.

spec.azure 에 대한 중첩 스키마

선택 사항:

  • allow (어트리뷰트 리스트) Allow는 규칙의 리스트로, 이 토큰을 사용하는 노드는 이 토큰을 사용하기 위해 하나의 allow 규칙과 일치해야 합니다. (중첩 스키마 아래 참조)

spec.azure.allow 에 대한 중첩 스키마

선택 사항:

  • resource_groups (문자열 리스트) ResourceGroups는 노드가 조인할 수 있는 Azure 리소스 그룹의 리스트입니다.
  • subscription (문자열) Subscription은 Azure 구독입니다.

spec.circleci 에 대한 중첩 스키마

선택 사항:

  • allow (어트리뷰트 리스트) Allow는 TokenRules의 리스트로, 이 토큰을 사용하는 노드는 이 토큰을 사용하기 위해 하나의 allow 규칙과 일치해야 합니다. (중첩 스키마 아래 참조)
  • organization_id (문자열)

spec.circleci.allow 에 대한 중첩 스키마

선택 사항:

  • context_id (문자열)
  • project_id (문자열)

spec.gcp 에 대한 중첩 스키마

선택 사항:

  • allow (어트리뷰트 리스트) Allow는 규칙의 리스트로, 이 토큰을 사용하는 노드는 이 토큰을 사용하기 위해 하나의 allow 규칙과 일치해야 합니다. (중첩 스키마 아래 참조)

spec.gcp.allow 에 대한 중첩 스키마

선택 사항:

  • locations (문자열 리스트) Locations는 지역의 리스트입니다 (예: "us-west1") 및/또는 존 (예: "us-west1-b").
  • project_ids (문자열 리스트) ProjectIDs는 프로젝트 ID의 리스트입니다 (예: <example-id-123456>).
  • service_accounts (문자열 리스트) ServiceAccounts는 서비스 계정 이메일의 리스트입니다 (예: <project-number>-compute@developer.gserviceaccount.com ).

spec.github 에 대한 중첩 스키마

선택 사항:

  • allow (어트리뷰트 리스트) Allow는 TokenRules의 리스트로, 이 토큰을 사용하는 노드는 이 토큰을 사용하기 위해 하나의 allow 규칙과 일치해야 합니다. (중첩 스키마 아래 참조)
  • enterprise_server_host (문자열) EnterpriseServerHost는 GitHub Enterprise Server 인스턴스와 연결된 러너에서 조인할 수 있게 해줍니다. 구성하지 않으면 토큰은 github.com에 대해 검증되지만, GHES 인스턴스의 호스트로 구성되면 그에 따라 토큰이 검증됩니다. 이 값은 GHES 인스턴스의 호스트 이름이어야 하며, 스킴이나 경로를 포함하지 않아야 합니다. 이 호스트 이름에서 HTTPS를 통해 접근 가능해야 하며, 인증서는 Auth 서비스에 의해 신뢰되어야 합니다.
  • enterprise_slug (문자열) EnterpriseSlug는 GitHub Enterprise 조직의 슬러그를 OIDC 토큰의 예상 발급자에 포함할 수 있도록 해줍니다. 이는 GHE의 include_enterprise_slug 옵션과 호환성을 위해 필요합니다. 이 필드는 활성화되면 유효한 슬러그로 설정해야 합니다. 활성화되지 않은 경우 이 필드를 비워두어야 합니다. enterprise_server_host 가 지정된 경우 이 필드는 지정할 수 없습니다. 사용자 정의 발급자 값에 대한 자세한 내용은 https://docs.github.com/en/enterprise-cloud@latest/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#customizing-the-issuer-value-for-an-enterprise를 참조하십시오.

spec.github.allow 에 대한 중첩 스키마

선택적:

  • actor (문자열) 워크플로 실행을 시작한 개인 계정입니다.
  • environment (문자열) 작업에 의해 사용되는 환경의 이름입니다.
  • ref (문자열) 워크플로 실행을 트리거한 git 참조입니다.
  • ref_type (문자열) 참조의 유형입니다. 예: "branch".
  • repository (문자열) 워크플로가 실행 중인 저장소입니다. 소유자의 이름을 포함합니다. 예: gravitational/teleport
  • repository_owner (문자열) 저장소가 저장된 조직의 이름입니다.
  • sub (문자열) 주제라고도 알려진 Sub는 작업 부하를 대략적으로 고유하게 식별하는 문자열입니다. 이 형식은 github action 실행의 유형에 따라 다릅니다.
  • workflow (문자열) 워크플로의 이름입니다.

spec.gitlab 에 대한 중첩 스키마

선택적:

  • allow (속성 목록) Allow는 TokenRules의 목록입니다. 이 토큰을 사용하는 노드는 이 토큰을 사용하기 위해 하나의 allow 규칙과 일치해야 합니다. (아래 중첩 스키마 참조하기 nested schema)
  • domain (문자열) Domain은 GitLab 인스턴스의 도메인입니다. 기본값은 gitlab.com 이며, 자가 호스팅된 GitLab의 도메인으로 설정할 수 있습니다. 예: gitlab.example.com .

spec.gitlab.allow 에 대한 중첩 스키마

선택적:

  • ci_config_ref_uri (문자열) CIConfigRefURI는 최상위 파이프라인 정의에 대한 참조 경로입니다. 예: gitlab.example.com/my-group/my-project//.gitlab-ci.yml@refs/heads/main.
  • ci_config_sha (문자열) CIConfigSHA는 ci_config_ref_uri에 대한 git 커밋 SHA입니다.
  • deployment_tier (문자열) DeploymentTier는 작업이 지정하는 환경의 배포 계층입니다.
  • environment (문자열) Environment는 작업이 배포되는 환경에 따라 액세스를 제한합니다(해당 환경이 연결된 경우).
  • environment_protected (부울) EnvironmentProtected는 Git 참조가 보호된 경우 true, 그렇지 않으면 false입니다.
  • namespace_path (문자열) NamespacePath는 그룹 또는 사용자 프로젝트의 작업에 대한 액세스를 제한하는 데 사용됩니다. 예: mygroup 이 필드는 "glob-style" 일치 스타일을 지원합니다: - '*'를 사용하여 0개 이상의 문자와 일치시키기. - '?'를 사용하여 단일 문자와 일치시키기.
  • pipeline_source (문자열) PipelineSource는 작업 파이프라인 소스 유형에 따라 액세스를 제한합니다. https://docs.gitlab.com/ee/ci/jobs/job_control.html#common-if-clauses-for-rules 예: web
  • project_path (문자열) ProjectPath는 개별 프로젝트에 속하는 작업에 대한 액세스를 제한하는 데 사용됩니다. 예: mygroup/myproject 이 필드는 "glob-style" 일치 스타일을 지원합니다: - '*'를 사용하여 0개 이상의 문자와 일치시키기. - '?'를 사용하여 단일 문자와 일치시키기.
  • project_visibility (문자열) ProjectVisibility는 파이프라인이 실행 중인 프로젝트의 가시성입니다. 내부, 비공개 또는 공개일 수 있습니다.
  • ref (문자열) Ref는 특정 git 참조에 의해 트리거된 작업에 대한 액세스를 제한할 수 있도록 합니다. 반드시 ref_type과 함께 사용해야 합니다. 이 필드는 "glob-style" 일치 스타일을 지원합니다: - '*'를 사용하여 0개 이상의 문자와 일치시키기. - '?'를 사용하여 단일 문자와 일치시키기.
  • ref_protected (부울) RefProtected는 Git 참조가 보호된 경우 true, 그렇지 않으면 false입니다.
  • ref_type (문자열) RefType은 특정 git 참조 유형에 의해 트리거된 작업에 대한 액세스를 제한할 수 있도록 합니다. 예: branch 또는 tag
  • sub (문자열) Sub은 작업 부하를 대략적으로 고유하게 식별합니다. 예: project_path:mygroup/my-project:ref_type:branch:ref:main project_path:GROUP/PROJECT:ref_type:TYPE:ref:BRANCH_NAME 이 필드는 "glob-style" 일치 스타일을 지원합니다: - '*'를 사용하여 0개 이상의 문자와 일치시키기. - '?'를 사용하여 단일 문자와 일치시키기.
  • user_email (문자열) UserEmail은 작업을 실행 중인 사용자의 이메일입니다.
  • user_id (문자열) UserID는 작업을 실행 중인 사용자의 ID입니다.
  • user_login (문자열) UserLogin은 작업을 실행 중인 사용자의 사용자 이름입니다.

spec.kubernetes 에 대한 중첩 스키마

선택 사항:

  • allow (속성 목록) Allow는 규칙의 목록으로, 이 토큰을 사용하는 노드는 이 토큰을 사용하기 위해 하나의 allow 규칙과 일치해야 합니다. (중첩 스키마 참조 아래)
  • static_jwks (속성) StaticJWKS는 static_jwks 유형에 고유한 구성입니다. (중첩 스키마 참조 아래)
  • type (문자열) Type은 Kubernetes 서비스 계정 토큰을 검증하는 데 사용해야 할 동작을 제어합니다. 지원되는 값: - in_cluster - static_jwks 설정되지 않은 경우 기본값은 in_cluster 입니다.

spec.kubernetes.allow 에 대한 중첩 스키마

선택 사항:

  • service_account (문자열) ServiceAccount는 Kubernetes 서비스 계정의 네임스페이스 이름입니다. 형식은 "namespace:service-account"입니다.

spec.kubernetes.static_jwks 에 대한 중첩 스키마

선택 사항:

  • jwks (문자열) JWKS는 Kubernetes 클러스터가 서비스 계정 토큰에 서명하는 데 사용하는 JSON 웹 키 세트 형태의 공개 키입니다. 이는 Kubernetes API 서버의 /openid/v1/jwks에서 가져올 수 있습니다.

spec.spacelift 에 대한 중첩 스키마

선택 사항:

  • allow (속성 목록) Allow는 규칙의 목록으로, 이 토큰을 사용하는 노드는 이 토큰을 사용하기 위해 하나의 allow 규칙과 일치해야 합니다. (중첩 스키마 참조 아래)
  • hostname (문자열) Hostname은 토큰이 유래할 Spacelift 테넌트의 호스트 이름입니다. 예: example.app.spacelift.io

spec.spacelift.allow 에 대한 중첩 스키마

선택 사항:

  • caller_id (문자열) CallerID는 호출자의 ID로, 즉 실행을 생성한 스택 또는 모듈입니다.
  • caller_type (문자열) CallerType은 호출자의 유형으로, 즉 실행을 소유한 엔터티입니다 - stack 또는 module 중 하나입니다.
  • scope (문자열) Scope는 토큰의 범위로, read 또는 write 중 하나입니다. https://docs.spacelift.io/integrations/cloud-providers/oidc/#about-scopes 참조
  • space_id (문자열) SpaceID는 토큰을 소유한 실행이 실행된 공간의 ID입니다.

spec.terraform_cloud 에 대한 중첩 스키마

선택 사항:

  • allow (속성 목록) Allow는 규칙의 목록으로, 이 토큰을 사용하는 노드는 이 토큰을 사용하기 위해 하나의 allow 규칙과 일치해야 합니다. (중첩 스키마 참조 아래)
  • audience (문자열) Audience는 Terraform Cloud에서 설정된 TFCWORKLOAD_IDENTITY_AUDIENCE($TAG) 변수로 구성된 JWT 수신자입니다. 설정되지 않은 경우 기본값은 Teleport 클러스터 이름입니다. 예를 들어, Terraform Cloud의 TFC_WORKLOAD_IDENTITY_AUDIENCE_TELEPORT=foo 가 설정된 경우, 이 값은 foo 여야 합니다. 변수 값이 클러스터 이름과 일치하도록 설정된 경우, 여기서 설정할 필요가 없습니다.
  • hostname (문자열) Hostname은 이 토큰에 의해 허용되는 JWT를 발급할 것으로 예상되는 Terraform Enterprise 인스턴스의 호스트 이름입니다. 일반 Terraform Cloud 사용을 위해 설정되지 않을 수 있으며, 이 경우 기본적으로 app.terraform.io 로 간주됩니다. 그렇지 않으면 JWT에 포함된 iss (발급자) 필드와 일치해야 하며, 표준 JWKS 엔드포인트를 제공해야 합니다.

spec.terraform_cloud.allow 에 대한 중첩 스키마

선택 사항:

  • organization_id (String) OrganizationID는 HCP Terraform 조직의 ID입니다. 최소한 하나의 조직 값이 필요하며, ID 또는 이름 중 하나여야 합니다.
  • organization_name (String) OrganizationName은 HCP Terraform 조직의 인식 가능한 이름입니다. 최소한 하나의 조직 값이 필요하며, ID 또는 이름 중 하나여야 합니다.
  • project_id (String) ProjectID는 HCP Terraform 프로젝트의 ID입니다. 최소한 하나의 프로젝트 또는 작업공간 값이 필요하며, ID 또는 이름 중 하나여야 합니다.
  • project_name (String) ProjectName은 HCP Terraform 프로젝트의 인식 가능한 이름입니다. 최소한 하나의 프로젝트 또는 작업공간 값이 필요하며, ID 또는 이름 중 하나여야 합니다.
  • run_phase (String) RunPhase는 토큰이 발급된 실행의 단계로, 예를 들어 plan 또는 apply 입니다.
  • workspace_id (String) WorkspaceID는 HCP Terraform 작업공간의 ID입니다. 최소한 하나의 프로젝트 또는 작업공간 값이 필요하며, ID 또는 이름 중 하나여야 합니다.
  • workspace_name (String) WorkspaceName은 HCP Terraform 작업공간의 인식 가능한 이름입니다. 최소한 하나의 프로젝트 또는 작업공간 값이 필요하며, ID 또는 이름 중 하나여야 합니다.

spec.tpm 에 대한 중첩 스키마

선택 사항:

  • allow (속성 목록) Allow는 규칙 목록으로, 제시된 위임된 신원이 조인할 수 있도록 허용 규칙 중 하나와 일치해야 합니다. (아래의 중첩 스키마를 참조하세요.)(#nested-schema-for-spectpmallow)
  • ekcert_allowed_cas (문자열 목록) EKCertAllowedCAs는 TPM EKCerts를 검증하는 데 사용될 CA 인증서 목록입니다. 지정된 경우, 조인하는 TPM은 지정된 CA 중 하나에 의해 서명된 EKCert를 제시해야 합니다. EKCert을 제출하지 않는 TPM은 조인할 수 없습니다. 지정하지 않는 경우, TPM은 EKCert 또는 EKPubHash 중 하나로 조인할 수 있습니다.

spec.tpm.allow 에 대한 중첩 스키마

선택 사항:

  • description (String) Description은 규칙의 인식 가능한 설명입니다. 이것은 TPM이 조인할 수 있는 여부에는 영향을 미치지 않지만, 특정 호스트(예: TPM이 존재하는 서버의 자산 태그)와 규칙을 연관시키는 데 사용될 수 있습니다. 예: "build-server-100"
  • ek_certificate_serial (String) EKCertificateSerial은 16진수로 콜론으로 구분된 조각으로 된 EKCert의 일련 번호입니다. 이 값은 TPM에 EKCert이 구성되지 않은 경우에 체크되지 않습니다. 예: 73:df:dc:bd:af:ef:8a:d8:15:2e:96:71:7a:3e:7f:a4
  • ek_public_hash (String) EKPublicHash는 PKIX 형식으로 마샬링된 EKPub의 SHA256 해시이며 16진수로 인코딩됩니다. 이 값은 TPM이 EKCert를 제출했을 때 체크되고, EKCert에서 공개 키가 이 체크에 사용됩니다. 예: d4b45864d9d6fabfc568d74f26c35ababde2105337d7af9a6605e1c56c891aa6

메타데이터에 대한 중첩 스키마

선택 사항:

  • description (String) Description은 객체 설명입니다.
  • expires (String) Expires는 시스템의 모든 리소스에 설정할 수 있는 글로벌 만료 시간 헤더입니다.
  • labels (문자열 맵) Labels는 레이블 세트입니다.
  • name (String, 민감 정보) Name은 객체 이름입니다.
Teleport 원문 보기