All Projects → avast → marathon-vault-plugin

avast / marathon-vault-plugin

Licence: MIT license
Marathon plugin which injects Vault secrets via environment variables

Programming Languages

scala
5932 projects

Projects that are alternatives of or similar to marathon-vault-plugin

kubevault
🔐 KubeVault Documentation
Stars: ✭ 210 (+600%)
Mutual labels:  vault, secret-management
secrets-proxy
🔑 A secure proxy service for managing OneOps secrets.
Stars: ✭ 12 (-60%)
Mutual labels:  vault, secret-management
lockgit
A CLI tool for storing encrypted data in a git repo
Stars: ✭ 121 (+303.33%)
Mutual labels:  vault, secret-management
teller
Cloud native secrets management for developers - never leave your command line for secrets.
Stars: ✭ 998 (+3226.67%)
Mutual labels:  vault, secret-management
Vault.net
.NET API client for vault
Stars: ✭ 74 (+146.67%)
Mutual labels:  vault, secret-management
secrets cli
CLI for storing and reading your secrets via vault
Stars: ✭ 24 (-20%)
Mutual labels:  vault, secret-management
k8s-vault-webhook
A k8s vault webhook is a Kubernetes webhook that can inject secrets into Kubernetes resources by connecting to multiple secret managers
Stars: ✭ 107 (+256.67%)
Mutual labels:  vault, secret-management
thycotic.secretserver
PowerShell module for automating with Thycotic Secret Server REST API
Stars: ✭ 41 (+36.67%)
Mutual labels:  vault, secret-management
Vaulted
nodejs based wrapper for HashiCorp's Vault HTTP API
Stars: ✭ 47 (+56.67%)
Mutual labels:  vault, secret-management
Aomi
Provide secrets to build and release pipelines in a self service way using Hashicorp Vault.
Stars: ✭ 33 (+10%)
Mutual labels:  vault, secret-management
argocd-vault-plugin
An Argo CD plugin to retrieve secrets from Secret Management tools and inject them into Kubernetes secrets
Stars: ✭ 404 (+1246.67%)
Mutual labels:  vault, secret-management
Operator
🔐 HashiCorp Vault Operator for Kubernetes
Stars: ✭ 178 (+493.33%)
Mutual labels:  vault, secret-management
Cryptr
Cryptr: a GUI for Hashicorp's Vault
Stars: ✭ 324 (+980%)
Mutual labels:  vault, secret-management
Helm Secrets
Successor of zendesk/helm-secrets - A helm plugin that help manage secrets with Git workflow and store them anywhere
Stars: ✭ 165 (+450%)
Mutual labels:  vault, secret-management
Hashicorp Vault Plugin
Jenkins plugin to populate environment variables from secrets stored in HashiCorp's Vault.
Stars: ✭ 191 (+536.67%)
Mutual labels:  vault, secret-management
marayarn
Marathon on yarn
Stars: ✭ 13 (-56.67%)
Mutual labels:  marathon
vault-monkey
Extract secrets from your vault in a multi-machine cluster environment.
Stars: ✭ 12 (-60%)
Mutual labels:  vault
vault-plugin-secrets-wireguard
Vault's plugin for managing server and dynamic client configurations
Stars: ✭ 41 (+36.67%)
Mutual labels:  vault
marathon-appcop
Marathon applications law enforcement
Stars: ✭ 18 (-40%)
Mutual labels:  marathon
hookpick
A tool to manage some operational concepts of Hashicorp Vault
Stars: ✭ 83 (+176.67%)
Mutual labels:  vault

Please note that this project is no longer being maintained.

Marathon Vault plugin Download release

Marathon version v1.5.8 v1.6.352
Build status Build1 Build2

Plugin for Marathon which injects secrets stored in Vault via environment variables.

How to reference secrets in marathon.json

The following example marathon.json fragment will read Vault path secret/shared/abc/xyz (secret/shared is taken from the configuration), extract field password from that path and inject the field value into an environment variable named ENV_NAME:

{
  "env": {
    "ENV_NAME": {
      "secret": "secret_ref"
    }
  },
  "secrets": {
    "secret_ref": {
      "source": "/abc/xyz@password"
    }
  }
}

If the provided Vault path or field is not found, the environment variable will not be set. The same applies when it cannot be read because of permissions or other types of errors. Either way, it will be logged as an error in Marathon logs.

The path in the secret source can be "shared" or "app-private" and it depends on the secret source format. The path is shared if the secret source starts with /, otherwise it is a private path. Both paths have a root defined in configuration (sharedPathRoot for shared path and privatePathRoot for private path).

Shared path to a secret

For a shared secret source path, a Vault path is constructed as <sharedPathRoot>/<path from the secret source>. E.g., with secret/shared as a value configured in sharedPathRoot, and /abc/xyz@password as the secret source, the resulting Vault path will be secret/shared/abc/xyz, field name password. This kind of secret reference allows you to share secrets between applications.

Private path to a secret

For a private secret source path, a Vault path is constructed as <privatePathRoot>/<marathon path and service name>/<path from the secret source>. E.g., with secret/marathon as a value configured in privatePathRoot, and abc/xyz@password as the secret source of an application with Marathon id test/test-app, the resulting Vault path will be secret/marathon/test/test-app/abc/xyz, field name password. This concept will guarantee that secrets cannot be read from other applications, but on the other hand identical secrets will need to be stored multiple times in Vault (separately for each Marathon application).

Installation

Please consult the Start Marathon with plugins section of the official docs for a general overview of how plugins are enabled.

The plugin configuration JSON file will need to reference the Vault plugin as follows:

{
  "plugins": {
    "marathon-vault-plugin": {
      "plugin": "mesosphere.marathon.plugin.task.RunSpecTaskProcessor",
      "implementation": "com.avast.marathon.plugin.vault.VaultPlugin",
      "configuration": {
        "address": "http://address_to_your_vault_instance:port",
        "token": "access_token",
        "sharedPathRoot": "secret/shared/",
        "privatePathRoot": "secret/private/",
        "ssl": {
            "verify": "false", // don't use in production
            "trustStoreFile": "/path/to/truststore/file",
            "keyStoreFile": "/path/to/keystore/file",
            "keyStorePassword": "keystore_passw0rd",
            "pemFile": "/path/to/pem/file",
            "pemUTF8": "string contents extracted from the PEM file",
            "clientPemFile": "/path/to/client/pem/file",
            "clientKeyPemFile": "/path/to/client/pem/file"
        }
      }
    }
  }
}

Properties sharedPathRoot and privatePathRoot are optional. Default value for both properties is root (which means /).

The ssl section is optional and it directly configures the underlying Vault client but only the options documented here are passed through.

In this version, only token-based login is supported. Never use the Vault's initial root token - we recommend creating a separate token with long-enough validity and restricted (read-only) access to secrets.

You will also need to start Marathon with the secrets feature being enabled. See Marathon command line flags for more details. In short, it can be enabled by

  • specifying --enable_features secrets in Marathon command line
  • specifying environment variable MARATHON_ENABLE_FEATURES=secrets when starting Marathon
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].