A secret is any piece of information that grants access to a system or resource and must be kept confidential. Database passwords, API keys, OAuth tokens, TLS certificates, private SSH keys, and service account credentials. The defining characteristic of a secret is that its exposure gives an attacker the same access as a legitimate user or service.
The scope of secrets in a modern application is broader than many teams realise. A microservices application might have dozens of secrets, each service needs credentials to access the database, to call downstream APIs, to publish to message queues, and to read from configuration stores. Each of these is a potential point of failure if not properly managed.
Secrets differ from other configuration in one critical way. Exposure has immediate security consequences, while exposure of non-sensitive configuration (a database hostname, a feature flag value) does not. This distinction drives different handling requirements. Secrets must be encrypted in storage, in transit, and in memory where possible, and every access must be audited.