Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Aspectos de segurança ao usar infraestrutura imutável

Aspectos de segurança ao usar infraestrutura imutável

Apresentação sobre Infraestrutura Imutável e segurança no Code4Sec.

Fernando ike

December 05, 2018
Tweet

More Decks by Fernando ike

Other Decks in Technology

Transcript

  1. Fernando Ike IT Director @ Nuveo // [email protected] // linkedin.com/in/fernandoike

    // twitter.com/fernandoike // www.10deploys.com // https://www.maburix.com
  2. Problemas mais comuns - Segurança => TI - Servidores de

    produção mal configurados - Servidores de produção estão levemente diferentes comparando um do outro - Servidores de produção são mais "complicados" para aplicar correções de segurança (Patches)
  3. Problemas mais comuns - Segurança => TI - Gerenciamento de

    usuários privilegiados são difíceis de escalar - Mudanças não autorizados pode ocorrer via acesso remoto (SSH) - Auditar é difícil e complexo
  4. Por que segurança é tão complicado? - Antes - Instalar/atualizar

    servidores era um processo com muito trabalho manual - Servidores custam caro (Dinheiro, capacidade e armazenamento) - TI é péssima em liberar servidores porque geralmente alguma coisa (esquecida) quebra - Segredos, chaves ssh, certificados, string de conexões armazenados no servidor
  5. - Sistema Operacionais são automaticamente provisionados a partir de um

    template - Imagens de containers são automaticamente provisionados a partir de um template Por que segurança é tão complicado? - Agora
  6. - (Micro) serviços surgem e desaparecem rapidamente antes mesmo de

    conseguir catalogá-los (identificá-los) - A rastreabilidade tornou-se mais complexo - A segurança não é mais o gatekeeper das organizações Por que segurança é tão complicado? - Agora
  7. “Sinônimos” • Immutable Infrastructure • Immutable Server • Immutable Delivery

    • Golden Images • Phoenix Servers vs Snowflake Servers • Pets vs Cattle • Infrastructure as Code
  8. Cenário mais comum - Snowflakes • A construção do artefato

    é realizado numa ferramenta de Entrega Contínua • As dependências são (re)instaladas a cada lançamento de versão do artefato • O artefato é implementado nos servidores de homologação • O artefato é implementado nos servidores de produção
  9. Uma (falsa) premissa “A maneira mais econômica de garantir que

    o comportamento de dois servidores permanecerá completamente idêntico é sempre a implementar as mesmas alterações na mesma ordem em ambos anfitriões.” John Willis - @botchagalupe
  10. Por que (Quando) a ordem dos comandos é importante? •

    Dependência Circular • Comandos certos na ordem errada • Pacotes certos na ordem errada
  11. Efeitos colaterais • O repositório do sistema de empacotamento (Composer,

    PIP, GEM, apt, etc.) está indisponível • As dependências quebram porque a biblioteca foo-1.15-1 não está mais disponível • A biblioteca de dependência foobar-1.15-2 quebrou a construção do artefato
  12. Problemas comuns em servidores mutáveis • Aumento da complexidade operacional

    ◦ Mais etapas no Pipeline ◦ Maior tempo de Lead Time ◦ Mais suscetível a falhas de terceiros, ex: repositórios externos
  13. VM Infrastructure Hypervisor App A Artifact Bin/Libs App B Bin/Libs

    App C Bin/Libs Guest OS Guest OS Guest OS VM Infrastructure Hypervisor App A Artifact Bin/Libs App B Bin/Libs App C Bin/Libs Guest OS Guest OS Guest OS
  14. Implementação - Não faça em produção • Atualização de pacotes

    (bibliotecas e dependências) • Alteração de configurações • Modificações na aplicação • “Não usar SSH”
  15. Implementação - Boas práticas • Servidores na Nuvem • Automação

    completa de todo pipeline de serviços • Logs centralizados • Armazenamento de dados em “ambiente” externo • Equipes de desenvolvimento e operações “engajadas”
  16. Implementação - Boas práticas • Estado de serviços, dados da

    aplicação ou qualquer outra informação que deve ser preservada até que outro “servidor” estava “no ar” devem estar em outro local da infraestrutura. (Stateless)
  17. Visibilidade • Onde e quando foi construído e por que?

    • Qual foi a imagem anterior? • Como iniciar, validar, monitorar e atualizá-la? John Willis - @botchagalupe
  18. Visibilidade • Qual repositório está sendo usado e qual hash

    do git foi usado para construir a imagem? • Quais são as tags específicas do container/vm usada como registro do build? • Qual o nome do projeto no qual pertence o artefato John Willis - @botchagalupe
  19. Como tornar Imutável • Provisione um novo servidor • Teste

    o novo servidor • Altera a referência para o novo servidor • Mantenha a versão antiga (temporariamente) para fazer o rollback
  20. Pontos de atenção • Centralização de Logs • Feature toggle

    • Observability • Múltipla Versões (“temporariamente”) em produção
  21. Pontos de atenção • Balanceadores de carga com suporte: ◦

    Canary ◦ Blue/Green ◦ Rolling Deploys • Service Mesh • Boa prática ao usar os códigos de status HTTP
  22. Quando não usar • Serviços que mantenham o estado localmente

    • Serviços Stateful • Serviços de infraestrutura base
  23. Testes de “aceitação” • Testes de segurança • Testes dos

    serviços • Testes de conformidade • Testes de integração
  24. Testes de segurança no pipeline • Análise estática de código

    • Validações de de conformidade de acesso autoriza • Pen-tests • Varredura por dependências com vulnerabilidades
  25. Conclusão Infraestrutura Imutável é tornar como parte do artefato que

    será lançado (instalado) em produção a pilha (stack) completa da aplicação. Maximizando os diversos tipos de testes antes do artefato entrar em “produção”
  26. Referências • https://medium.com/netflix-techblog/building-with-legos-d68368fe4ce • https://martinfowler.com/bliki/PhoenixServer.html • https://martinfowler.com/bliki/SnowflakeServer.html • https://www.oreilly.com/ideas/an-introduction-to-immutable-infrastructure •

    https://www.theregister.co.uk/2013/03/18/servers_pets_or_cattle_cern/ • https://boxfuse.com/blog/no-ssh • https://www.digitalocean.com/community/tutorials/what-is-immutable-infrastructure • https://www.devopsdays.org/events/2018-sao-paulo/welcome/ • https://blog.buoyant.io/2017/04/25/whats-a-service-mesh-and-why-do-i-need-one/ • https://www.thoughtworks.com/insights/blog/moving-to-phoenix-server-pattern-introduction
  27. Fernando Ike IT Director @ Nuveo // [email protected] // linkedin.com/in/fernandoike

    // twitter.com/fernandoike // www.10deploys.com // https://www.maburix.com