Files
terraform-cloudflare-tunnel…/Access_Controls-Applications-self_hosted.tf
hcornet 40739b1cc3
All checks were successful
Terraform Apply / Terraform Apply (push) Successful in 4m36s
Update Domain List / auto-update (push) Successful in 10s
last update to day 24-11-25
2025-11-24 20:47:56 +01:00

120 lines
5.5 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 > self_hosted
# =============================================================================
#======================================================
# APPLICATION SELF-HOSTED : Accès réseau privé (Home Network Access)
#======================================================
# ------------------------------------------------------
# Déclaration dune 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 daccéder à lapplication
# via une URL publique, mais lauthentification 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 lapplication Self-hosted créée ci-dessus.
# Cela permet de récupérer dynamiquement certaines valeurs internes (ID, etc.)
# utiles dans dautres 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 lapplication 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 daccè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 laccè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 lapplication web Intranet, utilisée pour ladministration 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 lintranet
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 laccès via WARP (client Zero Trust)
# Politique spécifique définissant qui peut accéder à lintranet
policies = [{
id = cloudflare_zero_trust_access_policy.policies["intranet_web_app"].id
}]
}