From 46ec271788068849f2ae650afe3d864216772fdb Mon Sep 17 00:00:00 2001 From: ArgoCD Setup Date: Sat, 14 Mar 2026 03:01:25 -0300 Subject: [PATCH] =?UTF-8?q?docs(aula-10):=20explicar=20SERVE=5FDIRECT=20e?= =?UTF-8?q?=20seguran=C3=A7a=20de=20signed=20URLs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aula-10/README.md | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/aula-10/README.md b/aula-10/README.md index eedb6d0..edcc45a 100644 --- a/aula-10/README.md +++ b/aula-10/README.md @@ -375,7 +375,37 @@ gitea: 4. `helm upgrade` pra aplicar -Com `SERVE_DIRECT: true`, o Gitea redireciona `docker pull` direto pro S3 — menos carga na CPU, downloads mais rápidos. +### SERVE_DIRECT: como funciona (e por que é seguro) + +Com `SERVE_DIRECT: true`, o Gitea **não** faz proxy dos downloads. Em vez disso, gera **URLs pré-assinadas** com expiração: + +``` +docker pull gitea.kube.quest/org/app-privada:v1 + │ + ├─ 1. Client autentica no Gitea (token/password) + │ + ├─ 2. Gitea verifica permissão (repo privado? user tem acesso?) + │ → Se não tem acesso: 403 Forbidden. Para aqui. + │ + ├─ 3. Gitea gera URL S3 pré-assinada (expira em ~10 minutos) + │ https://s3.example.com/gitea/packages/sha256:abc... + │ ?X-Amz-Signature=xxx&X-Amz-Expires=600 + │ + └─ 4. Client baixa direto do S3 via URL assinada + → URL expira, não pode ser reutilizada + → Repo privado permanece privado +``` + +Sem `SERVE_DIRECT` (default): +``` +Client → Gitea (proxy) → S3 → Gitea (proxy) → Client + ^^^^^^^^^^^^ ^^^^^^^^^^^^ + CPU + RAM + bandwidth passam pelo Gitea +``` + +**Repos privados continuam privados** — a URL assinada só é gerada após autenticação e verificação de permissão. É o mesmo mecanismo usado por AWS S3, GitHub Packages e Google Cloud Storage. + +Único cenário onde **não** usar `SERVE_DIRECT`: se o bucket S3 está em rede privada e os clients não têm acesso direto à rede do S3. ### Ou só pra packages (container images)