← Cloudflare Cache / cache / interaction-cloudflare-products
Управление доступом к кешу с помощью WAF и Snippets
Если вы делаете R2 bucket общедоступным для кэширования (через Custom Domain), любой, кто знает URL, может получить доступ к содержимому. Чтобы ограничить доступ, можно использовать WAF чтобы проверять запросы, прежде чем они достигнут кеша или вашего bucket.
На следующей диаграмме показан путь запроса через WAF, Cache и R2. Пользовательские правила WAF выполняются раньше правил кеша в конвейер запросов, поэтому недействительные запросы блокируются до того, как они займут ресурсы кеша.
flowchart LR
accTitle: Connections with Cloudflare
A[User's request] --> B[WAF] --> C[Cache] --> D[R2]
Presigned URLs
Presigned URL представляет собой обычный URL-адрес с добавленным криптографическим токеном. Токен содержит код аутентификации сообщения на основе хеша (HMAC), вычисленный из пути URL, метки времени и секретного ключа, общего для сервиса подписи и валидатора. Любой, у кого есть этот URL-адрес, может получить доступ к контенту до истечения срока действия токена, но токен нельзя повторно использовать для другого пути URL.
URL можно подписать заранее аналогично S3 ↗, позволяя предоставлять прямой доступ к вашему контенту с ограниченным сроком действия. Такой подход можно реализовать с помощью комбинации Snippets, Rules или Cloudflare Workers.
Для оптимальной производительности рекомендуем разделить процессы создания и проверки:
- Snippets для создания HMAC (подписи URL)
- Пользовательские правила WAF для проверки HMAC (проверки токена при каждом запросе)
В документации по Workers Подписание запросов пример показывает, как формировать и проверять подписанные запросы с помощью HMAC. Реализация в Workers совместима с тем, как это устроено в WAF, для is_timed_hmac_valid_v0() функция проверки, поэтому вы можете подписывать запросы с помощью Workers и проверять их с помощью пользовательских правил WAF, либо выполнять обе операции в Workers.