Background:
We have product development teams, where each team has one or two QA engineers. They run tests from their local machines. Here is what they require:
- Application credentials (a clientId and a clientSecret), which enable them to login and retrieve an access token via a login API service to test APIs.
- Third party free trial login/passwords to test integrations with third party services. The free trial accounts expire after 30 days and then need to be recreated.
Challenges we're facing
Application credentials are generated by a team lead or senior developer. However, our IT team has sole access to the secret manager tool we use, so this requires engineers to share the secret they generated in our proprietary chat system. This does not seem secure to me.
According to Gleb Bahmutov, a core committer on the Cypress testing framework, passwords for test credentials should be Kept secret in e2e tests. We do see the value in that, since test credentials can be used to conduct flanking attacks in some cases. He doesn't commit passwords, but he injects the password via environment variables, which may not be a secure practice.
Questions:
Who should own the application secrets? Do IT Security professionals manage them exclusively, or should the owners be the same people who generated the secret? (We're sharing them in chat in order to get them to the people who can add them.)
The integration test accounts are transitory in nature and expire every 30 days. Do these really need to be treated as highly sensitive secrets stored in the secret manager? Can these go directly in the codebase? If not, where should they go? If they belong in a secret manager, how can these be managed so that the QA engineers don't face unnecessary struggles in keeping them up to date? Are these transitory, free trial test accounts really secrets?
I've searched the Internet repeatedly and cannot find much material on what is and isn't a secret, just technical documentation about how secret managers and key management stores work. I know how to integrate with them and have helped many of our teams get setup, but I'm looking for practical information on how to help others determine exactly what the best practices are for using secret managers in terms of what to store and who should manage them. I'm happy to be pointed to documentation that will help me understand this better.