인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
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:a4ek_public_hash
(String) EKPublicHash는 PKIX 형식으로 마샬링된 EKPub의 SHA256 해시이며 16진수로 인코딩됩니다. 이 값은 TPM이 EKCert를 제출했을 때 체크되고, EKCert에서 공개 키가 이 체크에 사용됩니다. 예: d4b45864d9d6fabfc568d74f26c35ababde2105337d7af9a6605e1c56c891aa6
메타데이터에 대한 중첩 스키마
선택 사항:
description
(String) Description은 객체 설명입니다.expires
(String) Expires는 시스템의 모든 리소스에 설정할 수 있는 글로벌 만료 시간 헤더입니다.labels
(문자열 맵) Labels는 레이블 세트입니다.name
(String, 민감 정보) Name은 객체 이름입니다.