Определяет доставку CDN с приватным источником с выдачей URL, учитывающих авторизацию, неизменяемыми версиями ресурсов, безопасными ключами кэша, поведением при отзыве, запросами диапазонов и заголовками безопасности ответа.
Статус пакета: контекст для справки готов к проверке человеком. Контракт и тестовые сценарии завершены, но не заявляется, что внедрение, принявшее этот пакет, прошло их.
Решение
Сделать источник приватным. Обслуживать неизменяемые публичные ресурсы через URL с версией контента; защищённые ресурсы — через краткоживущие подписанные запросы, ключ кэша которых включает раздел авторизации и исключает повторно используемые учетные данные.
Область применения
- Доступ к источнику, формы URL, подпись, ключ кэша, заголовки, инвалидирование, запросы диапазонов, загрузки, логирование и контроль злоупотреблений.
- Публичные неизменяемые ресурсы и защищённые пользовательские файлы как отдельные классы доставки.
- Наблюдаемость кэша и источника.
Вне этого блока
- Политика авторизации приложения.
- Предположение, что секретность URL достаточна для бесконечно совместно используемых чувствительных файлов.
Контракт
- Идентичность CDN, а не публичный интернет, имеет право читать приватный источник.
- Публичные неизменяемые объекты используют версионированные ключи и длительное время кэширования; изменение байтов создаёт новый URL.
- Защищённая доставка проверяет авторизацию приложения перед выдачей ограниченного токена или подписанного URL.
- Ключ кэша для защищённых ресурсов включает раздел арендатора/видимости и версию объекта, исключая подпись и нерелевантный шум в запросе.
- Ответы устанавливают явный медиатип, disposition, политику кэширования, защиту от определения типа содержимого и безопасное кодирование имени файла.
- Цели отзыва указывают, достаточно ли только истечения срока действия или требуется механизм отказа приложения/CDN.
Руководство по реализации
- Используйте отдельные домены или поведения для публичных ресурсов и защищённых загрузок.
- Подписывайте канонический путь, версию объекта, срок действия, аудиторию или ID политики и разрешённый метод.
- Проверяйте запросы диапазонов и ограничивайте их усиление; сохраняйте digest или ETag для неизменяемых объектов.
- Логируйте стабильные идентификаторы объектов, статус кэша, количество байт и результат политики, минимизируя чувствительные имена и токены.
Обработка сбоев и меры безопасности
- Если проверка токена или выдача авторизации недоступны, отказывайте в защищённой доставке, а не переключайтесь на публичный источник.
- Если в кэше защищённого ответа отсутствует нужный раздел, очищайте его и отключайте это поведение.
- Если метаданные содержимого небезопасны или отсутствуют, принудительно скачивайте с универсальным безопасным именем.
Проверка и эксплуатация
- Измеряйте коэффициент попаданий в кэш и байты с источника по классам доставки, ошибки подписи, отказы авторизации, запросы устаревших версий, усиление диапазонов и время отзыва.
- Тестируйте вводы для отравления кэша и межарендные запросы на фактической конфигурации CDN.
- Проверяйте политику источника и конфигурацию ключей кэша как развертываемые, версионированные артефакты.
Примеры, похожие на исполняемые, в этом пакете — это фикстуры и контракты приёмки. Запустите
python tools/validate.py из корня коллекции для проверки структуры пакета и метаданных; затем
реализуйте и выполните сценарии в целевом репозитории.
Предположения при внедрении
- Имена и числовые значения в
example.yaml— профиль внедрения, а не универсальные значения по умолчанию. - Команда внедрения должна сопоставить акторов, классы данных, словарь ошибок и владение со своей системой.