Secrets Management

Secrets management services allow to put all secrets in one place and protect it.

Secrets management services allow to put all secrets in one place and protect it. The goal is to reduce attack surface and make secrets management easy.

Types of Secrets

  • Application Secrets - secrets used as part of your application (E.g. API keys, SMTP credentials)
  • Bootstrap Secrets - secrets used to provision foundational services of your infrastructure (e.g. Vault keys)
  • Organizational Secrets - secrets shared by members of organizations (E.g. shared logins for SaaS)
  • TLS Keys - secrets used for client-side encryption (E.g. SSH, Kubernetes APIs)
  • AWS Credentials - secrets used to access AWS services

Use-cases

There are a number of different use-cases for managing secrets. The ones we’ll address in this documentation are specificially:

  • Secrets for Local Development - how to store shared secrets for local development environments (Application Secrets, AWS Credentials)
  • Secrets for Kubernetes - how to store secrets for consumption by kubernetes services (Application Secrets, AWS Credentials, and Bootstrap Secrets)
  • Secrets for Terraform - how to store secrets necessary for provisioning infrastructure using terraform (Bootstrap Secrets, AWS Credentials)
  • Secrets for CI/CD - how to store secrets consumed by CI/CD pipelines

System of Record

The “System of Record” is the authorative source for where secrets are kept. For any given secret, there should be a single “source of truth”.

Depending on the underlying technology, there will be a few different systems. For example, we prescribe a combination of SSM+KMS for platform services managed with Chamber, encrypted S3 buckets for master private keys, Kubernetes secrets for services running within a Kubernetes cluster, and 1Password for Teams as a last resort for all other secrets.

API

The API is the interface by which secrets are passed to the underlying system. Whenever possible, we presecribe using the 12-factor style environment variables.

Key Rotation

Keys should be rotated as often as possible or reasonable. The more frequently keys are rotated, the more the keys are devalued.

Audit Trails