En este documento se ofrecen directrices y recomendaciones para usar Terraform de forma segura en Google Cloud. Para funcionar, Terraform necesita acceso sensible a tu infraestructura en la nube. Seguir las prácticas recomendadas de seguridad puede ayudarte a minimizar los riesgos asociados y mejorar la seguridad general de tu nube.
Esta guía no es una introducción a Terraform. Para obtener una introducción al uso de Terraform con Google Cloud, consulta el artículo Empezar a usar Terraform.
Usar el estado remoto
Para los Google Cloud clientes, recomendamos usar el backend de estado de Cloud Storage. De esta forma, el estado se bloquea para permitir la colaboración en equipo. También separa el estado y toda la información potencialmente sensible del control de versiones.
Asegúrate de que solo el sistema de compilación y los administradores con privilegios elevados puedan acceder al contenedor que se usa para el estado remoto.
Para evitar que se confirme por error el estado de desarrollo en el control de código fuente, usa gitignore para los archivos de estado de Terraform.
Estado de cifrado
Aunque los Google Cloud contenedores están cifrados en reposo, puedes usar claves de cifrado proporcionadas por el cliente para añadir una capa de protección adicional. Para ello, usa la variable de entorno GOOGLE_ENCRYPTION_KEY
. Aunque no debería haber secretos en el archivo de estado, siempre debes cifrar el estado como medida de defensa adicional.
No almacenes secretos en el estado
Hay muchos recursos y proveedores de datos en Terraform que almacenan valores secretos en texto sin formato en el archivo de estado. Siempre que sea posible, evite almacenar secretos en el estado. A continuación, se muestran algunos ejemplos de proveedores que almacenan secretos en texto sin cifrar:
Marcar resultados sensibles
En lugar de intentar cifrar manualmente valores sensibles, aprovecha la compatibilidad integrada de Terraform con la gestión de estados sensibles. Cuando exporte valores sensibles a la salida, asegúrese de que estén marcados como sensibles.
Asegurar la separación de funciones
Si no puedes ejecutar Terraform desde un sistema automatizado al que no tienen acceso los usuarios, sigue el principio de separación de funciones separando los permisos y los directorios. Por ejemplo, un proyecto de red se correspondería con una cuenta de servicio o un usuario de Terraform de red cuyo acceso se limitara a este proyecto.
Realizar comprobaciones previas a la aplicación
Cuando ejecutes Terraform en una canalización automatizada, usa una herramienta como gcloud terraform vet
para comprobar la salida del plan con las políticas antes de aplicarlo. De esta forma, se pueden detectar regresiones de seguridad antes de que se produzcan.
Realizar auditorías continuas
Una vez que se haya ejecutado el comando terraform apply
, realiza comprobaciones de seguridad automáticas.
Estas comprobaciones pueden ayudar a asegurar que la infraestructura no se desvíe hacia un estado inseguro. Las siguientes herramientas son opciones válidas para este tipo de comprobación:
Siguientes pasos
- Consulta las prácticas recomendadas generales de estilo y estructura de Terraform en Google Cloud.
- Consulta las prácticas recomendadas para usar módulos raíz de Terraform.