Trabalho Final — Cloud Computing

Infraestrutura web segura na cloud (Microsoft Azure)

1. Identificação do Aluno

CampoValor
Nome completoJoão Pedro Fernandes Sousa
Número de aluno2025114
CursoCTeSP de Cibersegurança (1º ano)
Unidade curricularCloud Computing
Data de entrega24 de julho de 2026

2. Descrição da Arquitetura Implementada

O site é alojado numa máquina virtual (VM) na cloud Microsoft Azure e segue uma arquitetura em camadas com contenção da aplicação via Docker e exposição controlada através de um proxy reverso. A solução separa a edge/rede (firewalls) da apresentação (Nginx) e da aplicação (container Docker), seguindo boas práticas de cibersegurança e de isolamento.

Componentes

Cloud / ComputeMicrosoft Azure
Região: Sweden Central
VM: Standard_B2ats_v2
Sistema OperativoUbuntu 24.04.4 LTS
Host firewall: UFW (ativo)
Reverse ProxyNginx
Portas 80 (HTTP) / 443 (HTTPS)
AplicaçãoContainer Docker "meu-site"
Imagem: nginx:alpine
Porta interna: 8080 (localhost)

Camadas de segurança (da internet para dentro)

Nota: o Nginx já tem as diretivas SSL ativadas no ficheiro de configuração (ssl_protocols TLSv1.2 TLSv1.3), pelo que a subida para HTTPS só exige a instalação de um certificado (ex.: Let's Encrypt / Certbot). Atualmente o site é servido em HTTP.

3. Percurso de um Pedido HTTP/HTTPS até ao Site

Quando um utilizador escreve o endereço do site no browser, o pedido atravessa várias camadas até à aplicação e regressa com a resposta. O diagrama abaixo mostra o caminho (sentido ida) e a respetiva volta.

UTILIZADOR (browser) │ pedido HTTP http://20.240.161.195 ▼ INTERNET → resolução DNS (neste caso usa-se o IP público) ▼ AZURE NSG → filtra: permite 80/443/22, bloqueia o resto ▼ UFW (host Ubuntu) → default deny; exceção 80,443,22 ▼ NGINX escuta :80 → reverse proxy proxy_pass http://127.0.0.1:8080 ▼ (apenas tráfego interno / localhost) DOCKER container "meu-site" (nginx:alpine) │ serve /usr/share/nginx/html/index.html ▼ RESPOSTA HTTP → volta pelo mesmo caminho até ao browser

Explicação passo-a-passo

  1. O browser abre uma ligação TCP para o IP público 20.240.161.195 na porta 80 e envia o pedido HTTP GET /.
  2. O pacote atravessa a Internet e chega à interface da VM no Azure.
  3. O Azure NSG inspeciona a porta de destino; como é a 80 (permitida), deixa o tráfego passar.
  4. O UFW do Ubuntu aplica a sua política: com o default deny e regra de exceção para 80/tcp, o pacote é aceite.
  5. O Nginx, à escuta na porta 80, aceita o pedido e, pela configuração de location /, faz proxy_pass para http://127.0.0.1:8080 (tráfego interno, nunca exposto à internet).
  6. O container Docker "meu-site" (nginx:alpine) recebe o pedido em localhost:8080 e devolve o ficheiro index.html.
  7. A resposta HTTP regressa pelo caminho inverso (container → Nginx → UFW → NSG → Internet → browser), que a apresenta ao utilizador.

Percurso HTTPS (quando ativado)

Para HTTPS o fluxo é idêntico, mas o browser liga-se à porta 443; o Nginx termina a ligação TLS (apresenta o certificado) e, mantendo a comunicação interna em texto claro para 127.0.0.1:8080, entrega a resposta encriptada ao cliente. A porta 443 já está aberta no NSG e no UFW, faltando apenas o certificado.

4. Endereço de Acesso ao Site

O site encontra-se acessível publicamente através do seguinte endereço: