Entrega CDN: Design de armazenamento e segurança
Define entrega CDN de origem privada com emissão de URL consciente de autorização, versões imutáveis de ativos, chaves de cache seguras, comportamento de revogação, requisições de intervalo e cabeçalhos de segurança na resposta.
Status do pacote: contexto de referência pronto para revisão humana. O contrato e os cenários de teste estão completos, mas não se afirma que uma implementação adotante os tenha aprovado.
Decisão
Manter a origem do objeto privada. Servir ativos públicos imutáveis por meio de URLs versionadas por conteúdo; servir ativos protegidos por meio de requisições assinadas de curta duração cuja chave de cache inclui a partição de autorização e exclui credenciais reutilizáveis.
Escopo
- Acesso à origem, formas de URL, assinatura, chave de cache, cabeçalhos, invalidação, requisições de intervalo, downloads, registro e controles de abuso.
- Ativos públicos imutáveis e arquivos protegidos de usuários como classes distintas de entrega.
- Observabilidade de cache e origem.
Fora deste bloco
- Política de autorização da aplicação em si.
- Assumir que o segredo da URL é suficiente para arquivos sensíveis compartilháveis indefinidamente.
Contrato
- A identidade do CDN, não a internet pública, tem permissão para ler a origem privada.
- Objetos públicos imutáveis usam chaves versionadas e longos tempos de cache; alterar bytes cria uma nova URL.
- A entrega protegida verifica a autorização da aplicação antes de emitir um token limitado ou URL assinada.
- A chave de cache protegida inclui partição de locatário/visibilidade e versão do objeto, excluindo assinatura e ruído irrelevante da query.
- Respostas definem tipo de mídia explícito, disposição, política de cache, proteção contra sniffing de conteúdo e codificação segura de nome de arquivo.
- Objetivos de revogação indicam se apenas expiração é suficiente ou se é necessário um mecanismo de negação da aplicação/CDN.
Orientações de implementação
- Use nomes de host ou comportamentos separados para ativos públicos e downloads protegidos.
- Assine um caminho canônico, versão do objeto, expiração, audiência ou ID de política e método permitido.
- Valide requisições de intervalo e limite amplificação; preserve digest ou ETag para objetos imutáveis.
- Registre identificadores estáveis de objeto, status do cache, bytes e resultado da política minimizando nomes sensíveis e tokens.
Tratamento de falhas e salvaguardas
- Se a validação do token ou emissão de autorização estiver indisponível, falhe a entrega protegida em vez de recorrer à origem pública.
- Se uma resposta protegida em cache não tiver a partição requerida, limpe-a e desabilite esse comportamento.
- Se metadados de conteúdo forem inseguros ou ausentes, force o download com um nome seguro genérico.
Verificação e operações
- Meça a taxa de acertos de cache e bytes da origem por classe de entrega, falhas de assinatura, negações de autorização, requisições de versão obsoleta, amplificação de intervalo e tempo de revogação.
- Teste entradas de envenenamento de cache e requisições entre locatários contra a configuração real do CDN.
- Revise a política de origem e configuração da chave de cache como artefatos implantáveis e versionados.
Os exemplos com aparência executável neste pacote são fixtures e contratos de aceitação. Execute
python tools/validate.py a partir da raiz da coleção para verificar a estrutura e metadados do pacote; então
implemente e execute os cenários no repositório alvo.
Suposições de adoção
- Nomes e valores numéricos em
example.yamlsão um perfil de adoção, não padrões universais. - A equipe adotante deve mapear atores, classes de dados, vocabulário de erros e propriedade para seu sistema.