We've been using Hashicorp's Vault (https://vaultproject.io) to secure
secrets for our applications deployed via Marathon. Currently we've just
locked down Marathon and use vault's token auth per application to access
secrets. However, we've done a lot of work in the last few months to
authenticate apps via checking Mesos and Marathon to see if the task is
actually authentic and then will trust it:
https://github.com/Banno/vault/commit/62deeb6866abd8ea95a9f2f2fe60c0f605075494

Overall Vault has been a great addition to our stack.

On Mon, Jan 11, 2016 at 8:28 AM, Robert Vežnaver <[email protected]>
wrote:

> Hi,
>
> We give each app a private/public key pair, and let the developers
> encrypt any environment variable with their app's public key (we also
> base64 encode the ciphertext).
> Then instead of calling the usual "/bin/sh", we call a small bash
> wrapper script which decrypts the desired environment variables prior
> to running the app.
>
> Note that our cluster is managed by Chef, so we ensure that:
> - both the user and the private key are set up
> - each app is running as its own user
> - each app may access only its own private key
>
> As an added bonus, the wrapper script:
> - wraps stdout and stderr and forwards them to the local syslog (which
> then forwards them to Elasticsearch)
> - automatically decrypts any environment variable that starts with
> "SECRET_" (so they don't have to specify anything when calling the
> command)
>
> Hope this gives you an idea or two,
>
> Cheers,
> Robert
>
>
> On 11 January 2016 at 15:04, Erb, Stephan <[email protected]>
> wrote:
> > Hi everyone,
> >
> > I'd like to explore mechanisms to provide secrets to applications
> deployed on Mesos (e.g. via Marathon or Apache Aurora).
> >
> > The classical workflow of having the passwords encrypted in the local
> git repository and only decrypted during deployment (for example via
> ansible vault) tends to fall too short. From the user perspective the
> deployment is done once its job has been submitted to the service
> scheduler. Then however, the passwords would be unsecured when traveling
> through the various Mesos and scheduler layers. It might potentially been
> visible to anyone having access to either the scheduler or the Mesos UI.
> >
> > One possible solution is to provide an out-of-band mechanism to
> distribute passwords to all slaves and to protect those passwords using the
> regular Linux permissions, making them only accessible to authorized tasks.
> Other solutions might involve the integration of tools like HashiCorp Vault
> or Square Keywhiz.
> >
> > Is anyone willing to share his/her experience with handling such secrets?
> >
> > Thanks and Best Regards,
> > Stephan
>



-- 
*Luke Amdor* | Platform Lead Architect | *Banno*
Des Moines IA 50309 | Cell 515.231.4033

Reply via email to