# ============================================================================= # CLOUDFLARE : Team & Resources : Devices : Enrollment permissions # ============================================================================= # BRIQUE AGENT WARP (1/2) : qui a le droit d'enrôler son poste ? # # L'"agent" Cloudflare installé sur les postes est le client WARP. Avant de # pouvoir rejoindre l'organisation Zero Trust (var.cloudflare_team_name), # l'utilisateur doit s'authentifier : cette application spéciale de type # "warp" définit les règles d'enrôlement. # # Parcours utilisateur : # 1. Installer le client WARP (https://one.one.one.one ou MDM) # 2. Préférences > Compte > "Login with Cloudflare Zero Trust" # 3. Saisir le nom d'équipe : var.cloudflare_team_name # 4. Authentification via Authentik (ou Azure si la brique est activée) # 5. Le poste applique alors le profil WARP correspondant # (Team_Resources-Devices-Device_profiles.tf) et les vérifications de # posture (Team_Resources-Devices-Device_posture.tf) # ============================================================================= resource "cloudflare_zero_trust_access_application" "warp_device_enrollment" { account_id = local.cloudflare_account_id # NOTE : pas de app_launcher_visible ici — cet attribut n'est autorisé que # pour les types self_hosted/ssh/vnc/rdp/saas/bookmark ; une app de type # "warp" n'apparaît de toute façon jamais dans l'App Launcher. type = "warp" name = "Warp device enrollment" session_duration = "24h" # Les deux briques IdP peuvent servir à l'enrôlement : # Authentik toujours, Azure Entra ID si la brique est activée. allowed_idps = concat( [cloudflare_zero_trust_access_identity_provider.authentik_oidc.id], var.azure_idp_enabled ? [cloudflare_zero_trust_access_identity_provider.azure_entra_id[0].id] : [] ) auto_redirect_to_identity = false policies = [{ name = "Device enrollment policy" decision = "allow" # Seuls les membres du domaine mail de l'organisation peuvent enrôler # un poste. Durcir avec un rule group si besoin (ex : admins seulement). include = [{ email_domain = { domain = var.cloudflare_email_domain } }] # MFA exigée au moment de l'enrôlement require = [{ auth_method = { auth_method = "mfa" } }] }] }