65 lines
2.2 KiB
Terraform
65 lines
2.2 KiB
Terraform
# =============================================================================
|
|
# CLOUDFLARE : Access Controls : Policies : Rule Groups (Azure Entra ID)
|
|
# =============================================================================
|
|
# Miroir Azure de la brique Authentik : mêmes concepts (rule groups +
|
|
# politiques réutilisables), mais alimentés par les groupes Entra ID.
|
|
# La brique est inerte tant que azure_idp_enabled = false ou que
|
|
# azure_admin_group_id est vide.
|
|
#
|
|
# ACTION EXTERNE : récupérer l'Object ID du groupe Entra ID à autoriser
|
|
# (Portail Azure > Entra ID > Groups > <groupe> > Object Id) et le renseigner
|
|
# dans azure_admin_group_id (variables.auto.tfvars).
|
|
# =============================================================================
|
|
|
|
locals {
|
|
azure_groups_enabled = var.azure_idp_enabled && var.azure_admin_group_id != ""
|
|
}
|
|
|
|
#==================================================
|
|
# Rule group : administrateurs Entra ID
|
|
#==================================================
|
|
resource "cloudflare_zero_trust_access_group" "azure_admins_rule_group" {
|
|
count = local.azure_groups_enabled ? 1 : 0
|
|
account_id = local.cloudflare_account_id
|
|
|
|
name = "GL_Users_Azure Administrators"
|
|
|
|
include = [{
|
|
azure_ad = {
|
|
id = var.azure_admin_group_id
|
|
identity_provider_id = cloudflare_zero_trust_access_identity_provider.azure_entra_id[0].id
|
|
}
|
|
}]
|
|
}
|
|
|
|
#==================================================
|
|
# Politique réutilisable : accès admin via Azure
|
|
# (équivalent Azure de allow_policie_it_admin de la brique Authentik)
|
|
#==================================================
|
|
resource "cloudflare_zero_trust_access_policy" "allow_policie_azure_admin" {
|
|
count = local.azure_groups_enabled ? 1 : 0
|
|
account_id = local.cloudflare_account_id
|
|
name = "Default Azure Admin"
|
|
decision = "allow"
|
|
session_duration = "6h"
|
|
|
|
include = [{
|
|
group = {
|
|
id = cloudflare_zero_trust_access_group.azure_admins_rule_group[0].id
|
|
}
|
|
}]
|
|
|
|
# Mêmes exigences de sécurité que la brique Authentik : MFA obligatoire
|
|
require = [{
|
|
auth_method = {
|
|
auth_method = "mfa"
|
|
}
|
|
}]
|
|
|
|
exclude = [{
|
|
auth_method = {
|
|
auth_method = "sms"
|
|
}
|
|
}]
|
|
}
|