Best practice per la sicurezza

Questo documento fornisce linee guida e suggerimenti per utilizzare Terraform per Google Cloud in modo sicuro. Per funzionare, Terraform richiede un accesso sensibile all'infrastruttura cloud. Le seguenti best practice per la sicurezza possono aiutarti a ridurre al minimo i rischi associati e a migliorare la sicurezza complessiva del cloud.

Questa guida non è un'introduzione a Terraform. Per un'introduzione all'utilizzo di Terraform con Google Cloud, consulta la guida introduttiva a Terraform.

Usa 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, separa 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 accidentalmente il commit dello stato di sviluppo nel controllo del codice sorgente, utilizza gitignore per i file di stato di Terraform.

Stato crittografia

Anche se i bucket Google Cloud sono criptati at-rest, è possibile utilizzare le chiavi di crittografia fornite dal cliente per fornire un ulteriore livello di protezione. A tale scopo, utilizza la variabile di ambiente GOOGLE_ENCRYPTION_KEY. Anche se il file di stato non contiene segreti, cripta sempre lo stato come ulteriore misura di difesa.

Non archiviare i secret nello stato

In Terraform esistono molti fornitori di risorse e dati che archiviano i valori secret in testo non crittografato nel file di stato. Se possibile, evita di archiviare i secret nello stato. Di seguito sono riportati alcuni esempi di provider che archiviano i secret in testo non crittografato:

Contrassegna output sensibili

Anziché tentare di criptare manualmente i valori sensibili, fai affidamento sul supporto integrato di Terraform per la gestione dello stato sensibile. Quando esporti valori sensibili nell'output, assicurati che i valori siano contrassegnati come sensibili.

Assicurare la separazione dei compiti

Se non riesci a eseguire Terraform da un sistema automatizzato in cui nessun utente ha accesso, attieniti a una separazione dei compiti separando autorizzazioni e directory. Ad esempio, un progetto di rete corrisponde a un account di servizio Terraform di rete o a un utente il cui accesso è limitato a questo progetto.

Esegui controlli pre-applicazione

Quando esegui Terraform in una pipeline automatizzata, utilizza uno strumento come gcloud terraform vet per controllare l'output del piano in base ai criteri prima che venga applicato. 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 aiutare a garantire che l'infrastruttura non passi a uno stato non sicuro. I seguenti strumenti sono scelte valide per questo tipo di controllo:

Passaggi successivi