Os aplicativos da Web geralmente exigem segredos como chaves de API, senhas e certificados privados para funcionar, mas armazenar e acessar esses recursos pode deixar os desenvolvedores vulneráveis a riscos de segurança.
Neste artigo, você aprenderá sobre os desafios do gerenciamento de segredos, bem como algumas das práticas recomendadas para gerenciar, armazenar e ler segredos em aplicativos da web.
Segredos são credenciais digitais usadas para autenticação e autorização. Eles gerenciam os direitos de acesso nos níveis humano-aplicativo e aplicativo-a-aplicativo.
Tipos comuns de segredos incluem:
Os segredos fornecem aos usuários e aplicativos acesso a dados, sistemas e serviços confidenciais. É por isso que é fundamental manter os segredos seguros em trânsito e em repouso.
O método mais frequente para armazenar segredos é usar arquivos .env
, geralmente conhecidos como variáveis de ambiente ; no entanto, esses arquivos podem expor dados a usuários não autorizados e o gerenciamento manual dos arquivos pode levar a erros.
Para mais detalhes sobre os riscos apresentados pelos arquivos .env
, leia aqui .
O gerenciamento secreto oferece uma alternativa mais segura.
Para entender o gerenciamento de segredo, primeiro você precisa conhecer o ciclo de vida do segredo.
Um segredo saudável deve seguir este processo:
Geração/criação: O segredo é gerado manualmente pelo usuário ou automaticamente conforme necessário. As senhas geralmente seguem uma política que rege sua criação e uso.
Rotação: uma vez que um segredo está em uso, ele deve ser alterado regularmente, seja criado automaticamente ou por meio de um prompt para criação manual. Se um segredo estiver obsoleto ou expirar, o acesso será bloqueado até que o segredo seja alterado.
Revogação: quando um segredo não é mais necessário ou desejado – por exemplo, quando um funcionário sai de uma empresa ou quando uma atividade suspeita é encontrada – ele é excluído de um usuário ou programa, bloqueando efetivamente o acesso ao recurso. Eliminar segredos desnecessários, expirados, violados ou fracos é uma etapa importante para manter uma excelente higiene secreta.
O gerenciamento de segredo é o processo de gerenciamento seguro e eficiente da produção, rotação, revogação e armazenamento de credenciais durante todo o ciclo de vida do segredo. Pense nisso como uma versão aprimorada do gerenciamento de senhas. Embora o escopo das credenciais gerenciadas esteja se ampliando, o objetivo permanece o mesmo: proteger ativos vitais contra acesso indesejado.
O gerenciamento de segredos reduz ou elimina a participação do usuário na administração de segredos para limitar possíveis pontos de falha.
Em geral, contribui para a segurança em três níveis:
A segurança da infraestrutura impede o acesso não autorizado a contas de usuários e aplicativos, dispositivos e outros elementos de rede.
A segurança do serviço de nuvem restringe e gerencia o acesso a contas de nuvem e serviços críticos baseados em nuvem.
A segurança de dados evita o comprometimento de dados em sistemas vitais, armazenamento, bancos de dados e outros recursos.
No entanto, implementar o gerenciamento de segredos significa integrar medidas de segurança nos níveis mais vulneráveis da infraestrutura de uma organização — nuvens, código, dados e dispositivos — o que pode ser difícil.
Alguns dos riscos comuns ao gerenciamento de segredos incluem:
Visibilidade e reconhecimento incompletos: essa é uma falha específica em modelos descentralizados nos quais administradores, desenvolvedores e outros membros da equipe guardam seus segredos individualmente, quando o fazem. A supervisão aqui significa que certamente haverá falhas de segurança, bem como desafios de auditoria.
Credenciais codificadas/incorporadas: aplicativos e dispositivos IoT são fornecidos e implantados com credenciais padrão codificadas que são fáceis de decifrar usando ferramentas de verificação e ataques simples de adivinhação ou estilo de dicionário.
Credenciais privilegiadas e a nuvem: consoles de administrador de nuvem e virtualização (como os fornecidos pela AWS ou Office 365) concedem aos usuários amplos privilégios de superusuário, permitindo que eles ativem e desativem instantaneamente máquinas virtuais e aplicativos em grande escala. Cada uma dessas máquinas virtuais tem seu próprio conjunto de privilégios e segredos que devem ser controlados.
Ferramentas de DevOps: as equipes de DevOps geralmente usam várias ferramentas e tecnologias para orquestração, gerenciamento de configuração e outras finalidades (por exemplo, contêineres Chef, Puppet, Ansible, Salt e Docker), que dependem de automação e outros scripts que exigem segredos para funcionar.
Contas de fornecedores terceirizados/soluções de acesso remoto: É difícil garantir que a autorização fornecida por acesso remoto ou a terceiros seja usada adequadamente.
Processos manuais de gerenciamento de segredos: Mais técnicas manuais de gerenciamento de segredos implicam em um risco maior de falhas e erros de segurança.
No entanto, existem soluções e práticas recomendadas para resolver esses problemas e manter seus dados confidenciais seguros.
Existem vários métodos que você pode usar para fornecer uma maneira segura para que seus usuários e aplicativos recuperem o que precisam para acessar os sistemas.
Aqui está o que você precisa fazer para criar um sistema eficiente de gerenciamento de segredos em sua organização.
Primeiro, você precisa centralizar seus segredos. Muitos projetos armazenam segredos em sistemas de controle de versão, como GitHub, Bitbucket e GitLab.
A centralização de seus dados facilita o controle de quem pode acessar os segredos e em que horários.
Para centralizar os segredos, você pode salvá-los em um banco de dados ou usar um Gerenciador de Segredos.
Leia mais sobre Secret Managers aqui .
Uma política unificada de gerenciamento de segredos deve fornecer diretrizes rigorosas para a estrutura de segredos (comprimento mínimo, complexidade, uso de caracteres especiais, senhas proibidas, reutilização e duração) enquanto proíbe o uso de segredos padrão ou codificados.
Algumas características fundamentais devem ser incluídas nesta política:
Quando as ações não são automatizadas, você corre o risco de danos causados por erro humano. Tente confiar na tecnologia em vez de humanos para desenvolver, gerenciar, disseminar e manter segredos e remover quaisquer segredos embutidos ou codificados.
Forneça credenciais temporárias para indivíduos ou entidades únicas no nível granular, também conhecidas como segredos dinâmicos , para que, em caso de violação, as credenciais afetadas possam ser revogadas sem afetar toda a infraestrutura de desenvolvimento.
No mínimo, diferentes conjuntos de credenciais devem ser criados para diferentes sistemas ou equipes de produção, idealmente para cada ambiente.
Os segredos devem ser criptografados em trânsito e em repouso para garantir a máxima segurança na rede.
Suas chaves de criptografia devem ser consolidadas na solução de gerenciamento de segredos, permitindo que você estabeleça o controle adequado sobre quem tem acesso a essas chaves.
Para melhorar a supervisão e a responsabilidade, empregue o monitoramento de sessão privilegiada para registrar, auditar e monitorar todas as sessões privilegiadas de contas, usuários, scripts e ferramentas de automação.
A captura de teclas e telas também é uma opção, permitindo visualização e reprodução ao vivo.
Algumas soluções de gerenciamento de sessões com privilégios de negócios também permitem que as equipes de TI detectem comportamentos suspeitos em sessões em andamento e interrompam, bloqueiem ou encerrem a sessão até que a atividade possa ser investigada minuciosamente.
Aproveite a natureza distribuída das redes atuais. Mantenha segredos e dados confidenciais separados, em vez de concentrá-los no mesmo local. Isso facilita o uso e a atualização de segredos na infraestrutura de desenvolvimento.
O gerenciamento de segredos é fundamental para preservar a segurança cibernética de uma organização. Sua organização deve desenvolver uma estratégia central de gerenciamento de segredos que defina regras e processos uniformes para todas as fases do ciclo de vida de um segredo para gerenciar segredos com segurança e eficiência.