{"id":12762,"date":"2018-02-23T09:12:17","date_gmt":"2018-02-23T12:12:17","guid":{"rendered":"https:\/\/king.host\/blog\/?p=12762"},"modified":"2024-06-03T17:05:18","modified_gmt":"2024-06-03T20:05:18","slug":"seguranca-docker-veja-alguns-cuidados","status":"publish","type":"post","link":"https:\/\/king.host\/blog\/tecnologia\/seguranca-docker-veja-alguns-cuidados\/","title":{"rendered":"Seguran\u00e7a no uso do Docker: veja alguns cuidados importantes"},"content":{"rendered":"<p>E ai pessoal! Neste texto vou falar sobre algumas quest\u00f5es ligadas \u00e0 seguran\u00e7a no uso do Docker. Poucas pessoas se preocupam, mas eventualmente a falta de aten\u00e7\u00e3o a alguns fatores pode prejudicar sua aplica\u00e7\u00e3o e seu neg\u00f3cio.<\/p>\n<h2>Preocupa\u00e7\u00f5es relacionadas \u00e0 seguran\u00e7a no uso do Docker<\/h2>\n<p><strong>Kernel exploits (explora\u00e7\u00e3o do kernel)<br \/>\n<\/strong>Ao contr\u00e1rio de uma Virtual Machine, ao usar containers o kernel \u00e9 compartilhado entre todos os containers e o host, aumentando a import\u00e2ncia de qualquer vulnerabilidade que explore o kernel.<\/p>\n<p><strong>Denial-of-service attacks (ataque de nega\u00e7\u00e3o de servi\u00e7o)<br \/>\n<\/strong>Como todos os containers compartilham recursos do kernel, se um container pode monopolizar o acesso a certos recursos, incluindo mem\u00f3ria, ou at\u00e9 IDs de usu\u00e1rio (UIDs), pode faltar recursos para outros containers, resultando em uma nega\u00e7\u00e3o de servi\u00e7o (DoS).<\/p>\n<p><strong>Container breakouts (invas\u00e3o de container)<br \/>\n<\/strong>Um invasor que tem acesso a um container n\u00e3o pode ter acesso a outros containers ou ao host. Se voc\u00ea usa root no container, voc\u00ea ser\u00e1 root no host.<\/p>\n<p><strong>Poisoned images (imagens \u201cenvenenadas\u201d)<br \/>\n<\/strong>Como voc\u00ea sabe que as imagens que voc\u00ea est\u00e1 usando s\u00e3o seguras, n\u00e3o foram adulteradas, e v\u00eam de onde elas afirmam vir?<\/p>\n<p><strong>Application secrets (segredos de aplica\u00e7\u00f5es)<br \/>\n<\/strong>Quando um container acessa um banco de dados ou servi\u00e7o, provavelmente exigir\u00e1 credenciais, como um token ou mesmo usu\u00e1rio e senha. Se um invasor tiver acesso ao container ter\u00e1 acesso a estes dados.<\/p>\n<h2>Boas pr\u00e1ticas de seguran\u00e7a ao usar Docker<\/h2>\n<p>No t\u00f3pico anterior foi levantada algumas preocupa\u00e7\u00f5es de seguran\u00e7a que devemos ter ao usar containers, agora vamos ver algumas poss\u00edveis solu\u00e7\u00f5es para tentar resolver estes problemas.<br \/>\nInicio esse t\u00f3pico com uma pergunta.<br \/>\nComo devemos armazenar dados sens\u00edveis, como senhas, chaves privadas, tokens, chaves de APIs?<br \/>\nPara come\u00e7ar a responder esta pergunta, eu acho mais f\u00e1cil e direto responder como n\u00e3o devemos armazenar dados sens\u00edveis.<br \/>\nN\u00e3o use vari\u00e1veis de ambiente ou incorpore na imagem de container. \u00c9 uma dica meio \u00f3bvia mas acontece e muito. Se quiserem ler sobre um caso, de utiliza\u00e7\u00e3o de credenciais incorporadas na imagem e que vazou, tem um consideravelmente conhecido que aconteceu com a IBM: IBM Data Science Experience: Whole-Cluster Privilege Escalation Disclosure.<\/p>\n<p>Mas como ent\u00e3o devemos armazenar nossas credenciais de acesso quando usamos containers? Uma \u00f3tima solu\u00e7\u00e3o \u00e9 utilizar o Docker Secrets Management.<\/p>\n<h3>Docker Secrets Management<\/h3>\n<p>O Docker Secrets funciona como um cofre onde voc\u00ea pode colocar coisas sens\u00edveis l\u00e1 e s\u00f3 quem tem a chave do cofre consegue utilizar, no caso essa chave \u00e9 designada aos n\u00f3s dos servi\u00e7os que a chave for atribu\u00edda. Mais de como funciona pode ser visto no blog <a href=\"http:\/\/www.mundodocker.com.br\/docker-secrets\/\" target=\"_blank\" rel=\"noopener\">Mundo Docker &#8211; Docker Secrets<\/a>.<\/p>\n<p>Outras dicas de seguran\u00e7a menciono abaixo em forma de t\u00f3picos:<\/p>\n<p><strong>Proteja seu host<\/strong><\/p>\n<ul>\n<li>Certifique-se de que seu host e a configura\u00e7\u00e3o do Docker engine sejam seguras<\/li>\n<li>Mantenha seu SO atualizado<\/li>\n<li>Impor controle de acesso para evitar opera\u00e7\u00f5es indesejadas, tanto no host como nos containers, usando ferramentas como SecComp, AppArmor ou SELinux<\/li>\n<\/ul>\n<p><strong>Redu\u00e7\u00e3o dos privil\u00e9gios<\/strong><\/p>\n<ul>\n<li>Tomar cuidado ao executar como root<\/li>\n<li>Crie namespaces isolados<\/li>\n<li>Limitar privil\u00e9gios ao m\u00e1ximo<\/li>\n<li>Verifique se o container \u00e9 confi\u00e1vel (verifique a imagem)<\/li>\n<\/ul>\n<p><strong>Alto uso de recursos do container<\/strong><\/p>\n<ul>\n<li>Limite os recursos no kernel ou no container<\/li>\n<li>Fazer testes de carga antes de p\u00f4r em produ\u00e7\u00e3o<\/li>\n<li>Implemente monitoramento e alertas<\/li>\n<\/ul>\n<p><strong>Autenticidade da imagem<\/strong><\/p>\n<ul>\n<li>De onde veio?<\/li>\n<li>Voc\u00ea confia no criador?<\/li>\n<li>Quais pol\u00edticas de seguran\u00e7a est\u00e1 usando?<\/li>\n<li>Identifica\u00e7\u00e3o do autor<\/li>\n<li>N\u00e3o use se n\u00e3o confia na fonte<\/li>\n<li>Use um servidor Docker Registry pr\u00f3prio<\/li>\n<li>Verifique a assinatura da imagem<\/li>\n<\/ul>\n<p><strong>Vulnerabilidades de seguran\u00e7a presentes na imagem<\/strong><\/p>\n<ul>\n<li>Inspecionar as imagens<\/li>\n<li>Atualize para pegar novos patches de seguran\u00e7a<\/li>\n<li>Utilize uma ferramenta de scanner de vulnerabilidades<\/li>\n<li>Integre esse scanner como etapa do seu CI\/CD<\/li>\n<\/ul>\n<p>E a\u00ed, curtiu esse material sobre seguran\u00e7a no uso do Docker? Fique por dentro dos outros materiais relacionados ao assunto <a href=\"https:\/\/king.host\/blog\/?s=docker\">clicando aqui<\/a>!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>E ai pessoal! Neste texto vou falar sobre algumas quest\u00f5es ligadas \u00e0 seguran\u00e7a no uso do Docker. Poucas pessoas se preocupam, mas eventualmente a falta de aten\u00e7\u00e3o a alguns fatores pode prejudicar sua aplica\u00e7\u00e3o e seu neg\u00f3cio. Preocupa\u00e7\u00f5es relacionadas \u00e0 seguran\u00e7a no uso do Docker Kernel exploits (explora\u00e7\u00e3o do kernel) Ao contr\u00e1rio de uma Virtual [&hellip;]<\/p>\n","protected":false},"author":285,"featured_media":12772,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1179,8],"tags":[1359],"class_list":["post-12762","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desenvolvimento","category-tecnologia","tag-seguranca-digital"],"_links":{"self":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts\/12762","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/users\/285"}],"replies":[{"embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/comments?post=12762"}],"version-history":[{"count":8,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts\/12762\/revisions"}],"predecessor-version":[{"id":35528,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts\/12762\/revisions\/35528"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/media\/12772"}],"wp:attachment":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/media?parent=12762"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/categories?post=12762"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/tags?post=12762"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}