Store secrets in a secret manager (or encrypted KMS-backed store) and inject them at runtime (env/volume), not in git or plain config files. Rotate secrets and follow least privilege.
**Config** is non-sensitive (feature flags, timeouts, endpoints). **Secrets** are sensitive credentials (API keys, DB passwords, signing keys). The goal is to prevent accidental exposure and enable controlled rotation.