Sägetstrasse 18, 3123 Belp, Switzerland +41 79 173 36 84 info@ict.technology

      Terraform @ Scale - Partie 1e : Scalabilité au-delà des frontières organisationnelles

      La gestion de l'infrastructure Terraform devient particulièrement exigeante lorsqu'elle s'étend sur plusieurs divisions commerciales ou même différentes organisations clientes.
      Dans de tels scénarios, il ne suffit plus de configurer proprement des Workspaces ou des Pipelines sur le plan technique. Les décideurs, CTO, architectes et ingénieurs seniors ont besoin de responsabilités clairement structurées, d'une gouvernance stricte et de processus entièrement automatisés pour garantir la cohérence, la sécurité et l'efficacité. Nous avons déjà traité en détail de cette séparation des States, mais récapitulons-la une dernière fois de manière succincte.

      Structures d'équipe et responsabilités

      La supervision de l'ensemble de l'infrastructure peut idéalement être répartie en au moins trois domaines de responsabilité :

      Équipe Platform Engineering

      L'équipe Platform Engineering gère les Root Tenancies ainsi que tous les comptes cloud et compartments centraux de l'entreprise, créant ainsi le cadre organisationnel pour toutes les activités ultérieures.

      De plus, l'équipe crée, versionne et maintient les modules de base utilisés par toutes les autres équipes afin d'assurer une base technique uniforme.

      En parallèle, elle définit des directives architecturales obligatoires, des standards de tagging et des conventions de nommage - des règles garantissant la cohérence et la transparence à l'échelle de l'entreprise.

      Enfin, l'équipe Platform Engineering exploite et renforce le backend Terraform ainsi que la plateforme CI/CD afin de garantir un fonctionnement stable, évolutif et conforme aux exigences d'audit.

      Équipes de service

      Les équipes de service s'appuient sur les modules de base mis à disposition et développent à partir de ceux-ci des modules de service spécifiques aux domaines ou aux produits, parfaitement adaptés à leurs champs d'activité.

      Elles assument la responsabilité de l'infrastructure de leurs unités commerciales et transforment directement les exigences métier en artefacts Infrastructure-as-Code.

      Elles obtiennent les modules nécessaires facilement via une Private Registry, des sous-modules Git ou des gestionnaires de paquets établis, ce qui assure un approvisionnement cohérent en versions actualisées.

      Équipes applicatives

      Les équipes applicatives provisionnent des ressources spécifiques aux applications sur la base des modules de service et peuvent ainsi se concentrer pleinement sur la valeur ajoutée de leur logiciel.

      Elles intègrent l'infrastructure et le code dans des pipelines de déploiement entièrement automatisés, de manière à ce que les releases soient reproductibles, auditables et automatisées.

      Malgré leur grande autonomie, elles s'engagent à respecter toutes les directives centrales définies afin de garantir la sécurité et la gouvernance au sein de la plateforme globale.

      Zones de confiance et isolation des States

      Chaque niveau organisationnel possède sa propre zone de confiance. Les configurations de backend, les politiques IAM et les pipelines CI/CD garantissent que les équipes ne peuvent accéder qu'aux States dont elles sont responsables. Cela empêche, par exemple, qu'une équipe applicative ne modifie accidentellement des ressources de la plateforme.

      Gouvernance et conformité

      Policy-as-Code

      HashiCorp Sentinel ou Open Policy Agent permettent l'application de règles obligatoires sous forme de code, créant ainsi une instance de contrôle automatisée tout au long du cycle de vie de l'infrastructure.


      import "tfplan/v2" as tfplan
      
      mandatory_tags = ["Owner","CostCenter","Environment"]
      
      validate_instances = rule {
        all tfplan.resource_changes as _, rc {
          rc.type is "oci_core_instance" and rc.change.actions contains "create" implies
            all mandatory_tags as tag { rc.change.after.defined_tags[tag] is not null }
        }
      }
      
      main = rule { validate_instances }
      

      Automatisation de la conformité

      La génération automatique de documentation de conformité directement à partir des outputs de Terraform réduit l'effort manuel et fournit à tout moment des preuves d'audit vérifiables.

      En complément, des scans réguliers de l'infrastructure en production comparent l'état réel à l'état déclaré, détectant ainsi rapidement les écarts.

      Stratégies multi-comptes

      Des comptes cloud séparés renforcent l'isolation entre les tenants, mais nécessitent une gestion disciplinée des credentials et des pipelines CI/CD adaptés pour ne pas compromettre l'exploitation ni la sécurité. Utilisez donc, en plus des Terraform Workspaces, également des Provider-Aliases comme démontré ici :


      provider "oci" {
        alias            = "tenant_a"
        tenancy_ocid     = var.tenant_a_ocid
        user_ocid        = var.tenant_a_user_ocid
        fingerprint      = var.tenant_a_fingerprint
        private_key_path = var.tenant_a_private_key_path
        auth_type        = "api_key"
        region           = var.tenant_a_region
      }
      
      provider "oci" {
        alias        = "tenant_b"
        tenancy_ocid = var.tenant_b_ocid
        auth_type    = "api_key"
      }

      Intégration CI/CD

      Un workflow robuste de pipeline suit systématiquement les phases Validation, Planning, Approval, Apply et Verification, constituant ainsi la base de déploiements reproductibles et auditables dans des environnements multi-tenants.

      Configuration dynamique des tenants

      Les informations relatives aux tenants peuvent être lues dynamiquement à partir de diverses sources. Il s'agit généralement de bases de données ou de répertoires, mais cela peut aussi être de simples structures YAML ou JSON. Un exemple :


      tenants:
        - name: customer_a
          environment: production
          region: eu-frankfurt-1
          approval_required: true
        - name: internal_test
          environment: development
          region: eu-amsterdam-1
          approval_required: false

       

      Exemple de job de validation de politiques (GitLab)

      Si vous n'utilisez pas Sentinel et préférez vous appuyer sur un outil externe, vous pouvez facilement l'intégrer comme étape supplémentaire dans votre pipeline, par exemple avec ce script Python :


      validate_policies:
        image: hashicorp/terraform:1.7
        stage: validate
        script:
          - terraform init
          - terraform plan -out=tfplan
          - terraform show -json tfplan | gzip > tfplan.json.gz
          - python scripts/validate_policies.py tfplan.json.gz
        artifacts:
          paths:
            - tfplan.json.gz

       

      Portails en libre-service

      Un portail en libre-service avec un catalogue de modules sélectionnés permet aux départements métiers de commander une infrastructure standardisée en quelques clics, tandis que des pipelines CI/CD automatisés assurent une mise en service contrôlée en arrière-plan.

      Si vous rendez l'utilisation d'un portail en libre-service obligatoire, cela améliore également la conformité globale de l'entreprise, car seul le portail lui-même a alors les droits de provisionnement au niveau des équipes applicatives. Ce qui n'est pas proposé par le portail ne peut plus être mis en œuvre, ce qui réduit encore le risque d'IT fantôme et facilite l'implémentation du modèle Zero Trust, puisque les équipes applicatives ne sont alors plus considérées comme des organisations de confiance. Ainsi, vous traitez vos utilisateurs finaux internes comme des clients.

      Fonctionnalités importantes de Terraform Cloud et Enterprise

      Pour des infrastructures complexes, Terraform Cloud ou Terraform Enterprise deviennent incontournables. Si vous attachez de l'importance à la souveraineté totale des données, ce qui est la norme dans l'Union européenne, ou si vous êtes soumis à des exigences réglementaires en matière de sécurité, Terraform Enterprise est alors la seule voie possible.

      Gestion des Workspaces

      La séparation des Workspaces par tenant, comme supportée par Terraform Enterprise et Terraform Cloud (à ne pas confondre avec la commande CLI terraform workspace de la version gratuite de Terraform, qui est totalement différente), garantit une isolation stricte tout en permettant des processus granulaires de gestion de versions et d'approbation par tenant.

      Les Tags et les ensembles de variables réutilisables simplifient considérablement la gestion des configurations et réduisent les duplications dans des environnements de Workspaces étendus.

      Gestion des équipes et des droits

      Une matrice de rôles finement graduée distingue par Workspace les droits de lecture, d'écriture et d'approbation, soutenant ainsi une séparation claire des responsabilités (Separation of Duties).

      L'intégration SSO simplifiée connecte Terraform Cloud ou Enterprise au système d'identité existant de l'entreprise, accélérant les processus d'onboarding et d'offboarding.

      Déclencheurs de runs et gestion des dépendances

      Les modifications dans un Workspace central peuvent déclencher automatiquement des Plans dans les Workspaces dépendants, assurant ainsi des mises à jour cohérentes à tous les niveaux.

      Private Registry

      La Private Registry assure la versionnage centralisé de tous les modules, publie automatiquement leur documentation et constitue un Single Point of Truth pour les composants d'infrastructure réutilisables.

      Prévision des coûts et détection de dérive

      Une prévision intégrée des coûts fournit, avant l'Apply, des estimations fiables des coûts d'infrastructure par tenant, permettant une planification budgétaire précise. Les fournisseurs de cloud offrent généralement des outils pour cela, mais même si un fournisseur ne le propose pas nativement, vous pouvez le mettre en œuvre via des Pricing-Tags personnalisés. Les valeurs de ces tags peuvent provenir de sources comme des fichiers CSV ou une base de données. Si les prix changent, ils peuvent être mis à jour facilement dans les composants d'infrastructure, car les tags personnalisés sont généralement modifiables sans être destructifs. Le véritable défi réside dans les tarifs volumétriques tels que le trafic réseau, entraînant des coûts cachés comme c'est souvent le cas avec AWS.

      Parallèlement, la détection de dérive surveille en permanence les écarts entre l'état déclaré et l'état réel, et signale immédiatement toute anomalie avant qu'elle ne devienne un problème. La détection de dérive est une fonctionnalité de Terraform Enterprise et Terraform Cloud.

      Audit et sécurité de révision

      AuditUn setup Terraform évolutif couvrant plusieurs tenants nécessite non seulement des responsabilités structurées et une automatisation de bout en bout, mais également une auditabilité complète de toutes les modifications des ressources d'infrastructure.

      Terraform Cloud et Terraform Enterprise offrent à cet effet un journal d'audit intégré, documentant de manière chronologique, inaltérable et exportable tous les événements pertinents - tels que le déclenchement d'un Plan, les modifications de variables, les affectations d'équipe ou l'exécution d'un terraform apply. Ces journaux peuvent être intégrés à des systèmes SIEM externes pour satisfaire aux politiques de sécurité, exigences légales ou standards de conformité sectorielle tels que ISO 27001, BSI C5 ou SOC 2.

      Pour les entreprises avec des exigences particulièrement élevées en matière de traçabilité et de sécurité de révision, il est recommandé de compléter avec une gestion centralisée des logs basée sur des solutions comme Elastic Stack ou Splunk. Cela permet de corréler et d'analyser non seulement les activités au niveau de Terraform, mais aussi les informations contextuelles provenant de GitLab, des pipelines CI/CD, des fournisseurs d'identité et des API cloud.

      Les mécanismes permettant de lier les Changesets aux systèmes de tickets (par ex. Jira) et un processus clair d'approbation des changements, garantissant que chaque modification est examinée et approuvée par au moins une personne autorisée, sont particulièrement utiles. Cela constitue un élément central des stratégies de Separation of Duties et de Least Privilege.

      Conclusion

      La montée en charge au-delà des frontières organisationnelles exige bien plus que des compétences Terraform. Ceux qui combinent des structures d'équipe clairement définies, des vérifications systématiques des policies, des processus de conformité automatisés et des pipelines CI/CD modernes avec les capacités multi-tenants de Terraform Cloud ou Enterprise créent la base d'une infrastructure sûre, reproductible et efficace, capable de fonctionner de manière fiable même à travers de nombreux tenants.