Security is at the core of everything we build. We’re committed to safeguarding your data and infrastructure by investing in the necessary tools, training, and support. Learn more about how we bake security into our solutions and platform.

Data security

Terraform Cloud takes the security of the data it manages seriously. This table lists which parts of the Terraform Cloud and Terraform Enterprise app can contain sensitive data, what storage is used, and what encryption is used.

Terraform Cloud and Enterprise

Ingressed VCS DataBlob StorageVault Transit Encryption
Terraform Plan ResultBlob StorageVault Transit Encryption
Terraform StateBlob StorageVault Transit Encryption
Terraform LogsBlob StorageVault Transit Encryption
Terraform/Environment VariablesPostgreSQLVault Transit Encryption
Organization/Workspace/Team SettingsPostgreSQLNo
Account PasswordPostgreSQLbcrypt
2FA Recovery CodesPostgreSQLVault Transit Encryption
SSH KeysPostgreSQLVault Transit Encryption
User/Team/Organization TokensPostgreSQLHMAC SHA512
OAuth Client ID + SecretPostgreSQLVault Transit Encryption
OAuth User TokensPostgreSQLVault Transit Encryption

Terraform enterprise specific

Twilio Account ConfigurationPostgreSQLVault Transit Encryption
SMTP ConfigurationPostgreSQLVault Transit Encryption
SAML ConfigurationPostgreSQLVault Transit Encryption
Vault Unseal KeyPostgreSQLChaCha20+Poly1305

Vault transit encryption

The Vault Transit Secret Engine handles encryption for data in-transit and is used when encrypting data from the application to persistent storage.

Blob storage encryption

All objects persisted to blob storage are symmetrically encrypted prior to being written. Each object is encrypted with a unique encryption key. Objects are encrypted using 128 bit AES in CTR mode. The key material is processed through the Vault transit secret engine, which uses the default transit encryption cipher (AES-GCM with a 256-bit AES key and a 96-bit nonce), and stored alongside the object. This pattern is called envelope encryption.

The Vault transit secret engine's datakey generation creates the encryption key material using bit material from the kernel's cryptographically secure pseudo-random number generator (CSPRNG) as the context value. Blob storage encryption generates a unique key for each object and relies on envelope encryption, so Vault does not rotate the encryption key material for individual objects. The root encryption keys within the envelope encryption scheme are rotated automatically by Terraform Cloud every 365 days. These keys are not automatically rotated within TFE.