Aplicação Giropops Senhas
## Clonar o repo do Github do App e acessar o diretorio
git clone https://github.com/badtuxx/giropops-senhas.git
cd giropops-senhas
## Instalar o pip
apt install pip -y
## Instalar as dependencias do python
pip install --no-cache-dir -r requirements.txt
## Faça a instalação do Redis e inicie o seu serviço
apt install redis
systemctl start redis
##Crie a variável de ambiente onde o valor seja o endereço IP ou hostname do host do Redis
export REDIS_HOST=localhost
##Execute o comando flask para iniciar o app - bindar um ip
flask run --host=0.0.0.0
FROM python:3.11
WORKDIR /app
COPY requirements.txt .
COPY app.py .
COPY templates templates/
COPY static static/
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 5000
CMD ["flask", "run", "--host=0.0.0.0"]
docker image build -t giropops-senhas:1.0 .
## Executar container da aplicação
docker container run -d -e REDIS_HOST=<IP_DO_HOST> --name giropops-senhas -p 5000:5000 giropops-senhas:1.0
## Executar container do Redis
docker container run -d --name redis -p 6379:6379 redis
OBS: Certifique-se de substituir <IP_DO_HOST>
pelo endereço IP ou hostname do host onde o Redis está rodando.
Alterar a imagem base para a versão “slim” - reduz drasticamente o tamanho da imagem
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
COPY app.py .
COPY templates templates/
COPY static static/
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 5000
CMD ["flask", "run", "--host=0.0.0.0"]
Imagens “Distroless” contêm apenas os artefatos e dependências necessárias para a execução de um aplicativo
FROM
Essas imagens contêm apenas o ambiente de runtime (como Node.js, Python, Java, etc.) e o aplicativo em si
Maior segurançaImagem menor com o alpine:
FROM python:3.11.12-alpine
WORKDIR /app
COPY requirements.txt .
COPY app.py .
COPY templates templates/
COPY static static/
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 5000
CMD ["flask","run","--host=0.0.0.0"]
FROM cgr.dev/chainguard/python:latest-dev as buildando
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt --user
COPY app.py .
COPY templates templates/
COPY static static/
ENTRYPOINT ["flask","run","--host=0.0.0.0"]
O Trivy é um scanner de segurança abrangente e versátil. Ferramenta de código aberto, ele possui scanners que procuram problemas de segurança e aponta onde pode encontrar esses problemas:
Para instalação, siga a documuentação oficial do Trivy: Trivy Installation.
trivy image <nome_da_imagem:tag>
## Exemplo
trivy image giropops-senhas:3.2
Solução do Docker para aprimorar proativamente a segurança da cadeia de suprimentos de software.
O Scout:
Comandos
compare
: para comparar duas imagenscves
: para exibir as vulnerabilidades conhecidasquickview
: para uma visão geral rápida de uma imagem
recommendations
: para exibir atualizações de imagens base disponíveis e recomendações de correçãoInstalação e uso básico do Docker Scout:
## Instalação
curl -fsSL https://raw.githubusercontent.com/docker/scout-cli/main/install.sh -o install-scout.sh
sh install-scout.sh
## Uso
docker scout cves <nome_da_imagem:tag>
docker scout cves giropops-senhas:3.2
## Ver as recomendações
docker scout recommendations <nome_da_imagem:tag>
Para assinar imagens de container podemos usar o Cosign, uma ferramenta que permite assinar e verificar imagens de container, garantindo a integridade e autenticidade das mesmas.
## Instalando o Cosign
curl -O -L "https://github.com/sigstore/cosign/releases/latest/download/cosign-linux-amd64"
sudo mv cosign-linux-amd64 /usr/local/bin/cosign
sudo chmod +x /usr/local/bin/cosign
## Gerar um par de chaves
cosign generate-key-pair
## Assinando imagens - a imagem tem que estar no DockerHub
cosign sign --key cosign.key nome_usuario_docker_hub/nome_da_images:tag
docker push ludsilva/giropops-senhas:3.0
cosign sign --key cosign.key ludsilva/giropops-senhas:3.0
## Verificar imagem assinada
cosign verify --key cosign.pub nome_usuario_docker_hub/nome_da_images:tag
cosign verify --key cosign.pub ludsilva/giropops-senhas:3.0