Zum Hauptinhalt springen

Secret Management

Best practices for managing secrets and sensitive configuration.

Secret Categories​

CategoryExamples
AuthenticationJWT_SECRET, JWT_REFRESH_SECRET
DatabaseDB_PASS, connection strings
File storageAWS_SECRET_ACCESS_KEY, WASABI_SECRET_ACCESS_KEY
OAuthGOOGLE_CLIENT_SECRET, GITHUB_CLIENT_SECRET
EmailMAIL_PASSWORD, SMTP credentials
IntegrationsSENTRY_DSN, API keys
Private registryVERDACCIO_TOKEN

Storage Methods​

Store secrets as environment variables, injected at runtime:

export JWT_SECRET=$(openssl rand -base64 32)
export DB_PASS=$(openssl rand -base64 24)

Docker Secrets​

For Docker Swarm deployments:

secrets:
db_password:
external: true
services:
api:
secrets:
- db_password

GitHub Secrets​

For CI/CD pipelines, store secrets in GitHub Secrets:

env:
JWT_SECRET: ${{ secrets.JWT_SECRET }}
DB_PASS: ${{ secrets.DB_PASS }}

Cloud Secret Managers​

ProviderService
AWSAWS Secrets Manager
GCPGoogle Secret Manager
AzureAzure Key Vault
HashicorpVault

Security Practices​

PracticeRecommendation
Secret rotationRotate every 90 days
Minimum privilegeGrant only required access
Audit loggingLog secret access
No hardcoded secretsNever commit to git
Separate per environmentDifferent secrets for dev/prod