paint-brush
Descubra algumas das melhores práticas para gerenciamento de segredospor@pragativerma
1,018 leituras
1,018 leituras

Descubra algumas das melhores práticas para gerenciamento de segredos

por Pragati Verma1m2022/05/25
Read on Terminal Reader
Read this story w/o Javascript

Muito longo; Para ler

certificados funcionem, 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. O que são segredos? 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.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Descubra algumas das melhores práticas para gerenciamento de segredos
Pragati Verma HackerNoon profile picture


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.


O que são segredos?

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:


  • Senhas geradas automaticamente
  • Senhas de usuário
  • Senhas de sistema para sistema
  • Senhas do banco de dados
  • Tokens de autorização
  • Chaves de aplicativo e APIs
  • Chaves de criptografia privadas
  • chaves SSH
  • Certificados privados (TLS, SSL)
  • senhas descartáveis


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.


O que é gerenciamento de segredo?

Para entender o gerenciamento de segredo, primeiro você precisa conhecer o ciclo de vida do segredo.

Ciclo de Vida dos Segredos

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.


Por que o gerenciamento de segredos é importante?

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.


Desafios para o gerenciamento de segredos

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.


Práticas recomendadas para gerenciamento de segredos

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.


Acesso/controle centralizado

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 .


Crie uma política de gerenciamento de segredo

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:


  • Limite o uso de segredos codificados e senhas padrão.
  • Defina restrições rigorosas de formato de senha.
  • Em instâncias específicas, especifique a revogação secreta necessária.
  • Defina um limite de tempo para a rotação secreta obrigatória.


Automatize os processos de gerenciamento de segredos

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.


Use permissões granulares que podem ser revogadas

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.


Criptografe segredos o tempo todo

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.


Auditar Sessões Privilegiadas

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.


Mantenha os dados separados

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.


Conclusão

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.