O gerenciamento adequado dos segredos de um aplicativo sempre foi um desafio. Novos desafios surgiram com a adoção da nuvem. Há uma ótima apresentação da OWASP sobre a realidade e os desafios de armazenar segredos na nuvem.
Você pode se surpreender ao saber que armazenar segredos no código-fonte é uma das soluções (ou "arquitetura") apresentada. Isso porque, no momento, não há arquitetura perfeita ou maneira de fazer isso. No final, seus segredos podem ser criptografados ... mas o que está protegendo a chave de criptografia? "Tartarugas até o fim", disseram.
Todo tipo de gerenciamento secreto tem seus pontos fortes e fracos, e a apresentação já cobre isso. Em vez disso, tentarei analisar alguns dos recursos que você pode estar procurando em uma solução de gerenciamento secreto (credencial):
- Controle de acesso: você pode conceder acesso de gravação a administradores e acesso de leitura a aplicativos? Você pode limitar o que os aplicativos conseguem ler (o aplicativo A tem acesso apenas a esses segredos)?
- Logs de auditoria: necessários para muitos relatórios de conformidade e uma boa maneira de descobrir se algo está errado
- Armazenamento seguro dos segredos: como a solução armazena os segredos? DB criptografado? FS criptografado? Quem / o que possui a chave de criptografia, se houver? Como essa chave é usada - uma vez na inicialização e depois descartada com segurança?
- Rotação ou renovação de chaves / senhas: se um segredo for comprometido, você pode revogá-lo e enviar um segredo atualizado para os aplicativos? Os aplicativos podem / devem agrupar o serviço de gerenciamento secreto?
- Compatibilidade: Algumas dessas soluções oferecem forte integração com certos idiomas ou estruturas. Alguns oferecem API REST. Você está interessado nisso?
Observando esses itens, como eles são importantes para você e como são implementados pela solução, você poderá escolher um dos serviços de gerenciamento secreto disponíveis .