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.
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.
|Ingressed VCS Data||Blob Storage||Vault Transit Encryption|
|Terraform Plan Result||Blob Storage||Vault Transit Encryption|
|Terraform State||Blob Storage||Vault Transit Encryption|
|Terraform Logs||Blob Storage||Vault Transit Encryption|
|Terraform/Environment Variables||PostgreSQL||Vault Transit Encryption|
|2FA Recovery Codes||PostgreSQL||Vault Transit Encryption|
|SSH Keys||PostgreSQL||Vault Transit Encryption|
|User/Team/Organization Tokens||PostgreSQL||HMAC SHA512|
|OAuth Client ID + Secret||PostgreSQL||Vault Transit Encryption|
|OAuth User Tokens||PostgreSQL||Vault Transit Encryption|
|Twilio Account Configuration||PostgreSQL||Vault Transit Encryption|
|SMTP Configuration||PostgreSQL||Vault Transit Encryption|
|SAML Configuration||PostgreSQL||Vault Transit Encryption|
|Vault Unseal Key||PostgreSQL||ChaCha20+Poly1305|
The Vault Transit Secret Engine handles encryption for data in-transit and is used when encrypting data from the application to persistent storage.
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.