Questo documento fornisce linee guida e consigli per l'utilizzo sicuro di Terraform per Google Cloud. Per funzionare, Terraform richiede l'accesso sensibile alla tua infrastruttura cloud. Seguire le best practice per la sicurezza può contribuire a minimizzare i rischi associati e migliorare la sicurezza cloud complessiva.
Questa guida non è un'introduzione a Terraform. Per un'introduzione all'utilizzo di Terraform con Google Cloud, consulta Introduzione a Terraform.
Utilizzare lo stato del telecomando
Per i Google Cloud clienti, consigliamo di utilizzare il backend dello stato di Cloud Storage. Questo approccio blocca lo stato per consentire la collaborazione in 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 di eseguire commit accidentalmente dello stato di sviluppo nel controllo del codice sorgente, utilizza gitignore per i file di stato di Terraform.
Stato crittografia
Anche se i Google Cloud bucket sono criptati a riposo, puoi utilizzare
chiavi di crittografia fornite dal cliente
per fornire un ulteriore livello di protezione. A questo scopo, utilizza la variabile di ambiente GOOGLE_ENCRYPTION_KEY
. 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 di memorizzare i segreti nello stato. Di seguito sono riportati alcuni esempi di provider che archiviano i secret in testo non cifrato:
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 espandi i valori sensibili nell'output, assicurati che 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 una separazione dei compiti separando le autorizzazioni e le directory. Ad esempio, un progetto di rete corrisponde a un account di servizio Terraform o a un utente di rete 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 della sicurezza prima che si verifichino.
Esegui audit continui
Dopo aver eseguito il comando terraform apply
, esegui 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 per stile e struttura di Terraform su Google Cloud.
- Scopri le best practice per l'utilizzo dei moduli principali di Terraform.