• Nenhum resultado encontrado

BERNARDO DONADIO QUANDO A BALEIA AZUL ENCALHA

N/A
N/A
Protected

Academic year: 2021

Share "BERNARDO DONADIO QUANDO A BALEIA AZUL ENCALHA"

Copied!
25
0
0

Texto

(1)

QUANDO A BALEIA

AZUL ENCALHA

(2)

• Engenheiro de Automação de TI na

Stone Pagamentos

• Membro da equipe de PaaS

• https://bcdonadio.com

• bcdonadio@bcdonadio.com

QUEM SOU

(3)

• REFERENCE LEAK

• DAEMON FREEZE

• BROKEN WHITEOUT

• DEVICEMAPPER MEMORY USAGE

• DNS RACE CONDITION

• TLS INSECURITY

AGENDA

Problemas enfrentados

(4)

REFERENCE

LEAK

(5)

REFERENCE LEAK

O bug mais ladino que eu já encontrei

SETEMBRO DE 2017

(6)

PROBLEMA

• Contadores de utilização que não diminuem • Diversos pontos no kernel Linux

• Difícil de isolar (situação de corrida)

REFERENCE LEAK

O bug mais ladino que eu já encontrei

SETEMBRO DE 2017 BUGREPORT EXISTE DESDE MAIO DE 2014 MOBY #5618 BUGREPORT ABERTO ATUALMENTE 388 COMENTÁRIOS NO BUGREPORT 5 VEZES “CORRIGIDO”

IMPACTO

• Impossível fazer CRUD de containers

WORKAROUND

• Desabilitar IPv6

• Colocar docker0 em modo promíscuo • Usar poucos containers por nó

(7)

DAEMON

FREEZE

(8)

DAEMON FREEZE

Irritante, mas contornável

SETEMBRO DE 2017

(9)

PROBLEMA

• Docker daemon para de responder requisições • Aparentemente relacionado ao subsistema de

storage

DAEMON FREEZE

Irritante, mas contornável

SETEMBRO DE 2017 BUGREPORT EXISTE DESDE JUNHO DE 2015 MOBY #13885 BUGREPORT ABERTO ATUALMENTE 174 COMENTÁRIOS NO BUGREPORT SEM TENTATIVAS DE CORREÇÃO

IMPACTO

• Impossível interagir com o daemon

WORKAROUND

• Executar operações a uma taxa baixa

• Detectar “docker ps” demorando mais de 5s e reiniciar o daemon

(10)

BROKEN

WHITEOUT

POR QUE NÃO DEVEMOS USAR FILESYSTEMS BLEEDING EDGE

(11)

BROKEN WHITEOUT

Por que não devemos usar filesystems bleeding-edge

SETEMBRO DE 2017

$ echo “Fernando Collor presidente” > arquivo

$ rm –f arquivo

$ cat arquivo

(12)

PROBLEMA

• AUFS whiteout não lida direito com diretórios • AUFS é o backing storage padrão do Docker CE

BROKEN WHITEOUT

Por que não devemos usar filesystems bleeding-edge

SETEMBRO DE 2017 BUGREPORT EXISTE DESDE DEZEMBRO DE 2014 MOBY #9690 BUGREPORT FECHADO MAS AINDA REPRODUZÍVEL 4 COMENTÁRIOS NO BUGREPORT 1 TENTATIVA DE CORREÇÃO

IMPACTO

• Arquivos deletados em camadas inferiores voltam a existir

• Quebra apps que carregam arquivos de um diretório inteiro

WORKAROUND

• Usar backing storages alternativos: Overlay2, DeviceMapper ou BTRFS

(13)

DEVICEMAPPER

MEMORY USAGE

(14)

DEVICEMAPPER MEMORY

A robustez tem custo

(15)

PROBLEMA

• DeviceMapper duplica blocos em memória

DEVICEMAPPER MEMORY

A robustez tem custo

SETEMBRO DE 2017 ESCOLHA CONSERVADORA DA REDHAT DOCUMENTADO MAS POUCO ÓBVIO NO GUIA DO USUÁRIO CORREÇÃO IMPOSSÍVEL SEM BUGREPORT

