Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[*Major Security Improvement*] * This release introduces 'entombment' of Vault secrets into Credhub for increased security in the transport of your secrets on deployment. In previous versions, the `(( vault ... ))` operators in the manifest fragments, your environment and ops/ YAML files would resolve locally, placing the secrets needed from vault into the manifest. Unfortunately, this would be done in clear text. The alternative secret store is Credhub, and a few kits still use Credhub to contain the deployments secrets. However, Credhub lacks the ability to manage your secrets as well as Vault, requiring a different tooling, or just simply deleting all secrets and allowing them to be generated again. The final issue is that becase the placeholder variable doesn't change, there is no visual confirmation that you have changed the value of a Credhub secret on deployment. Genesis 2.9.0 brings you the best of both worlds! Vault remains the single source of truth, and you can manage your secrets with the Genesis add-secrets, check-secrets, rotate-secrets and remove-secrets commands, independent of the BOSH director. However, when it comes time to deploy your manifest, Genesis determines what Vault paths are being used by the manifest, pulls them into memory, runs a sha1sum on the values, then determines Credhub path to inject each of those Vault values into based on its vault path and value. This results in a unique and idempotent variable that only changes if the value it contains changes. The value is stored at that path in Credhub if it doesn't already exist. When merging the manifest, the vault operators now resolve to that unique Credhub path that contains the desired value, and there are no longer any cleartext secrets in the manifest, the log, or even if you pull down the manifest using the `bosh manifest` command. This is enabled on default for the `genesis deploy` command, and can be enabled using the `--entomb` option for the manifest and lookup commands. Likewise, it can be disabled on the deploy command with --no-entomb option. You can also set it as a local setting in your ~/.genesis/config file with `entomb_secrets` key that can be set true or false. The command line options will take precedent over the config file. Note: The values are left in Credhub after the deploy to ensure any recreate or other BOSH operations that require the manifest to be intact still work. Over time, this will result in Credhub containing values that are no longer used, including expired X509 certificates, which may trigger false positives in Doomsday cert expiry monitoring tool. Future version of Genesis will enable cleaning out any old values that are no longer being used.
- Loading branch information