Humanos e máquinas usam segredos por todo o fluxo de valor ao construir e operar software. As pipelines de compilação precisam de segredos para fazer interface com infraestruturas seguras como registros de contêiner, as aplicações usam chaves de API como segredos para ter acesso aos recursos de negócio, e as comunicações serviço-a-serviço são protegidas usando certificados e chaves como segredos. Você pode configurar e recuperar esses segredos de maneiras diferentes. Durante muito tempo, alertamos as pessoas desenvolvedoras sobre o uso de gerenciamento de código-fonte para armazenar segredos. Recomendamos desacoplar o gerenciamento de segredos do código-fonte e usar ferramentas como git-secrets e Talisman para evitar armazenar segredos no código-fonte. Temos usado segredos como serviço como uma técnica padrão para armazenar e acessar segredos. Com essa técnica, você pode usar ferramentas como Vault ou AWS Key Management (KMS) para ler/escrever segredos em um terminal HTTPS com níveis refinados de controle de acesso. Segredos como serviço usam provedores de identidade externos como AWS IAM para identificar atores que solicitam acesso a segredos. Esses atores se autenticam com o serviço de segredos. Para esse processo funcionar, é importante automatizar o bootstrapping de identidade dos atores, serviços e aplicações. As plataformas baseadas em SPIFFE melhoraram a automação de atribuição de identidades para serviços.
We've long cautioned people about the temptation to check secrets into their source code repositories. Previously, we've recommended decoupling secret management from source code. However, now we're seeing a set of good tools emerge that offer secrets as a service. With this approach, rather than hardwiring secrets or configuring them as part of the environment, applications retrieve them from a separate process. Tools such as Vault by HashiCorp let you manage secrets separately from the application and enforce policies such as frequent rotation externally.