last update to day 24-11-25
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
}]
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
2
main.tf
2
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"]
|
||||
|
||||
Reference in New Issue
Block a user