173 lines
7.1 KiB
HCL
173 lines
7.1 KiB
HCL
# =============================================================================
|
||
# 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 d’hôte et l’adresse 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 l’accès RDP via Cloudflare,
|
||
# directement dans le navigateur, sans client local. Elle s’appuie 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 d’application (RDP, SSH, VNC, etc.)
|
||
type = "rdp"
|
||
|
||
# Nom d’affichage de l’application dans le launcher Cloudflare
|
||
name = var.cloudflare_aws_browser_rdp_app_name
|
||
|
||
# Afficher l’application dans l’App 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 d’un tag pour organiser les applications (ex: équipe d’ingénieurs)
|
||
tags = [cloudflare_zero_trust_access_tag.tags["engineers"].name]
|
||
|
||
# Durée de session (0s = durée illimitée tant que l’authentification reste valide)
|
||
session_duration = "0s"
|
||
|
||
# URL personnalisée affichée en cas de refus d’accè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 l’interface 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 d’accè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
|
||
# 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 d’hôte et l’adresse IP interne de la VM Windows sont fournis via les variables Terraform.
|
||
# ------------------------------------------------------
|
||
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
|
||
# Cette ressource crée l'application Zero Trust permettant l’accès RDP via Cloudflare,
|
||
# directement dans le navigateur, sans client local. Elle s’appuie sur la cible déclarée ci-dessus.
|
||
# ------------------------------------------------------
|
||
resource "cloudflare_zero_trust_access_application" "cloudflare_gcp_app_rdp_domain" {
|
||
account_id = local.cloudflare_account_id
|
||
|
||
# Type d’application (RDP, SSH, VNC, etc.)
|
||
type = "rdp"
|
||
|
||
# Nom d’affichage de l’application dans le launcher Cloudflare
|
||
name = var.cloudflare_gcp_browser_rdp_app_name
|
||
|
||
# Afficher l’application dans l’App 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 d’un tag pour organiser les applications (ex: équipe d’ingénieurs)
|
||
tags = [cloudflare_zero_trust_access_tag.tags["engineers"].name]
|
||
|
||
# Durée de session (0s = durée illimitée tant que l’authentification reste valide)
|
||
session_duration = "0s"
|
||
|
||
# URL personnalisée affichée en cas de refus d’accè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 l’interface 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 d’accè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
|
||
]
|
||
} |