‫Uso segredos do Docker para minhas senhas, mas isso
‫apenas cria um arquivo RAM no contêiner.
‫Se alguém invadisse o contêiner, eles poderiam ver
‫o arquivo exatamente como meu aplicativo.
‫Sim e não.
‫Ótimo. Vamos continuar conversando. Existe alguma
‫maneira melhor de fazer isso? Criptografar o conteúdo do segredo?
‫Em seguida, descriptografar o aplicativo de maneira que um hacker
‫não possa descobrir.
‫A realidade aqui
‫é que seu aplicativo precisa ter seu segredo em algum lugar
‫e eles não serão criptografados na memória, certo.
‫Tudo o que sei que está descriptografando coisas criptografadas,
‫está descriptografando-o na memória. Se um hacker
‫tiver raiz no seu contêiner, será
‫capaz de obter essas coisas.
‫Se eles forem espertos o suficiente, poderão conseguir
‫essas coisas, certo.
‫A primeira etapa é não executar seu aplicativo
‫como root no contêiner.
‫Então, eles não podem mexer com nada
‫fora do aplicativo. Eles não podem executar outros
‫utilitários de sistema no contêiner que possam ler toda a memória, certo.
‫A segunda coisa é que realmente
‫existe, a maneira mais segura que vimos é algo como
‫cofre e senhas únicas em que são criadas,
‫usadas pelo aplicativo e depois jogadas fora e
‫não são mais Boa. A realidade é que a maioria das
‫pessoas não está pronta para isso. Os aplicativos da maioria das pessoas não conseguem lidar com isso.
‫Você não pode girar uma chave de API do Twitter a cada
‫cinco minutos para cada aplicativo iniciado, certo.
‫Coisas assim. A próxima melhor
‫coisa é impedir que esse arquivo permaneça permanentemente
‫no disco.
‫Uma segurança Kubernetes
‫e Docker, aqueles ... desculpe segredos, segredos do Kubernetes
‫e segredos do Swarm são algumas das melhores maneiras
‫que eu já vi para criar uma maneira
‫de armazenar senhas em um arquivo
‫falso na RAM. Você pode definir essas permissões para
‫que sejam legíveis apenas pelo seu aplicativo, certo.
‫Portanto, se alguém entrar de alguma forma com um usuário diferente,
‫não que você tenha um usuário
‫diferente necessariamente no contêiner, mas você pode bloquear aqueles para que sejam apenas
‫de leitura, que sejam legíveis apenas pelo usuário esse é
‫o seu aplicativo. Esse é o tipo de coisa, certo.
‫Então é isso mesmo.
‫A única coisa que eu vi melhor ainda os armazena na
‫memória, ainda os armazena sem criptografia.
‫Apenas não os armazena localmente.
‫Portanto, você precisa usar uma API remota como
‫o Vault, o Vault da HashiCorp ou algum outro sistema que
‫forneça senhas únicas. Mas, novamente, essas coisas teriam que ser
‫construídas em todo o sistema. Você teria que projetar a
‫coisa toda. E isso dá muito trabalho, certo.
‫Considerando que, usando os segredos do Kubernetes e do
‫Swarm, você normalmente pode fazer essas coisas no
‫mesmo dia, certo. Você pode implementar isso para
‫praticamente qualquer aplicativo, mesmo que seja necessário configurá-los como variáveis de ambiente,
‫porque aplicativos mais antigos exigem coisas nas variáveis de ambiente.
‫Portanto, você pode guardá-los em segredo e, em tempo
‫de execução, ter esses segredos despejados em variáveis
‫de ambiente, se necessário. Mas, eu diria que
‫99% do tempo, meus clientes de consultoria, estão lidando com aplicativos herdados.
‫Quando digo legado, realmente quero dizer tudo antes dos
‫contêineres, que é a maioria dos aplicativos, certo.
‫Passamos 30 anos criando aplicativos sem
‫contêineres antes de tê-los.
‫Então, nós temos muitas coisas regulares.
‫Portanto, a maioria das equipes está apenas procurando como colocar as
‫coisas em contêineres e armazená-las criptografadas em disco, certo.
‫Se estiverem no disco, serão criptografados.
‫Kubernetes e Swarm podem fazer isso.
‫Acho que se você estiver usando segredos, você já
‫é melhor do que 99% das pessoas que vejo, porque
‫poucas pessoas estão usando orquestração e também segredos.
‫É um grupo muito, muito pequeno, um monte de pessoas.
‫Então, sim, acho que você é muito bom lá.