# ============================================================================= # CLOUDFLARE : Access Controls : Applications > self_hosted # ============================================================================= #====================================================== # 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 type = "self_hosted" name = "Home Network Access Application" domain = "home.tips-of-mine.org" session_duration = "24h" 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 app_id = cloudflare_zero_trust_access_application.zero_trust_access_application.id } #====================================================== # APPLICATION SELF-HOSTED : Application de Compétition #====================================================== # ------------------------------------------------------ # 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 type = "self_hosted" name = var.cloudflare_sensitive_web_app_name app_launcher_visible = true logo_url = "https://img.freepik.com/free-vector/trophy_78370-345.jpg" tags = [cloudflare_zero_trust_access_tag.tags["engineers"].name] session_duration = "0s" 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 # 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 }] } #====================================================== # APPLICATION SELF-HOSTED : Intranet Macharpe #====================================================== # ------------------------------------------------------ # 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 type = "self_hosted" name = var.cloudflare_intranet_web_app_name app_launcher_visible = true logo_url = "https://raw.githubusercontent.com/uditkumar489/Icon-pack/master/Entrepreneur/digital-marketing/svg/computer-1.svg" tags = [cloudflare_zero_trust_access_tag.tags["engineers"].name] session_duration = "0s" 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 # 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 }] }