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. Aspectos de segurança ao usar
    infraestrutura imutável
    @fernandoike

    View Slide

  2. Fernando Ike
    IT Director @ Nuveo
    // [email protected]
    // linkedin.com/in/fernandoike
    // twitter.com/fernandoike
    // www.10deploys.com
    // https://www.maburix.com

    View Slide

  3. View Slide

  4. View Slide

  5. 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)

    View Slide

  6. View Slide

  7. 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

    View Slide

  8. View Slide

  9. 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

    View Slide

  10. - 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

    View Slide

  11. - (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

    View Slide

  12. View Slide

  13. “Sinônimos”
    ● Immutable Infrastructure
    ● Immutable Server
    ● Immutable Delivery
    ● Golden Images
    ● Phoenix Servers vs Snowflake Servers
    ● Pets vs Cattle
    ● Infrastructure as Code

    View Slide

  14. View Slide

  15. View Slide

  16. View Slide

  17. View Slide

  18. 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

    View Slide

  19. Snowflake Servers

    View Slide

  20. View Slide

  21. 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

    View Slide

  22. Por que (Quando) a ordem dos comandos é importante?
    ● Dependência Circular
    ● Comandos certos na ordem errada
    ● Pacotes certos na ordem errada

    View Slide

  23. View Slide

  24. 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

    View Slide

  25. View Slide

  26. 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

    View Slide

  27. View Slide

  28. View Slide

  29. Phoenix Servers

    View Slide

  30. https://www.thoughtworks.com/insights/blog/moving-to-phoenix-server-pattern-introduction

    View Slide

  31. View Slide

  32. Container
    Infrastructure
    Hypervisor
    Docker
    App A
    Artifact
    Bin/Libs
    App B
    Bin/Libs
    App C
    Bin/Libs

    View Slide

  33. 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

    View Slide

  34. View Slide

  35. 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”

    View Slide

  36. View Slide

  37. 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”

    View Slide

  38. 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)

    View Slide

  39. View Slide

  40. 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

    View Slide

  41. 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

    View Slide

  42. View Slide

  43. 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

    View Slide

  44. View Slide

  45. Pontos de atenção
    ● Centralização de Logs
    ● Feature toggle
    ● Observability
    ● Múltipla Versões (“temporariamente”) em produção

    View Slide

  46. 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

    View Slide

  47. Quando não usar
    ● Serviços que mantenham o estado localmente
    ● Serviços Stateful
    ● Serviços de infraestrutura base

    View Slide

  48. Testes de “aceitação”
    ● Testes de segurança
    ● Testes dos serviços
    ● Testes de conformidade
    ● Testes de integração

    View Slide

  49. View Slide

  50. 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

    View Slide

  51. 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”

    View Slide

  52. View Slide

  53. Demo

    View Slide

  54. https://github.com/maburix/immutable_infrastructure

    View Slide

  55. 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

    View Slide

  56. Fernando Ike
    IT Director @ Nuveo
    // [email protected]
    // linkedin.com/in/fernandoike
    // twitter.com/fernandoike
    // www.10deploys.com
    // https://www.maburix.com

    View Slide