teleport-discovery-aws Terraform 모듈 참조
소스 코드: github.com/gravitational/teleport/tree/master/integrations/terraform-modules/teleport/discovery/aws 이 Terraform 모듈은 Teleport 클러스터가 AWS에서 리소스를 검색하는 데 필요한 AWS 및 Teleport 클러스터 리소스를 생성합니다.
소스 코드: github.com/gravitational/teleport/tree/master/integrations/terraform-modules/teleport/discovery/aws
AWS 검색 Terraform 모듈#
이 Terraform 모듈은 Teleport 클러스터가 AWS에서 리소스를 검색하는 데 필요한 AWS 및 Teleport 클러스터 리소스를 생성합니다.
- Teleport 검색 서비스가 맡을 AWS IAM 역할.
- Teleport가 AWS에서 리소스를 검색하는 데 필요한 AWS 권한을 부여하는, IAM 역할에 연결된 AWS IAM 정책.
- Teleport 검색 서비스가 OIDC를 사용하여 IAM 역할을 맡을 수 있도록 하는 AWS OIDC 공급자. 이 리소스는 선택 사항으로,
create_aws_iam_openid_connect_provider = false를 사용하여 생성을 비활성화할 수 있습니다. 이 리소스는 두 가지 시나리오를 지원하기 위해 선택 사항입니다:- Teleport 클러스터의 프록시 URL을 사용하도록 구성된 AWS IAM OIDC 공급자가 이미 AWS 계정에 있는 경우. AWS는 고유 URL당 하나의 AWS IAM OIDC 공급자만 허용하므로, 동일한 Teleport 클러스터에 대해 다른 공급자를 이미 관리하고 있다면 이 모듈에서 또 다른 공급자를 생성할 수 없습니다.
- Teleport 클러스터의 프록시 URL에 접근할 수 없어 AWS IAM OIDC 페더레이션이 불가능한 경우. 이 경우 Teleport 검색 서비스 인스턴스에 대한 AWS IAM 역할 자격 증명을 구성하고
discovery_service_iam_credential_source를 해당 역할을 신뢰하도록 설정해야 합니다.
- AWS 리소스 검색을 위해 Teleport를 구성하는 Teleport
discovery_config클러스터 리소스. - AWS OIDC를 위한 Teleport
integration클러스터 리소스. - Teleport 노드가 AWS IAM 자격 증명을 사용하여 클러스터에 참가할 수 있도록 하는 Teleport
token클러스터 리소스.
사전 요구 사항#
사용법#
module "aws_discovery" {
source = "terraform.releases.teleport.dev/teleport/discovery/aws"
# Teleport 클러스터 공개 프록시 주소 - host:port 형식이 필요합니다.
teleport_proxy_public_addr = "example.teleport.sh:443"
# 이 검색 그룹의 Teleport 검색 서비스 인스턴스가 AWS 리소스를 검색하도록 구성됩니다.
# "cloud-discovery-group"은 Teleport Cloud 클러스터에서 실행 중인 검색 서비스 인스턴스의 그룹 이름입니다.
teleport_discovery_group_name = "cloud-discovery-group"
# 모듈에서 생성된 AWS 리소스에 추가 태그 적용
apply_aws_tags = {
Terraform = "true"
Env = "dev"
}
# AWS 태그 "origin=example"이 있는 EC2 인스턴스 매칭
match_aws_resource_types = ["ec2"]
match_aws_tags = {
origin = ["example"]
}
}
도움받는 방법#
문제가 있으면 GitHub 토론을 확인하세요.
이 코드 관련 버그는 이슈 열기를 통해 보고해 주세요.
요구 사항#
| 이름 | 버전 |
|---|---|
| terraform | >= 1.5.7 |
| aws | >= 5.0 |
| http | >= 3.0 |
| teleport | >= 18.5.1 |
| tls | >= 4.0 |
공급자 (Providers)#
| 이름 | 버전 |
|---|---|
| aws | >= 5.0 |
| http | >= 3.0 |
| teleport | >= 18.5.1 |
| tls | >= 4.0 |
모듈 (Modules)#
없음.
리소스 (Resources)#
| 이름 | 타입 |
|---|---|
| aws_iam_openid_connect_provider.teleport | 리소스 |
| aws_iam_policy.teleport_discovery_service | 리소스 |
| aws_iam_role.teleport_discovery_service | 리소스 |
| aws_iam_role_policy_attachment.teleport_discovery_service | 리소스 |
| teleport_discovery_config.aws | 리소스 |
| teleport_integration.aws_oidc | 리소스 |
| teleport_provision_token.aws_iam | 리소스 |
| aws_caller_identity.this | 데이터 소스 |
| aws_iam_policy_document.teleport_discovery_service_iam_role_trust | 데이터 소스 |
| aws_iam_policy_document.teleport_discovery_service_single_account | 데이터 소스 |
| aws_partition.this | 데이터 소스 |
| http_http.teleport_ping | 데이터 소스 |
| tls_certificate.teleport_proxy | 데이터 소스 |
입력 (Inputs)#
| 이름 | 설명 | 타입 | 기본값 | 필수 여부 |
|---|---|---|---|---|
| apply_aws_tags | 생성된 모든 AWS 리소스에 적용할 추가 AWS 태그. | map(string) |
{} |
아니오 |
| apply_teleport_resource_labels | 생성된 모든 Teleport 리소스에 적용할 추가 Teleport 리소스 레이블. | map(string) |
{} |
아니오 |
| aws_iam_policy_document | AWS 리소스 검색을 위한 AWS IAM 역할에 연결된 AWS IAM 정책 문서 재정의. | string |
"" |
아니오 |
| aws_iam_policy_name | 검색을 위한 AWS IAM 정책 이름. | string |
"teleport-discovery" |
아니오 |
| aws_iam_policy_use_name_prefix | AWS IAM 정책 이름(aws_iam_policy_name)을 접두사로 사용할지 여부를 결정합니다. |
bool |
true |
아니오 |
| aws_iam_role_name | 검색을 위한 AWS IAM 역할 이름. | string |
"teleport-discovery" |
아니오 |
| aws_iam_role_use_name_prefix | AWS IAM 역할 이름(aws_iam_role_name)을 접두사로 사용할지 여부를 결정합니다. |
bool |
true |
아니오 |
| create | 모든 리소스 생성 토글. | bool |
true |
아니오 |
| create_aws_iam_openid_connect_provider | AWS IAM OIDC 공급자 생성 토글. false이고 OIDC를 사용하는 경우, AWS IAM OIDC 공급자가 이미 존재해야 합니다. | bool |
true |
아니오 |
| discovery_service_iam_credential_source | Teleport 검색 서비스 인스턴스의 AWS 자격 증명 소스를 구성합니다. 기본값은 AWS OIDC 통합을 사용합니다. | object({ use_oidc_integration = optional(bool) trust_role = optional(object({ role_arn = string external_id = optional(string, "") })) }) |
{ "trust_role": null, "use_oidc_integration": true } |
아니오 |
| match_aws_regions | 검색할 AWS 리전. 기본값은 모든 AWS 리전을 매칭합니다. | list(string) |
[ "*" ] |
아니오 |
| match_aws_resource_types | Teleport로 리소스 검색 시 매칭할 AWS 리소스 유형. 유효한 값: ec2. |
list(string) |
n/a | 예 |
| match_aws_tags | Teleport로 리소스 검색 시 매칭할 AWS 리소스 태그. 기본값은 검색된 모든 AWS 리소스를 매칭합니다. | map(list(string)) |
{ "*": [ "*" ] } |
아니오 |
| teleport_discovery_config_name | teleport_discovery_config 리소스 이름. |
string |
"discovery" |
아니오 |
| teleport_discovery_config_use_name_prefix | Teleport 검색 구성 이름(teleport_discovery_config_name)을 접두사로 사용할지 여부를 결정합니다. |
bool |
true |
아니오 |
| teleport_discovery_group_name | 사용할 Teleport 검색 그룹. 검색 구성이 적용되려면 이 이름이 최소 하나의 Teleport 검색 서비스 인스턴스의 구성된 discovery_group과 일치해야 합니다. Teleport Cloud 클러스터의 경우 "cloud-discovery-group"을 사용합니다. |
string |
n/a | 예 |
| teleport_integration_name | teleport_integration 리소스 이름. |
string |
"discovery" |
아니오 |
| teleport_integration_use_name_prefix | Teleport 통합 이름(teleport_integration_name)을 접두사로 사용할지 여부를 결정합니다. |
bool |
true |
아니오 |
| teleport_provision_token_name | teleport_provision_token 리소스 이름. |
string |
"discovery" |
아니오 |
| teleport_provision_token_use_name_prefix | Teleport 프로비전 토큰 이름(teleport_provision_token_name)을 접두사로 사용할지 여부를 결정합니다. |
bool |
true |
아니오 |
| teleport_proxy_public_addr | Teleport 클러스터 프록시 공개 주소 host:port. |
string |
n/a | 예 |
출력 (Outputs)#
| 이름 | 설명 |
|---|---|
| aws_oidc_provider_arn | Teleport 검색 서비스가 OIDC를 사용하여 AWS IAM 역할을 맡을 수 있도록 하는 AWS OpenID Connect (OIDC) 공급자의 AWS 리소스 이름 (ARN). |
| teleport_discovery_config_name | Teleport 동적 discovery_config의 이름. 구성 세부 정보는 tctl get discovery_config/<name>으로 확인할 수 있습니다. Teleport 검색 서비스 인스턴스는 discovery_config와 동일한 검색 그룹에 있는 경우 이 discovery_config를 사용합니다. |
| teleport_discovery_service_iam_policy_arn | Teleport가 AWS에서 리소스를 검색하는 데 필요한 권한을 부여하는 AWS IAM 정책의 AWS 리소스 이름 (ARN). |
| teleport_discovery_service_iam_role_arn | Teleport 검색 서비스가 맡을 AWS IAM 역할의 AWS 리소스 이름 (ARN). |
| teleport_integration_name | Teleport integration 리소스 이름. 통합 리소스는 Teleport 검색 서비스 인스턴스가 AWS OIDC 페더레이션을 사용하여 검색을 위한 AWS IAM 역할을 맡도록 구성합니다. 통합 세부 정보는 tctl get integrations/<name>으로 확인하거나 Teleport 웹 UI의 '제로 트러스트 접근' > '통합'에서 볼 수 있습니다. |
| teleport_provision_token_name | Teleport 노드가 AWS IAM 자격 증명을 사용하여 Teleport 클러스터에 참가할 수 있도록 하는 Teleport 프로비전 token의 이름. 토큰 세부 정보는 tctl get token/<name>으로 확인할 수 있습니다. |
