<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Containers on Allyson Oliveira</title><link>https://www.allysonoliveira.com.br/tags/containers/</link><description>Recent content in Containers on Allyson Oliveira</description><generator>Hugo -- gohugo.io</generator><language>pt-br</language><lastBuildDate>Sat, 08 Apr 2023 07:16:50 +0000</lastBuildDate><atom:link href="https://www.allysonoliveira.com.br/tags/containers/index.xml" rel="self" type="application/rss+xml"/><item><title>Começando com segurança em container</title><link>https://www.allysonoliveira.com.br/posts/basic-secuirty-container/</link><pubDate>Sat, 08 Apr 2023 07:16:50 +0000</pubDate><guid>https://www.allysonoliveira.com.br/posts/basic-secuirty-container/</guid><description>&lt;p>O &lt;em>Docker&lt;/em> é uma plataforma de software que permite a criação, o teste e a implantação de aplicações rapidamente. Se você quer conhecer mais sobre essa tecnologia, pode clicar nesse &lt;a class="link" href="https://www.docker.com" target="_blank" rel="noopener"
>link&lt;/a>.&lt;/p>
&lt;p>&lt;img src="https://www.allysonoliveira.com.br/img/seguranca-containers.png"
loading="lazy"
alt="Segurança em Containers"
>&lt;/p>
&lt;p>Sendo uma tecnologia muito utilizada, devemos ter um olhar crítico com relação à segurança. Antigamente, existia uma grande discussão sobre velocidade de entrega de software versus segurança, onde se tinha a visão de que para entregar uma &lt;em>aplicação ágil e moderna, temos que abrir mão de segurança&lt;/em> — o que &lt;strong>não é verdade&lt;/strong>. Hoje, principalmente com ambientes em nuvem, não é necessário deixar a segurança da informação de lado, sendo possível entregar a aplicação de maneira segura em todas as etapas.&lt;/p>
&lt;p>Vamos detalhar alguns pontos que temos que ficar atentos:&lt;/p>
&lt;hr>
&lt;h2 id="1-rode-o-docker-no-modo-rootless-mode">1. Rode o Docker no modo &amp;ldquo;Rootless Mode&amp;rdquo;
&lt;/h2>&lt;p>O Rootless mode significa rodar o daemon do Docker e qualquer container com um usuário &lt;strong>sem privilégio de root&lt;/strong>, sendo totalmente importante para mitigar vulnerabilidades.&lt;/p>
&lt;p>Para rodar o seu Docker em rootless mode:&lt;/p>
&lt;ol>
&lt;li>Instale o Docker em modo &amp;ldquo;rootless&amp;rdquo; — veja as instruções na documentação oficial.&lt;/li>
&lt;li>Use esse comando para iniciar o daemon do Docker quando o host iniciar:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>systemctl --user enable docker
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo loginctl enable-linger &lt;span style="color:#66d9ef">$(&lt;/span>whoami&lt;span style="color:#66d9ef">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="3">
&lt;li>Para rodar um container com rootless:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker context use rootless
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker run -d -p 8080:80 nginx
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Para saber se seu container está rodando com privilégio root, rode o seguinte comando:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker inspect --format&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#39;{{.HostConfig.Privileged}}&amp;#39;&lt;/span> $containerID
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Se a resposta for &lt;code>false&lt;/code>, a configuração está correta. Caso seja &lt;code>true&lt;/code>, o ideal é parar o container e rodá-lo como rootless (ou refazer a instalação do Docker).&lt;/p>
&lt;h2 id="2-limites-de-containers">2. Limites de containers
&lt;/h2>&lt;p>É fundamental rodar os containers com &lt;strong>limite de recursos&lt;/strong>, pois caso algum container seja invadido e se tenha acesso ao ambiente, o container não poderá usar todo o recurso de CPU e memória disponível. Essa configuração deve ser feita na hora do &lt;code>docker run&lt;/code>, conforme a &lt;a class="link" href="https://docs.docker.com/config/containers/resource_constraints/" target="_blank" rel="noopener"
>documentação oficial&lt;/a>.&lt;/p>
&lt;h2 id="3-isolamento-de-container">3. Isolamento de container
&lt;/h2>&lt;p>O isolamento do container previne que um acesso indevido chegue ao host ou a outros containers. Para melhorar ainda mais o isolamento, podemos utilizar algumas ferramentas:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Linux Namespace:&lt;/strong> com o Linux Namespace, é possível criar um contexto dentro de um sistema operacional isolado de todos os outros namespaces/recursos do host físico.&lt;/li>
&lt;li>&lt;strong>SELinux:&lt;/strong> permite que os administradores de sistema definam mais controle de acesso a aplicações, processos e arquivos dentro do sistema operacional.&lt;/li>
&lt;li>&lt;strong>AppArmor:&lt;/strong> é um sistema de controle mandatório de acesso, onde o kernel consulta o AppArmor para cada chamada do sistema para saber se o processo está autorizado ou não.&lt;/li>
&lt;li>&lt;strong>Cgroups:&lt;/strong> permitem alocar recursos, tais como CPU e memória, entre grupos de usuários ou processos rodando em um sistema operacional.&lt;/li>
&lt;/ul>
&lt;h2 id="4-configure-filesystem-e-volumes-como-read-only">4. Configure Filesystem e Volumes como read-only
&lt;/h2>&lt;p>Para evitar que algum malware ou ataque malicioso faça alguma modificação no seu container ou no seu filesystem, rode os volumes como &lt;strong>read-only&lt;/strong> sempre que o container não precise escrever no volume. Use o seguinte comando:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker run --read-only &amp;lt;imagem&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Maiores informações na &lt;a class="link" href="https://docs.docker.com/engine/reference/commandline/run/" target="_blank" rel="noopener"
>documentação oficial&lt;/a>.&lt;/p>
&lt;h2 id="5-vulnerabilidade-de-imagens">5. Vulnerabilidade de imagens
&lt;/h2>&lt;p>&lt;strong>CVE&lt;/strong> (Common Vulnerabilities and Exposures) é um banco de dados que registra vulnerabilidades e exposições relacionadas à segurança da informação reconhecidas publicamente. Checar as vulnerabilidades é um dos itens &lt;strong>obrigatórios&lt;/strong> para validar se a imagem que está sendo utilizada está vulnerável a ameaças já descobertas.&lt;/p>
&lt;p>Caso o seu repositório seja o &lt;strong>AWS Elastic Container Registry (ECR)&lt;/strong>, você pode habilitar o scan toda vez que houver um push. Com o ECR, você pode criar o seu repositório já com o scan de imagens habilitado ou habilitar em um repositório já existente, tanto via AWS Console quanto via AWS CLI. Maiores informações na &lt;a class="link" href="https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-scanning.html" target="_blank" rel="noopener"
>documentação do ECR&lt;/a>.&lt;/p>
&lt;p>Você também pode usar ferramentas open source para essa etapa de segurança da sua pipeline. Outro item importante é ter o controle de qual usuário pode fazer upload de imagens no seu ECR, seja através de &lt;strong>RBAC&lt;/strong> (Role Based Access Control) ou outro tipo de permissionamento.&lt;/p>
&lt;h2 id="6-cuidado-com-dados-sensíveis-nas-suas-imagens-docker">6. Cuidado com dados sensíveis nas suas imagens Docker
&lt;/h2>&lt;p>Não armazene dados sensíveis em suas imagens, como credenciais, chaves SSH ou certificados. A AWS possui uma série de serviços de segurança que podem te ajudar a gerenciar essas informações na sua aplicação (como o &lt;strong>AWS Secrets Manager&lt;/strong> e o &lt;strong>AWS Systems Manager Parameter Store&lt;/strong>).&lt;/p>
&lt;h2 id="7-salve-os-dados-dos-containers-separadamente">7. Salve os dados dos containers separadamente
&lt;/h2>&lt;p>Eu sei que é muito tentador se conectar via SSH para resolver um problema em algum host ou aplicação que está executando um container. Mas liberar o SSH, mesmo com regras de firewall/security groups limitando o IP de origem, não é uma boa prática de segurança. Nesse caso, é bem melhor exportar os logs para alguma ferramenta de SIEM ou outro local (CloudTrail, por exemplo) e fazer o troubleshooting sem conectar nas máquinas.&lt;/p>
&lt;hr>
&lt;h2 id="conclusão">Conclusão
&lt;/h2>&lt;p>Com esse texto, já é possível melhorar a segurança dos containers que vocês estão executando. Não perca os próximos textos, pois vamos explorar ainda mais outros conceitos e deixar o ambiente cada vez mais seguro!&lt;/p></description></item><item><title>Playlist de Segurança e Containers do re:invent 2022</title><link>https://www.allysonoliveira.com.br/posts/playlist-reinvent/</link><pubDate>Fri, 13 Jan 2023 07:16:50 +0000</pubDate><guid>https://www.allysonoliveira.com.br/posts/playlist-reinvent/</guid><description>&lt;p>Salve salve time! Tudo bem com vocês?&lt;/p>
&lt;p>Último post do ano, rsrs! 2022 foi um ano repleto de desafios, novidades, projetos, conquistas e lições aprendidas. Muito aprendizado, e agora foco em 2023 para fazermos diferente e termos um ano melhor ainda!&lt;/p>
&lt;p>Mas já que estamos nessa semana um pouco preguiçosa, kkk, vamos aproveitar para assistir alguns vídeos?&lt;/p>
&lt;p>Aqui tem duas playlists do &lt;strong>re:Invent 2022&lt;/strong> da AWS dos temas que tenho estudado: &lt;strong>segurança&lt;/strong> e &lt;strong>containers&lt;/strong>. Bora lá?&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://lnkd.in/dRg6ywiu" target="_blank" rel="noopener"
>Playlist de Segurança&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://lnkd.in/dfktNPWX" target="_blank" rel="noopener"
>Playlist de Containers&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>E um 2023 repleto de paz, saúde e harmonia para todos vocês!&lt;/p></description></item></channel></rss>