# ============================================================================= # CLOUDFLARE : Access Controls : Service Auth : Service Tokens # ============================================================================= # BRIQUE SERVICE TOKENS : accès machine-to-machine (sans utilisateur). # # Cas d'usage : une CI, une sonde de supervision ou un script doit appeler # une application protégée par Access. Pas d'humain pour s'authentifier via # l'IdP -> on émet un service token (paire Client ID / Client Secret) que la # machine présente en en-têtes HTTP : # CF-Access-Client-Id: # CF-Access-Client-Secret: # # La politique associée utilise decision = "non_identity" : c'est la décision # dédiée aux authentifications par service token. # # ACTIONS EXTERNES (voir ACTIONS_EXTERNES.md) : # - Récupérer les credentials : terraform output -raw service_token_gitea_ci_id # et terraform output -raw service_token_gitea_ci_secret # - Les stocker comme secrets dans Gitea (et idéalement dans Vault) # - Le token expire (duration ci-dessous) : anticiper la rotation # ============================================================================= #====================================================== # Service token pour la CI Gitea #====================================================== resource "cloudflare_zero_trust_access_service_token" "gitea_ci" { account_id = local.cloudflare_account_id name = "Gitea CI" duration = "8760h" # 1 an } #====================================================== # Politique réutilisable : accepter ce service token #====================================================== resource "cloudflare_zero_trust_access_policy" "allow_service_token_gitea_ci" { account_id = local.cloudflare_account_id name = "Allow service token Gitea CI" decision = "non_identity" session_duration = "24h" include = [{ service_token = { token_id = cloudflare_zero_trust_access_service_token.gitea_ci.id } }] }