All Projects → upmc-enterprises → Kubernetes Secret Manager

upmc-enterprises / Kubernetes Secret Manager

Licence: bsd-3-clause
Manage secrets with Vault inside a Kubernetes cluster

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Kubernetes Secret Manager

Secretary
DEPRECATED Secrets management for dynamic environments
Stars: ✭ 93 (-59.74%)
Mutual labels:  secrets
Shhh
Share sensitive info without leaving a trace in your chat logs or email accounts.
Stars: ✭ 159 (-31.17%)
Mutual labels:  secrets
Spring Vault
Provides familiar Spring abstractions for HashiCorp Vault
Stars: ✭ 179 (-22.51%)
Mutual labels:  secrets
K8s Gitops
Kubernetes cluster managed by GitOps - Git as a single source of truth, automated pipelines, declarative everything, next-generation DevOps
Stars: ✭ 110 (-52.38%)
Mutual labels:  secrets
Leaky Repo
Benchmarking repo for secrets scanning
Stars: ✭ 149 (-35.5%)
Mutual labels:  secrets
Passcat
Passwords Recovery Tool
Stars: ✭ 164 (-29%)
Mutual labels:  secrets
Catesta
Catesta is a PowerShell module project generator. It uses templates to rapidly scaffold test and build integration for a variety of CI/CD platforms.
Stars: ✭ 88 (-61.9%)
Mutual labels:  secrets
Keywhiz
A system for distributing and managing secrets
Stars: ✭ 2,452 (+961.47%)
Mutual labels:  secrets
Kube Secret Syncer
A Kubernetes operator to sync secrets from AWS Secrets Manager
Stars: ✭ 154 (-33.33%)
Mutual labels:  secrets
Yar
Yar is a tool for plunderin' organizations, users and/or repositories.
Stars: ✭ 174 (-24.68%)
Mutual labels:  secrets
Kubernetes Reflector
Custom Kubernetes controller that can be used to replicate secrets, configmaps and certificates.
Stars: ✭ 129 (-44.16%)
Mutual labels:  secrets
Bilibilitask
哔哩哔哩(B站)自动完成每日任务,投币,点赞,直播签到,自动兑换银瓜子为硬币,自动送出即将过期礼物,漫画App签到。
Stars: ✭ 1,770 (+666.23%)
Mutual labels:  secrets
Helm Secrets
Successor of zendesk/helm-secrets - A helm plugin that help manage secrets with Git workflow and store them anywhere
Stars: ✭ 165 (-28.57%)
Mutual labels:  secrets
Squealer
Telling tales on you for leaking secrets!
Stars: ✭ 97 (-58.01%)
Mutual labels:  secrets
Hashicorp Vault Plugin
Jenkins plugin to populate environment variables from secrets stored in HashiCorp's Vault.
Stars: ✭ 191 (-17.32%)
Mutual labels:  secrets
Awx Migrate
Tool to migrate AWX to a new instance
Stars: ✭ 89 (-61.47%)
Mutual labels:  secrets
Serverless Secrets
An opinionated tool for safely managing and deploying Serverless projects and their secrets.
Stars: ✭ 162 (-29.87%)
Mutual labels:  secrets
Privy
An easy, fast lib to correctly password-protect your data
Stars: ✭ 230 (-0.43%)
Mutual labels:  secrets
Whispers
Identify hardcoded secrets and dangerous behaviours
Stars: ✭ 66 (-71.43%)
Mutual labels:  secrets
Reloader
Reloader is maintained by Stakater. Like it? Please let us know at [email protected]
Stars: ✭ 2,930 (+1168.4%)
Mutual labels:  secrets

Kubernetes Secret Manager

Build Status

Problem

Typically usernames and passwords to resources are statically tied to a service account. These passwords rarely change and are usually difficult to rotate in an application stack. Sometimes, we're not even sure how many components are utilizing that service account which makes rotate even more difficult and teams end up not changing due to fear of downtime and errors.

Ideally we want a solution which allows us to rotate credentials dynamically and do so in a secure well-thought out way.

Goals

The main motivation of this project is to allow dynamic secrets to be requested from a MySQL database and enable a pod inside a Kubernetes cluster to consume those dynamic passwords. The secrets should be tied to a lease so they expire after a pre-defined ttl and the secrets should be rotated before a max ttl is met.

The implementation should be done so that the pod does not have to understand a specific secret generation tool (e.g. Hashicorp Vault). The application only needs to understand how to read from a file as well as get notified when that file changes.

Features

  • Dynamically pull usernames & passwords from a MySQL database
  • Fetch static secrets from Vault and mirror as Kubernetes secrets

Implementation

This project uses Vault as it's secret distibution tool with the MySQL Secret Backend enabled. It's deployed via a custom ThirdPartyResource and kubernetes controller which implements the Vault API. Credentials are exposed to pods via simple Kubernetes secrets. The application in the pod is only responsible for refreshing it's application state when those credentials are rotated.

Video Walkthrough

Kubernetes Secret Manager

Usage

TL;DR

  1. Deploy mysql (kubectl create -f deployments/mysql.yaml)
  • Deploy Vault (kubectl create -f deployments/vault.yaml)
  • Configure Vault (kubectl exec -it <vaultPodName> /bin/dumb-init /bin/sh)
    • Run config script: setup-vault.sh
  • Deploy Controller:
    • Get the vault root token & copy to args section in deployment yaml (kubectl logs <vaultPodName>)
    • Create deployment: kubectl create -f deployments/secret-manager.yaml
  • Create sample app (kubectl create -f sample-app/deployments/sample-app.yaml)
    • NOTE: This creates 2 custom secrets will in turn request two MySQL accounts from Vault, a readonly and full access account. It will also request a static secret from Vault. They will be stored in Kubernetes secrets named: db-readonly-credentials, db-full-credentials, && foo-secret

Thanks!

Special thanks goes out to Kelsey Hightower for the base ideas of this project: (https://github.com/kelseyhightower/kube-cert-manager)

About

Built by UPMC Enterprises in Pittsburgh, PA. http://enterprises.upmc.com/

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].