diff --git a/Insights-Digital_Experience-Tests.tf b/Insights-Digital_Experience-Tests.tf index 713f4ac..ef8af24 100644 --- a/Insights-Digital_Experience-Tests.tf +++ b/Insights-Digital_Experience-Tests.tf @@ -17,6 +17,10 @@ # Test HTTP : l'application Home Assistant répond #====================================================== resource "cloudflare_zero_trust_dex_test" "home_app_http" { + # Gaté : l'API DEX exige la permission "Digital Experience Monitoring : + # Edit" sur le token API Cloudflare (403 sinon). Voir ACTIONS_EXTERNES.md, + # puis dex_enabled = true dans le tfvars. + count = var.dex_enabled ? 1 : 0 account_id = local.cloudflare_account_id name = "HTTP home application" @@ -35,6 +39,7 @@ resource "cloudflare_zero_trust_dex_test" "home_app_http" { # Test traceroute : chemin vers le réseau du site principal #====================================================== resource "cloudflare_zero_trust_dex_test" "home_network_traceroute" { + count = var.dex_enabled ? 1 : 0 account_id = local.cloudflare_account_id name = "Traceroute reseau home" diff --git a/README.md b/README.md index 3497bf9..6327605 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,8 @@ Les deux alimentent les mêmes concepts : rule groups, politiques réutilisables | `Account` | `Zero Trust` | **Edit** | **Required** | | `Account` | `Access: Apps and Policies` | **Edit** | **Required** | | `Account` | `Access: Service Tokens` | **Edit** | **Required** | +| `Account` | `Digital Experience Monitoring` | **Edit** | For `dex_enabled = true` | +| `Account` | `Zero Trust: DLP` | **Edit** | For `dlp_enabled = true` (+ abonnement DLP) | | `Account` | `Zero Trust: PII` | **Read** | **Recommended** | | `Account` | `Account Settings` | **Read** | **Recommended** | | `Zone` | `DNS` | **Edit** | **Required** | diff --git a/Traffic_Policies-Firewall_Policies-DLP.tf b/Traffic_Policies-Firewall_Policies-DLP.tf index 2aaf6f3..5feade3 100644 --- a/Traffic_Policies-Firewall_Policies-DLP.tf +++ b/Traffic_Policies-Firewall_Policies-DLP.tf @@ -20,6 +20,10 @@ # Profil DLP personnalisé : IBAN français #====================================================== resource "cloudflare_zero_trust_dlp_custom_profile" "iban_fr" { + # Gaté : la création même du profil exige l'abonnement DLP sur le compte + # (403 Forbidden code 3314 sinon). dlp_enabled = true une fois la licence + # en place — voir ACTIONS_EXTERNES.md. + count = var.dlp_enabled ? 1 : 0 account_id = local.cloudflare_account_id name = "IBAN francais" @@ -45,15 +49,16 @@ resource "cloudflare_zero_trust_dlp_custom_profile" "iban_fr" { # Politique Gateway : bloquer l'upload de données matchant le profil #====================================================== resource "cloudflare_zero_trust_gateway_policy" "dlp_block_iban_upload" { + count = var.dlp_enabled ? 1 : 0 account_id = local.cloudflare_account_id name = "HTTP - Block: DLP IBAN upload" description = "Bloque les envois HTTP contenant un IBAN francais (profil DLP)" - enabled = false # ACTION EXTERNE : activer une fois la licence DLP en place + enabled = true action = "block" precedence = 25200 filters = ["http"] - traffic = "any(dlp.profiles[*] in {\"${cloudflare_zero_trust_dlp_custom_profile.iban_fr.id}\"})" + traffic = "any(dlp.profiles[*] in {\"${cloudflare_zero_trust_dlp_custom_profile.iban_fr[0].id}\"})" rule_settings = { block_page_enabled = true diff --git a/Traffic_Policies-Traffic_Settings-Policy_Setting.tf b/Traffic_Policies-Traffic_Settings-Policy_Setting.tf index 819238b..2e76da8 100644 --- a/Traffic_Policies-Traffic_Settings-Policy_Setting.tf +++ b/Traffic_Policies-Traffic_Settings-Policy_Setting.tf @@ -42,10 +42,14 @@ resource "cloudflare_zero_trust_gateway_settings" "zero_trust_gateway_settings" # url_browser_isolation_enabled = true # } - # custom_certificate = { - # enabled = true - # id = "d1b364c5-1311-466e-a194-f0e943e0799f" - # } + # CORRECTIF : tls_decrypt exige un certificat désigné. On lie le + # certificat Gateway géré par Terraform + # (Traffic_Policies-Traffic_Settings-Certificates.tf) — sans ce bloc, + # l'API refuse la configuration (erreur 2211 "TLS decryption cannot be + # enabled without a certificate"). + certificate = { + id = cloudflare_zero_trust_gateway_certificate.zero_trust_gateway_certificate.id + } extended_email_matching = { enabled = true diff --git a/variables.auto.tfvars b/variables.auto.tfvars index 4a2d5d6..994ca3b 100644 --- a/variables.auto.tfvars +++ b/variables.auto.tfvars @@ -122,6 +122,14 @@ remote_sites = { } } +# BRIQUE DEX : passer à true APRÈS avoir ajouté la permission +# "Digital Experience Monitoring : Edit" au token API Cloudflare (403 sinon) +dex_enabled = false + +# BRIQUE DLP : passer à true une fois l'abonnement DLP actif sur le compte +# (la création du profil renvoie 403 sans la licence) +dlp_enabled = false + # BRIQUE LOGPUSH : renseigner la destination puis passer à true logpush_enabled = false logpush_destination_conf = "" diff --git a/variables.tf b/variables.tf index f2d61c3..285f361 100644 --- a/variables.tf +++ b/variables.tf @@ -709,6 +709,26 @@ variable "cloudflare_tunnel_warp_connector_site_b_id" { default = "" } +#====================================================== +# BRIQUE DEX +#====================================================== + +variable "dex_enabled" { + description = "Activer les tests DEX (nécessite la permission 'Digital Experience Monitoring : Edit' sur le token API Cloudflare)" + type = bool + default = false +} + +#====================================================== +# BRIQUE DLP +#====================================================== + +variable "dlp_enabled" { + description = "Activer la brique DLP (nécessite l'abonnement DLP sur le compte Cloudflare)" + type = bool + default = false +} + #====================================================== # BRIQUE LOGPUSH #======================================================