Files
terraform-cloudflare-tunnel…/Access_Controls-Applications-rdp.tf
hcornet 471024e022
Some checks failed
Terraform Apply / Terraform Apply (push) Failing after 7s
update file
2025-11-24 19:55:28 +01:00

166 lines
6.6 KiB
HCL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# =============================================================================
# CLOUDFLARE : Access Controls : Applications > RDP
# =============================================================================
#======================================================
# APPLICATION SELF-HOSTED : Contrôleur de Domaine (AWS)
#======================================================
# ------------------------------------------------------
# Création de la cible RDP côté AWS
# Cette ressource déclare un "infrastructure target" Cloudflare Zero Trust,
# permettant de définir une machine interne comme destination d'un accès RDP.
# Le nom dhôte et ladresse IP interne de la VM Windows sont fournis via les variables Terraform.
# ------------------------------------------------------
resource "cloudflare_zero_trust_access_infrastructure_target" "aws_rdp_target" {
account_id = local.cloudflare_account_id
hostname = var.cloudflare_aws_target_rdp_name
ip = {
ipv4 = {
ip_addr = var.aws_windows_vm_internal_ip
}
}
}
# ------------------------------------------------------
# Application RDP rendue dans le navigateur pour le Contrôleur de Domaine AWS
# Cette ressource crée l'application Zero Trust permettant laccès RDP via Cloudflare,
# directement dans le navigateur, sans client local. Elle sappuie sur la cible déclarée ci-dessus.
# ------------------------------------------------------
resource "cloudflare_zero_trust_access_application" "cloudflare_aws_app_rdp_domain" {
account_id = local.cloudflare_account_id
# Type dapplication (RDP, SSH, VNC, etc.)
type = "rdp"
# Nom daffichage de lapplication dans le launcher Cloudflare
name = var.cloudflare_aws_browser_rdp_app_name
# Afficher lapplication dans lApp Launcher Cloudflare
app_launcher_visible = true
# Icône personnalisée visible par les utilisateurs
logo_url = "https://www.kevinsubileau.fr/wp-content/uploads/2016/05/RDP_icon.png"
# Attribution dun tag pour organiser les applications (ex: équipe dingénieurs)
tags = [cloudflare_zero_trust_access_tag.tags["engineers"].name]
# Durée de session (0s = durée illimitée tant que lauthentification reste valide)
session_duration = "0s"
# URL personnalisée affichée en cas de refus daccès
custom_deny_url = "https://denied.tips-of-mine.org/"
custom_non_identity_deny_url = "https://denied.tips-of-mine.org/"
# Nom de domaine public utilisé pour rendre linterface RDP accessible via navigateur
domain = var.cloudflare_aws_subdomain_rdp
# Critères de correspondance pour relier cette application à la cible RDP AWS
# Indique quel protocole et port utiliser, ainsi que la cible.
target_criteria = [{
port = 3389
protocol = "RDP"
target_attributes = {
hostname = [var.cloudflare_aws_target_rdp_name] # This will be "Domain-Controller"
}
}]
# Paramètres relatifs au fournisseur d'identité (IdP)
# Ici, Authentik via un connecteur OIDC.
allowed_idps = [
cloudflare_zero_trust_access_identity_provider.authentik_oidc.id,
]
auto_redirect_to_identity = true
enable_binding_cookie = false
http_only_cookie_attribute = false
options_preflight_bypass = false
# Référence à la politique daccès définie dans Access_Controls-Policies-Reusable_Policies.tf
policies = [{
id = cloudflare_zero_trust_access_policy.policies["domain_controller"].id
}]
# Déclare explicitement que la création dépend de la cible RDP
depends_on = [
cloudflare_zero_trust_access_infrastructure_target.aws_rdp_target
]
}
#======================================================
# APPLICATION SELF-HOSTED : Contrôleur de Domaine (GCP)
#======================================================
# Création de la cible RDP côté GCP
# Identique au bloc AWS mais appliqué à une VM Windows hébergée dans GCP.
resource "cloudflare_zero_trust_access_infrastructure_target" "gcp_rdp_target" {
account_id = local.cloudflare_account_id
hostname = var.cloudflare_gcp_target_rdp_name
ip = {
ipv4 = {
ip_addr = var.gcp_windows_vm_internal_ip
}
}
}
# Application RDP rendue dans le navigateur pour le Contrôleur de Domaine GCP
# Permet l'accès RDP navigateur via Cloudflare Zero Trust pour la VM Windows dans GCP.
resource "cloudflare_zero_trust_access_application" "cloudflare_gcp_app_rdp_domain" {
account_id = local.cloudflare_account_id
# Type dapplication (RDP, SSH, VNC, etc.)
type = "rdp"
# Nom daffichage de lapplication dans le launcher Cloudflare
name = var.cloudflare_gcp_browser_rdp_app_name
# Afficher lapplication dans lApp Launcher Cloudflare
app_launcher_visible = true
# Icône personnalisée visible par les utilisateurs
logo_url = "https://www.kevinsubileau.fr/wp-content/uploads/2016/05/RDP_icon.png"
# Attribution dun tag pour organiser les applications (ex: équipe dingénieurs)
tags = [cloudflare_zero_trust_access_tag.tags["engineers"].name]
# Durée de session (0s = durée illimitée tant que lauthentification reste valide)
session_duration = "0s"
# URL personnalisée affichée en cas de refus daccès
custom_deny_url = "https://denied.tips-of-mine.org/"
custom_non_identity_deny_url = "https://denied.tips-of-mine.org/"
# Nom de domaine public utilisé pour rendre linterface RDP accessible via navigateur
domain = var.cloudflare_gcp_subdomain_rdp
# Critères de correspondance pour relier cette application à la cible RDP AWS
# Indique quel protocole et port utiliser, ainsi que la cible.
target_criteria = [{
port = 3389
protocol = "RDP"
target_attributes = {
hostname = [var.cloudflare_gcp_target_rdp_name] # This will be "Domain-Controller"
}
}]
# Paramètres relatifs au fournisseur d'identité (IdP)
# Ici, Authentik via un connecteur OIDC.
allowed_idps = [
cloudflare_zero_trust_access_identity_provider.authentik_oidc.id,
]
auto_redirect_to_identity = true
enable_binding_cookie = false
http_only_cookie_attribute = false
options_preflight_bypass = false
# Référence à la politique daccès définie dans Access_Controls-Policies-Reusable_Policies.tf
policies = [{
id = cloudflare_zero_trust_access_policy.policies["domain_controller"].id
}]
# Déclare explicitement que la création dépend de la cible RDP
depends_on = [
cloudflare_zero_trust_access_infrastructure_target.gcp_rdp_target
]
}