@@ -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: Compe tition 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
} ]