Questo documento fornisce linee guida e consigli per usare in modo sicuro Terraform per Google Cloud. Per funzionare, Terraform richiede l'accesso sensibile alla tua infrastruttura cloud. Seguire le best practice per la sicurezza ridurre al minimo i rischi associati e migliorare la sicurezza complessiva del cloud.
Questa guida non è un'introduzione a Terraform. Per un'introduzione all'utilizzo di Terraform con Google Cloud, consulta Introduzione a Terraform.
Utilizzare lo stato remoto
Per i clienti Google Cloud, consigliamo di utilizzare il backend dello stato di Cloud Storage. Questo approccio blocca lo stato per consentire la collaborazione come team. Inoltre, consente di separare lo stato e tutte le informazioni potenzialmente sensibili dal controllo della versione.
Assicurati che solo il sistema di compilazione e gli amministratori con privilegi elevati possano accedere al bucket utilizzato per lo stato remoto.
Per evitare il commit accidentale dello stato di sviluppo nel controllo del codice sorgente, utilizza gitignore per i file di stato di Terraform.
Stato crittografia
Sebbene i bucket Google Cloud siano crittografati at-rest, puoi utilizzare
chiavi di crittografia fornite dal cliente
per offrire un ulteriore livello di protezione. Per farlo, utilizza
GOOGLE_ENCRYPTION_KEY
variabile di ambiente. Anche se non dovrebbero esserci segreti nel file di stato, cripta sempre lo stato come misura di difesa aggiuntiva.
Non memorizzare i secret nello stato
In Terraform sono disponibili molti provider di risorse e dati che memorizzano i valori segreti in testo normale nel file di stato. Se possibile, evita i secret nello stato. Di seguito sono riportati alcuni esempi di fornitori che archiviano segreti in testo non crittografato:
Contrassegnare le uscite sensibili
Anziché tentare di criptare manualmente i valori sensibili, affidati al supporto integrato di Terraform per la gestione dello stato sensibile. Quando esportare valori sensibili nell'output, assicurati che i valori siano contrassegnati come sensibili.
Garantire la separazione dei compiti
Se non riesci a eseguire Terraform da un sistema automatizzato a cui nessun utente ha accesso, rispetta la separazione dei compiti separando le autorizzazioni e le directory. Per Ad esempio, un progetto di rete corrisponde a un servizio Terraform di rete account o utente il cui accesso è limitato a questo progetto.
Esegui i controlli precedenti all'applicazione
Quando esegui Terraform in una pipeline automatica, utilizza uno strumento come
gcloud terraform vet
per
controllare l'output del piano rispetto alle norme prima
di applicarlo. In questo modo è possibile rilevare le regressioni di sicurezza prima che si verifichino.
Esegui controlli continui
Dopo l'esecuzione del comando terraform apply
, esegui i controlli di sicurezza automatici.
Questi controlli possono contribuire a garantire che l'infrastruttura non passi a uno stato insecure. I seguenti strumenti sono scelte valide per questo tipo di controllo:
Passaggi successivi
- Scopri le best practice generali di stile e struttura per Terraform su Google Cloud.
- Scopri le best practice per l'utilizzo dei moduli principali di Terraform.