Ce document fournit des consignes et des recommandations pour utiliser Terraform pour Google Cloud de manière sécurisée. Terraform nécessite un accès sensible à votre infrastructure cloud pour fonctionner. Le respect des bonnes pratiques en matière de sécurité peut vous aider à réduire les risques associés et à améliorer votre sécurité globale dans le cloud.
Ce guide n'est pas une introduction à Terraform. Pour une présentation de l'utilisation de Terraform avec Google Cloud, consultez la page Premiers pas avec Terraform.
Utiliser l'état à distance
Pour les clients Google Cloud, nous vous recommandons d'utiliser le backend d'état Cloud Storage. Cette approche verrouille l'état pour permettre une collaboration en équipe. Elle sépare également l'état et toutes les informations potentiellement sensibles du contrôle des versions.
Assurez-vous que seuls le système de compilation et les administrateurs hautement privilégiés peuvent accéder au bucket utilisé pour l'état distant.
Pour éviter de valider accidentellement l'état de développement dans le contrôle des sources, utilisez gitignore pour les fichiers d'état Terraform.
Chiffrer l'état
Bien que les buckets Google Cloud soient chiffrés au repos, vous pouvez utiliser des clés de chiffrement fournies par le client pour fournir une couche de protection supplémentaire. Pour ce faire, utilisez la variable d'environnement GOOGLE_ENCRYPTION_KEY
. Même si aucun secret ne doit figurer dans le fichier d'état, chiffrez toujours l'état pour renforcer la sécurité.
Ne pas stocker de secrets dans l'état
De nombreuses ressources et de nombreux fournisseurs de données dans Terraform stockent les valeurs des secrets en texte brut dans le fichier d'état. Dans la mesure du possible, évitez de stocker des secrets dans l'état. Voici quelques exemples de fournisseurs qui stockent des secrets en texte brut :
Marquer les sorties sensibles
Au lieu de tenter de chiffrer manuellement les valeurs sensibles, utilisez les capacités intégrées de Terraform pour la gestion des états sensibles. Lorsque vous exportez des valeurs sensibles en sortie, assurez-vous qu'elles sont marquées comme sensibles.
Assurer la séparation des tâches
Si vous ne pouvez pas exécuter Terraform à partir d'un système automatisé où si aucun utilisateur n'a accès, respectez la séparation des tâches en séparant les autorisations et les répertoires. Par exemple, un projet réseau correspond à un compte de service ou à un utilisateur de réseau Terraform dont l'accès est limité à ce projet.
Exécuter des vérifications préalables
Lorsque vous exécutez Terraform dans un pipeline automatisé, utilisez un outil tel que gcloud terraform vet
pour vérifier la sortie du plan par rapport aux règles avant son application. Cela permet de détecter les régressions de sécurité avant qu'elles ne se produisent.
Effectuer des audits continus
Une fois la commande terraform apply
exécutée, exécutez des contrôles de sécurité automatisés.
Ces contrôles vous permettent de vous assurer que l'infrastructure ne sombre pas dans un état non sécurisé. Les outils suivants sont des options valides pour ce type de test :
Étapes suivantes
- Découvrez les bonnes pratiques générales concernant le style et la structure pour Terraform sur Google Cloud.
- Découvrez les bonnes pratiques concernant l'utilisation des modules racine Terraform.