Skip to content

Add Terraform state model with encrypted uploader

What does this MR do?

To address the requirements of #207401 (closed), create a model and an uploader to store Terraform state files. This will be used as part of the GitLab Terraform backend (&2673).

Because Terraform state contains secrets, the state files need to be encrypted before being stored. The lockbox gem is introduced to help with encryption/decryption of files.

Some details about lockbox:

  • does not depend on any other gems
  • uses the AES-GCM algorithm by default
  • uses OpenSSL to perform cryptography
  • comes with CarrierWave support (encrypt files by adding a single line to an Uploader)
  • uses a different key for each database field and file uploader (derived from the master key)

Based on discussion in this thread, each project's state files are encrypted using a unique key.

Omnibus MR: omnibus-gitlab!3983 (merged)

GitLab Helm Chart MR: gitlab-org/charts/gitlab!1208 (merged)

/cc @grzesiek @mattkasa @nicholasklick @tigerwnz

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team

Closes #207401 (closed)

Edited by 🤖 GitLab Bot 🤖

Merge request reports