WORKAROUND

• Usar backing storages alternativos: Overlay2, AUFS ou BTRFS (com custo de estabilidade)

IMPACTO

• Uso de memória cresce linearmente com mais instâncias de uso da mesma imagem

(16)

DNS RACE

CONDITION

(17)

DNS RACE CONDITION

A Glibc também não colabora

(18)

PROBLEMA

• Situação de corrida entre query IPv4 e IPv6 • Golang faz uso inseguro da Glibc

DNS RACE CONDITION

A Glibc também não colabora

SETEMBRO DE 2017 BUGREPORT EXISTE DESDE SETEMBRO DE 2013 GOLANG #6336 BUGREPORT FECHADO MAS AINDA REPRODUZÍVEL 39 COMENTÁRIOS NO BUGREPORT 1 TENTATIVA DE CORREÇÃO

IMPACTO

• Resolução errática de nomes tanto no daemon como nos containers

WORKAROUND

(19)

TLS

INSECURITY

(20)

TLS INSECURITY

Na dúvida, permite tudo

(21)

PROBLEMA

• Socket de controle do Docker não é seguro por default • Se campo ExtendedKeyUsage não existe, permite tudo • Documentação induz ao erro

TLS INSECURITY

Na dúvida, permite tudo

SETEMBRO DE 2017 REPORTADO EM AGOSTO DE 2017 REPORTADO PRIVADAMENTE AO TIME DE SEGURANÇA RESPOSTA INSATISFATÓRIA 1 CORREÇÃO NAS DOCS

WORKAROUND

• Enforçar obrigatoriedade do campo ExtendedKeyUsage na CA

IMPACTO

• Escalada lateral de privilégios

• Quando um host Docker é comprometido, todos os outros também são

(22)

CONCLUSÕES

FINAIS

BOAS PRÁTICAS PARA LIDAR COM UMA PLATAFORMA ETERNAMENTE INSTÁVEL

(23)

CONCLUSÕES FINAIS

Boas práticas para lidar com uma plataforma eternamente instável

SETEMBRO DE 2017

• Não use versões bleeding edge do Docker em produção

• Se agarre em algum vendor (Red Hat, Canonical)

• Ponha apenas apps 12-factor compliant no Docker

(24)

CONCLUSÕES FINAIS

Boas práticas para lidar com uma plataforma eternamente instável

SETEMBRO DE 2017

• Use DeviceMapper ou Overlay2 como backing storage

• Preste muita atenção nas configurações de segurança do Docker

• Use Docker com SELinux ou Apparmor

(25)

OBRIGADO.

BERNARDO DONADIO

Referências

Documentos relacionados

Agora a OMS teria de enfrentar o mundo, e, embora a medida para conter a população mundial não tenha sido de todo inválida, posto que o planeta estivesse prestes a

O presente trabalho tem como objetivo demonstrar alguns aspectos relevantes sobre o arquivamento do inquérito policial, onde primeiramente é preciso conceituar o

Vale frisar, apesar de não ser o foco de tal artigo, que se passaram 30 anos do advento da Lei n.7.210/84 não havendo regulamentação legal sobre o tema, visto que não poderá ser

Não encontrada a solução no sistema global, a vitima em causa pode buscar a solução no sistema regional em que a violação ocorreu, peticionando á Corte Interamericana

Quando Vicente Greco menciona quanto a existência de um sistema global, traz a ideia que a ilicitude da prova vai de encontro não só ao ordenamento jurídico constitucional

Com a modificação na sua estrutura organizacional, a entidade familiar passou por grandes mudanças no que diz respeito ao relacionamento de seus membros. Ficando

O primeiro passo para introduzir o MTT como procedimento para mudança do comportamento alimentar consiste no profissional psicoeducar o paciente a todo o processo,

No livro básico de Reinos de Ferro RPG as munições são divididas em 4 tipos: leve, pesada, de carga e de escopeta. Além disso, elas podem ser revestidas de