We are trying to run concourse with Vault. Reason for using vault is to store secrets in a a secure way. Some of the parameters we want to store in vault are github private key, to get access to the github repositories, as well as username and password for CloudFoundry access. These kind of secrets are not expected to be shared...
Sounds all very nice, however, it is pretty easy to recover the content of stored secrets in vault, when having access to the concourse team.
Example: Storing following in vault
vault write concourse/main/cat-name value=Garfield
vault write concourse/main/dog-name value=Odie
Running the next pipeline will show the contents of the stored parameters:
jobs:
- name: show-animal-names
plan:
- task: show-animal-names
config:
platform: linux
image_resource:
type: docker-image
source:
repository: busybox
params:
CAT_NAME: ((cat-name))
DOG_NAME: ((dog-name))
run:
path: env
Which results in:
fly -t concourse trigger-job -j publishing-outputs/show-animal-names -w
started publishing-outputs/show-animal-names #1
initializing
running env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOME=/root
CAT_NAME=Garfield
DOG_NAME=Odie
USER=root
succeeded
This way, also username, passwords, github-private-keys, and all other stuff stored in vault, can be retrieved for everyone who was granted access to update pipelines in concourse.
Is there a way to use concourse and have these kind of secrets kept secret, so not shown?