This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
# =============================================================================
|
# =============================================================================
|
||||||
# CLOUDFLARE : Access Controls : Applications
|
# CLOUDFLARE : Access Controls : Applications > Infrastructure
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
# ======================================================
|
# ======================================================
|
||||||
|
|||||||
@@ -1,12 +1,17 @@
|
|||||||
# =============================================================================
|
# =============================================================================
|
||||||
# CLOUDFLARE : Access Controls : Applications
|
# CLOUDFLARE : Access Controls : Applications > RDP
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
#======================================================
|
#======================================================
|
||||||
# SELF-HOSTED APP: Domain Controller
|
# APPLICATION SELF-HOSTED : Contrôleur de Domaine (AWS)
|
||||||
#======================================================
|
#======================================================
|
||||||
|
|
||||||
# Creating the Target
|
# ------------------------------------------------------
|
||||||
|
# Création de la cible RDP côté AWS
|
||||||
|
# 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" "aws_rdp_target" {
|
resource "cloudflare_zero_trust_access_infrastructure_target" "aws_rdp_target" {
|
||||||
account_id = local.cloudflare_account_id
|
account_id = local.cloudflare_account_id
|
||||||
|
|
||||||
@@ -18,23 +23,41 @@ resource "cloudflare_zero_trust_access_infrastructure_target" "aws_rdp_target" {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Domain Controller Browser-Rendered RDP Application
|
# ------------------------------------------------------
|
||||||
|
# Application RDP rendue dans le navigateur pour le Contrôleur de Domaine AWS
|
||||||
|
# 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_aws_app_rdp_domain" {
|
resource "cloudflare_zero_trust_access_application" "cloudflare_aws_app_rdp_domain" {
|
||||||
account_id = local.cloudflare_account_id
|
account_id = local.cloudflare_account_id
|
||||||
|
|
||||||
|
# Type d’application (RDP, SSH, VNC, etc.)
|
||||||
type = "rdp"
|
type = "rdp"
|
||||||
|
|
||||||
|
# Nom d’affichage de l’application dans le launcher Cloudflare
|
||||||
name = var.cloudflare_aws_browser_rdp_app_name
|
name = var.cloudflare_aws_browser_rdp_app_name
|
||||||
|
|
||||||
|
# Afficher l’application dans l’App Launcher Cloudflare
|
||||||
app_launcher_visible = true
|
app_launcher_visible = true
|
||||||
|
|
||||||
|
# Icône personnalisée visible par les utilisateurs
|
||||||
logo_url = "https://www.kevinsubileau.fr/wp-content/uploads/2016/05/RDP_icon.png"
|
logo_url = "https://www.kevinsubileau.fr/wp-content/uploads/2016/05/RDP_icon.png"
|
||||||
|
|
||||||
|
# Attribution d’un tag pour organiser les applications (ex: équipe d’ingénieurs)
|
||||||
tags = [cloudflare_zero_trust_access_tag.tags["engineers"].name]
|
tags = [cloudflare_zero_trust_access_tag.tags["engineers"].name]
|
||||||
|
|
||||||
|
# Durée de session (0s = durée illimitée tant que l’authentification reste valide)
|
||||||
session_duration = "0s"
|
session_duration = "0s"
|
||||||
|
|
||||||
|
# URL personnalisée affichée en cas de refus d’accès
|
||||||
custom_deny_url = "https://denied.tips-of-mine.org/"
|
custom_deny_url = "https://denied.tips-of-mine.org/"
|
||||||
custom_non_identity_deny_url = "https://denied.tips-of-mine.org/"
|
custom_non_identity_deny_url = "https://denied.tips-of-mine.org/"
|
||||||
|
|
||||||
# Public hostname for browser rendering
|
# Nom de domaine public utilisé pour rendre l’interface RDP accessible via navigateur
|
||||||
domain = var.cloudflare_aws_subdomain_rdp
|
domain = var.cloudflare_aws_subdomain_rdp
|
||||||
|
|
||||||
# Target criteria - references the existing gcp_rdp_target
|
# Critères de correspondance pour relier cette application à la cible RDP AWS
|
||||||
|
# Indique quel protocole et port utiliser, ainsi que la cible.
|
||||||
target_criteria = [{
|
target_criteria = [{
|
||||||
port = 3389
|
port = 3389
|
||||||
protocol = "RDP"
|
protocol = "RDP"
|
||||||
@@ -43,7 +66,8 @@ resource "cloudflare_zero_trust_access_application" "cloudflare_aws_app_rdp_doma
|
|||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
|
|
||||||
# Identity provider settings
|
# Paramètres relatifs au fournisseur d'identité (IdP)
|
||||||
|
# Ici, Authentik via un connecteur OIDC.
|
||||||
allowed_idps = [
|
allowed_idps = [
|
||||||
cloudflare_zero_trust_access_identity_provider.authentik_oidc.id,
|
cloudflare_zero_trust_access_identity_provider.authentik_oidc.id,
|
||||||
]
|
]
|
||||||
@@ -52,22 +76,23 @@ resource "cloudflare_zero_trust_access_application" "cloudflare_aws_app_rdp_doma
|
|||||||
http_only_cookie_attribute = false
|
http_only_cookie_attribute = false
|
||||||
options_preflight_bypass = false
|
options_preflight_bypass = false
|
||||||
|
|
||||||
# Reference the policy from cloudflare-app-policies.tf
|
# Référence à la politique d’accès définie dans Access_Controls-Policies-Reusable_Policies.tf
|
||||||
policies = [{
|
policies = [{
|
||||||
id = cloudflare_zero_trust_access_policy.policies["domain_controller"].id
|
id = cloudflare_zero_trust_access_policy.policies["domain_controller"].id
|
||||||
}]
|
}]
|
||||||
|
|
||||||
# Depends on the existing target
|
# Déclare explicitement que la création dépend de la cible RDP
|
||||||
depends_on = [
|
depends_on = [
|
||||||
cloudflare_zero_trust_access_infrastructure_target.aws_rdp_target
|
cloudflare_zero_trust_access_infrastructure_target.aws_rdp_target
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
#======================================================
|
#======================================================
|
||||||
# SELF-HOSTED APP: Domain Controller
|
# APPLICATION SELF-HOSTED : Contrôleur de Domaine (GCP)
|
||||||
#======================================================
|
#======================================================
|
||||||
|
|
||||||
# Creating the Target
|
# Création de la cible RDP côté GCP
|
||||||
|
# Identique au bloc AWS mais appliqué à une VM Windows hébergée dans GCP.
|
||||||
resource "cloudflare_zero_trust_access_infrastructure_target" "gcp_rdp_target" {
|
resource "cloudflare_zero_trust_access_infrastructure_target" "gcp_rdp_target" {
|
||||||
account_id = local.cloudflare_account_id
|
account_id = local.cloudflare_account_id
|
||||||
|
|
||||||
@@ -79,23 +104,38 @@ resource "cloudflare_zero_trust_access_infrastructure_target" "gcp_rdp_target" {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Domain Controller Browser-Rendered RDP Application
|
# 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.
|
||||||
resource "cloudflare_zero_trust_access_application" "cloudflare_gcp_app_rdp_domain" {
|
resource "cloudflare_zero_trust_access_application" "cloudflare_gcp_app_rdp_domain" {
|
||||||
account_id = local.cloudflare_account_id
|
account_id = local.cloudflare_account_id
|
||||||
|
|
||||||
|
# Type d’application (RDP, SSH, VNC, etc.)
|
||||||
type = "rdp"
|
type = "rdp"
|
||||||
|
|
||||||
|
# Nom d’affichage de l’application dans le launcher Cloudflare
|
||||||
name = var.cloudflare_gcp_browser_rdp_app_name
|
name = var.cloudflare_gcp_browser_rdp_app_name
|
||||||
|
|
||||||
|
# Afficher l’application dans l’App Launcher Cloudflare
|
||||||
app_launcher_visible = true
|
app_launcher_visible = true
|
||||||
|
|
||||||
|
# Icône personnalisée visible par les utilisateurs
|
||||||
logo_url = "https://www.kevinsubileau.fr/wp-content/uploads/2016/05/RDP_icon.png"
|
logo_url = "https://www.kevinsubileau.fr/wp-content/uploads/2016/05/RDP_icon.png"
|
||||||
|
|
||||||
|
# Attribution d’un tag pour organiser les applications (ex: équipe d’ingénieurs)
|
||||||
tags = [cloudflare_zero_trust_access_tag.tags["engineers"].name]
|
tags = [cloudflare_zero_trust_access_tag.tags["engineers"].name]
|
||||||
|
|
||||||
|
# Durée de session (0s = durée illimitée tant que l’authentification reste valide)
|
||||||
session_duration = "0s"
|
session_duration = "0s"
|
||||||
|
|
||||||
|
# URL personnalisée affichée en cas de refus d’accès
|
||||||
custom_deny_url = "https://denied.tips-of-mine.org/"
|
custom_deny_url = "https://denied.tips-of-mine.org/"
|
||||||
custom_non_identity_deny_url = "https://denied.tips-of-mine.org/"
|
custom_non_identity_deny_url = "https://denied.tips-of-mine.org/"
|
||||||
|
|
||||||
# Public hostname for browser rendering
|
# Nom de domaine public utilisé pour rendre l’interface RDP accessible via navigateur
|
||||||
domain = var.cloudflare_gcp_subdomain_rdp
|
domain = var.cloudflare_gcp_subdomain_rdp
|
||||||
|
|
||||||
# Target criteria - references the existing gcp_rdp_target
|
# Critères de correspondance pour relier cette application à la cible RDP AWS
|
||||||
|
# Indique quel protocole et port utiliser, ainsi que la cible.
|
||||||
target_criteria = [{
|
target_criteria = [{
|
||||||
port = 3389
|
port = 3389
|
||||||
protocol = "RDP"
|
protocol = "RDP"
|
||||||
@@ -104,7 +144,8 @@ resource "cloudflare_zero_trust_access_application" "cloudflare_gcp_app_rdp_doma
|
|||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
|
|
||||||
# Identity provider settings
|
# Paramètres relatifs au fournisseur d'identité (IdP)
|
||||||
|
# Ici, Authentik via un connecteur OIDC.
|
||||||
allowed_idps = [
|
allowed_idps = [
|
||||||
cloudflare_zero_trust_access_identity_provider.authentik_oidc.id,
|
cloudflare_zero_trust_access_identity_provider.authentik_oidc.id,
|
||||||
]
|
]
|
||||||
@@ -113,12 +154,12 @@ resource "cloudflare_zero_trust_access_application" "cloudflare_gcp_app_rdp_doma
|
|||||||
http_only_cookie_attribute = false
|
http_only_cookie_attribute = false
|
||||||
options_preflight_bypass = false
|
options_preflight_bypass = false
|
||||||
|
|
||||||
# Reference the policy from cloudflare-app-policies.tf
|
# Référence à la politique d’accès définie dans Access_Controls-Policies-Reusable_Policies.tf
|
||||||
policies = [{
|
policies = [{
|
||||||
id = cloudflare_zero_trust_access_policy.policies["domain_controller"].id
|
id = cloudflare_zero_trust_access_policy.policies["domain_controller"].id
|
||||||
}]
|
}]
|
||||||
|
|
||||||
# Depends on the existing target
|
# Déclare explicitement que la création dépend de la cible RDP
|
||||||
depends_on = [
|
depends_on = [
|
||||||
cloudflare_zero_trust_access_infrastructure_target.gcp_rdp_target
|
cloudflare_zero_trust_access_infrastructure_target.gcp_rdp_target
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
# =============================================================================
|
# =============================================================================
|
||||||
# CLOUDFLARE : Access Controls : Applications
|
# CLOUDFLARE : Access Controls : Applications > self_hosted
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
#======================================================
|
#======================================================
|
||||||
# INFRASTRUCTURE Application: Test Home Network Access
|
# INFRASTRUCTURE Application: Test Home Network Access
|
||||||
#======================================================
|
#======================================================
|
||||||
|
~
|
||||||
|
#
|
||||||
resource "cloudflare_zero_trust_access_application" "zero_trust_access_application" {
|
resource "cloudflare_zero_trust_access_application" "zero_trust_access_application" {
|
||||||
account_id = local.cloudflare_account_id
|
account_id = local.cloudflare_account_id
|
||||||
|
|
||||||
@@ -15,13 +16,13 @@ resource "cloudflare_zero_trust_access_application" "zero_trust_access_applicati
|
|||||||
session_duration = "24h"
|
session_duration = "24h"
|
||||||
skip_interstitial = true
|
skip_interstitial = true
|
||||||
tags = [cloudflare_zero_trust_access_tag.tags["engineers"].name]
|
tags = [cloudflare_zero_trust_access_tag.tags["engineers"].name]
|
||||||
# tags = [for tag in cloudflare_zero_trust_access_tag.tags : tag.name]
|
|
||||||
|
|
||||||
depends_on = [
|
depends_on = [
|
||||||
cloudflare_zero_trust_access_tag.tags
|
cloudflare_zero_trust_access_tag.tags
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
data "cloudflare_zero_trust_access_application" "zero_trust_access_application" {
|
data "cloudflare_zero_trust_access_application" "zero_trust_access_application" {
|
||||||
account_id = local.cloudflare_account_id
|
account_id = local.cloudflare_account_id
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user