No contexto da segurança de aplicativos, um segredo é qualquer informação que prova que o possuidor é quem e o que afirma ser durante o processo de autenticação e autorização.  Se agentes mal-intencionados obtiverem acesso aos segredos, eles obterão acesso não intencional aos seus sistemas, que poderão usar para vários propósitos, incluindo roubar segredos corporativos e informações de clientes ou até mesmo reter seus dados para resgate.

Um exemplo clássico é o nome de usuário e a senha que permitem que um aplicativo acesse seu banco de dados, mas um segredo também pode ser chaves de API, credenciais, certificados e chaves privadas, entre outros tipos de informação. Como os segredos são usados para controlar o acesso aos ativos de uma organização, armazená-los e protegê-los com segurança é crucial para reduzir o risco de a organização ser comprometida.

O que é gerenciamento de segredos?

O gerenciamento de segredos é o processo que uma organização usa para:

  • Identificar dados confidenciais
  • Classificar os dados
  • Rotular os dados
  • Armazenar os dados com segurança
  • Distribuir segredos
  • Alternar (substituir) segredos regularmente

Quando as organizações migram de arquiteturas monolíticas para microsserviços , o número de componentes independentes de aplicativos e infraestrutura — cada um com suas próprias credenciais — aumenta, o que significa que há muito mais segredos para gerenciar.

Maneiras de armazenar segredos

Vamos dar uma olhada mais de perto em duas opções para armazenar segredos com segurança:

Cofre

A abordagem do cofre envolve a instalação de uma ferramenta de gerenciamento de segredos de terceiros. A solução de cofre criptografa cada segredo para impedir que usuários não autorizados o acessem. O cofre expõe uma API para dar aos usuários acesso a segredos com base em políticas estabelecidas. Quando os usuários da API se autenticam, eles só podem acessar os segredos para os quais foram autorizados.

Contras:

  • Você deve autogerenciar a solução e as credenciais
  • Requer que a infraestrutura seja construída em torno dela ou é difícil para as equipes trabalharem de forma independente

Prós:

  • Familiaridade com o setor (a maioria dos desenvolvedores sabe como usar essas ferramentas)
  • Integra-se facilmente com outras ferramentas fornecidas pelo fornecedor do cofre
  • Alguns cofres estão disponíveis gratuitamente

Há muitas ferramentas no mercado que os desenvolvedores podem usar para armazenar e gerenciar segredos criptografados. Para um exemplo de como usar uma ferramenta de gerenciamento de segredos centralmente automatizada, leia nosso blog, “ Protegendo chaves privadas SSL no NGINX com o HashiCorp Vault ”.

Provedores de nuvem

Outra abordagem é usar um provedor de nuvem para gerenciamento de segredos como um serviço. Um benefício é que a ferramenta de gerenciamento de segredos geralmente se integra perfeitamente a outros serviços de nuvem, como bancos de dados gerenciados.  Os serviços de provedores de nuvem também podem oferecer recursos como rotação automática, embora pesquisas futuras sejam necessárias para verificar se essa opção resulta em tempo de inatividade.

Contras:

  • Geralmente não é grátis

Prós:

  • O acesso e a interface do usuário são configurados e gerenciados pelo provedor de nuvem
  • Integra-se bem com outros serviços de provedores de nuvem
  • Pode ser gerenciado com uma ferramenta de infraestrutura como código
Onde não guardar segredos

Os segredos devem ser gerenciados com cuidado para evitar interrupções no aplicativo quando forem desbloqueados e acessados. Uma prática recomendada é nunca verificar segredos em um sistema de controle de origem. Armazenar segredos ali expõe uma organização a possíveis desastres caso os segredos sejam acessados ou comprometidos acidentalmente quando uma equipe ou indivíduo atualiza o código ou o aplicativo. Por esse motivo, se um segredo for verificado no controle de origem, mesmo que brevemente, ele deve ser tratado como comprometido. Os dados confidenciais devem ser removidos do repositório e apagados do histórico do sistema de controle de origem.