diff --git a/Access_Controls-Applications-rdp.tf b/Access_Controls-Applications-rdp.tf index 1ce3383..4758988 100644 --- a/Access_Controls-Applications-rdp.tf +++ b/Access_Controls-Applications-rdp.tf @@ -91,8 +91,12 @@ resource "cloudflare_zero_trust_access_application" "cloudflare_aws_app_rdp_doma # 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. +# 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 @@ -104,8 +108,11 @@ resource "cloudflare_zero_trust_access_infrastructure_target" "gcp_rdp_target" { } } +# ------------------------------------------------------ # 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. +# 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 diff --git a/Access_Controls-Applications-self_hosted.tf b/Access_Controls-Applications-self_hosted.tf index d867de5..4fae3ab 100644 --- a/Access_Controls-Applications-self_hosted.tf +++ b/Access_Controls-Applications-self_hosted.tf @@ -3,10 +3,15 @@ # ============================================================================= #====================================================== -# INFRASTRUCTURE Application: Test Home Network Access +# APPLICATION SELF-HOSTED : Accès réseau privé (Home Network Access) #====================================================== -# +# ------------------------------------------------------ +# Déclaration d’une application Self-Hosted utilisée pour accéder à une +# ressource interne du réseau domestique. Cette application est publiée via Cloudflare +# et protégée par Zero Trust. Le domaine défini permet d’accéder à l’application +# via une URL publique, mais l’authentification Cloudflare reste obligatoire +# ------------------------------------------------------ resource "cloudflare_zero_trust_access_application" "zero_trust_access_application" { account_id = local.cloudflare_account_id @@ -17,12 +22,17 @@ resource "cloudflare_zero_trust_access_application" "zero_trust_access_applicati skip_interstitial = true tags = [cloudflare_zero_trust_access_tag.tags["engineers"].name] +# Dépend de la création des tags pour assurer qu'ils existent avant l'association depends_on = [ cloudflare_zero_trust_access_tag.tags ] } -# +# ------------------------------------------------------ +# Extraction des informations de l’application Self-hosted créée ci-dessus. +# Cela permet de récupérer dynamiquement certaines valeurs internes (ID, etc.) +# utiles dans d’autres ressources Terraform. +# ------------------------------------------------------ data "cloudflare_zero_trust_access_application" "zero_trust_access_application" { account_id = local.cloudflare_account_id @@ -30,10 +40,14 @@ data "cloudflare_zero_trust_access_application" "zero_trust_access_application" } #====================================================== -# SELF-HOSTED APP: Competition App +# APPLICATION SELF-HOSTED : Application de Compétition #====================================================== -# Creating the Self-hosted Application for Competition web application +# ------------------------------------------------------ +# Création de l’application web de compétition protégée par Cloudflare Zero Trust. +# Cette application est hébergée sur un domaine public mais son accès est +# strictement contrôlé via authentification (OIDC) et politiques d’accès. +# ------------------------------------------------------ resource "cloudflare_zero_trust_access_application" "cloudflare_app_web_competition" { account_id = local.cloudflare_account_id @@ -46,27 +60,33 @@ resource "cloudflare_zero_trust_access_application" "cloudflare_app_web_competit custom_deny_url = "https://denied.tips-of-mine.org/" custom_non_identity_deny_url = "https://denied.tips-of-mine.org/" +# Destination publique vers laquelle Cloudflare redirige les requêtes destinations = [{ type = "public" uri = var.cloudflare_aws_subdomain_web_sensitive }] +# Autorisation uniquement via Authentik (OIDC) allowed_idps = [ cloudflare_zero_trust_access_identity_provider.authentik_oidc.id, ] - auto_redirect_to_identity = true - allow_authenticate_via_warp = false + auto_redirect_to_identity = true # Redirection immédiate vers Authentik + allow_authenticate_via_warp = false # Interdit l’accès via WARP (client Zero Trust) +# Politique de sécurité spécifique à cette application (définie dans un autre fichier) policies = [{ id = cloudflare_zero_trust_access_policy.policies["competition_web_app"].id }] } #====================================================== -# SELF-HOSTED APP: Macharpe Intranet +# APPLICATION SELF-HOSTED : Intranet Macharpe #====================================================== -# Creating the Self-hosted Application for Administration web application +# ------------------------------------------------------ +# Création de l’application web Intranet, utilisée pour l’administration interne. +# Accessible via un domaine public mais pleinement sécurisée via Zero Trust. +# ------------------------------------------------------ resource "cloudflare_zero_trust_access_application" "cloudflare_app_web_intranet" { account_id = local.cloudflare_account_id @@ -79,17 +99,20 @@ resource "cloudflare_zero_trust_access_application" "cloudflare_app_web_intranet custom_deny_url = "https://denied.tips-of-mine.org/" custom_non_identity_deny_url = "https://denied.tips-of-mine.org/" +# Redirection vers le domaine public hébergeant l’intranet destinations = [{ type = "public" uri = var.cloudflare_aws_subdomain_web }] +# Authentification obligatoire via Authentik (OIDC) allowed_idps = [ cloudflare_zero_trust_access_identity_provider.authentik_oidc.id, ] - auto_redirect_to_identity = true - allow_authenticate_via_warp = false + auto_redirect_to_identity = true # Redirection immédiate vers Authentik + allow_authenticate_via_warp = false # Interdit l’accès via WARP (client Zero Trust) +# Politique spécifique définissant qui peut accéder à l’intranet policies = [{ id = cloudflare_zero_trust_access_policy.policies["intranet_web_app"].id }] diff --git a/Networks-Routes-Virtual_Networks.tf b/Networks-Routes-Virtual_Networks.tf index 57d3835..46c4e91 100644 --- a/Networks-Routes-Virtual_Networks.tf +++ b/Networks-Routes-Virtual_Networks.tf @@ -8,7 +8,7 @@ resource "cloudflare_zero_trust_tunnel_cloudflared_virtual_network" "zero_trust_ name = "vpc-aws" comment = "AWS VPC for data science" - is_default = false +# is_default = false is_default_network = false } diff --git a/Access_Controls-Applications.tf b/_Access_Controls-Applications.tf.old similarity index 100% rename from Access_Controls-Applications.tf rename to _Access_Controls-Applications.tf.old diff --git a/main.tf b/main.tf index 072a253..4f986af 100644 --- a/main.tf +++ b/main.tf @@ -16,7 +16,7 @@ data "vault_generic_secret" "authentik" { locals { # Secrets Cloudflare depuis Vault - cloudflare_api_token = data.vault_generic_secret.cloudflare.data["api_token"] + cloudflare_api_token = data.vault_generic_secret.cloudflare.data["api_token"] cloudflare_account_id = data.vault_generic_secret.cloudflare.data["account_id"] cloudflare_zone_id = data.vault_generic_secret.cloudflare.data["zone_id_org"] cloudflare_email = data.vault_generic_secret.cloudflare.data["email"]