O gerenciamento de segredos é o processo de proteção e controle de credenciais nos componentes automatizados de um aplicativo.
Após ler este artigo, você será capaz de:
Conteúdo relacionado
O que é segurança de APIs?
O que é uma chamada de API?
O que é uma violação de dados?
O que é injeção de SQL?
Ransomware
Assine o theNET, uma recapitulação mensal feita pela Cloudflare dos insights mais populares da internet.
Copiar o link do artigo
O gerenciamento de segredos é a prática de armazenar com segurança informações confidenciais que, se vazadas, podem dar a partes maliciosas ou não autorizadas acesso à infraestrutura de aplicativos. Um "segredo" nesse contexto refere-se às chaves de criptografia, chaves de API, chaves SSH, tokens, senhas ou certificados que permitem que partes diferentes da infraestrutura de aplicativos se conectem umas às outras.
Embora um usuário possa precisar apenas de uma senha para fazer login em um aplicativo, esse aplicativo em si é composto por várias partes que precisam de credenciais, ou seja, segredos, para se comunicarem entre si.
Quase todo mundo sabe como é difícil lembrar senhas de vários aplicativos, especialmente quando essas senhas precisam ser atualizadas regularmente. Por causa disso, muitas pessoas acabam adotando práticas de segurança de senha inadequadas, como anotar suas senhas ou usar a mesma senha em todos os aplicativos.
Os desenvolvedores enfrentam desafios semelhantes ao criar software. A infraestrutura que faz os aplicativos funcionarem, ou na qual uma empresa funciona, pode exigir centenas ou até milhões de chaves, tokens e senhas. Como gerenciar todos esses segredos é muito trabalhoso, muitas vezes eles acabam sendo codificados diretamente no software do aplicativo.Eles podem nunca ser atualizados e às vezes são codificados em texto simples, deixando-os vulneráveis a invasores.
No contexto do desenvolvimento de aplicativos, um segredo é um dado usado como credencial. Assim como uma pessoa precisa se autenticar para acessar seu e-mail, digitando um nome de usuário e uma senha, os componentes não humanos desse aplicativo de e-mail (ou de qualquer aplicativo) precisam se autenticar uns aos outros para que o aplicativo funcione. Esses componentes podem incluir conexões de API, contêineres, microsserviços, scripts, funções e ferramentas de automação. Para se autenticar, eles usam credenciais.
Os segredos podem incluir:
Pense em como os blocos de construção infantis (como LEGO®) se encaixam para formar uma estrutura robusta, ainda que em miniatura. Os segredos são como aqueles mecanismos de travamento que mantêm um aplicativo unido. Sem eles, o aplicativo não funciona.
Ao contrário dos blocos de construção, que sempre têm as mesmas saliências para se encaixarem uns nos outros, os segredos precisam ser trocados regularmente. Se um segredo for usado por muito tempo, um invasor poderá adivinhá-lo por meio de tentativas de quebra de senha com força bruta. Além disso, quanto mais tempo um segredo for usado, maior será a probabilidade de vazamento.
A necessidade de alternar segredos aumenta a complexidade de gerenciá-los com segurança. Assim como lembrar uma senha atualizada pode ser difícil, alternar regularmente os segredos é um grande desafio. Uma dúzia de aplicativos pode depender de uma única API, e todos esses aplicativos terão que atualizar seus segredos se a API exigir novas credenciais. Em alguns casos, uma organização pode nem mesmo saber quantos aplicativos dependem dessa API e o que será interrompido quando um segredo for atualizado.
Às vezes, as equipes de desenvolvimento optam por não atualizar os segredos por uma questão de eficiência, assim como muitas pessoas preferem não atualizar suas senhas. Elas podem até mesmo codificar segredos em scripts e funções, presumindo que os segredos não precisarão ser alterados.
Compartilhamento manual: os desenvolvedores que não dispõem de uma solução de gerenciamento de segredos podem ser forçados a usar processos manuais para compartilhar segredos entre as equipes de desenvolvimento, o que leva a uma documentação deficiente e à introdução de segredos em ambientes não seguros.
Contas de terceiros: usuários externos podem precisar de acesso a APIs e bancos de dados internos. Como eles estão fora da organização, é difícil aplicar o gerenciamento seguro de segredos.
Computação em nuvem: os ambientes em nuvem são extensos e efêmeros. Novas instâncias de máquinas virtuais são ativadas para oferecer suporte a serviços regularmente, e todas elas exigem seus próprios segredos. Os aplicativos em nuvem também permitem amplo acesso a partir de uma variedade quase ilimitada de locais, expandindo enormemente o número de credenciais e privilégios que devem ser gerenciados.
Falta de gerenciamento centralizado: assim como conseguir que um grupo de pessoas chegue a um acordo sobre o horário do jantar pode ser um desafio, gerenciar segredos espalhados por várias equipes e funções é difícil. Cada equipe pode documentar os segredos de forma diferente, armazená-los de forma diferente ou não ter visibilidade dos segredos que outras equipes estão usando.
As ferramentas de gerenciamento de segredos podem automatizar todos os processos necessários para gerenciar segredos com segurança. Elas também armazenam segredos em um ambiente seguro, separado do código do aplicativo. Isso permite que os desenvolvedores evitem codificar segredos ou armazená-los em texto simples, onde poderiam ser comprometidos.
A Cloudflare oferece uma plataforma de desenvolvimento altamente escalável para executar códigos em sua rede global. O Cloudflare Secrets Store permite que os desenvolvedores armazenem e gerenciem com segurança os segredos de que seus aplicativos precisam, desde tokens de API até cabeçalhos de autorização de solicitações. Saiba mais sobre o Secrets Store.