INTEGRITY Документация

Управление доступом к кешу с помощью 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.

Для оптимальной производительности рекомендуем разделить процессы создания и проверки:

В документации по Workers Подписание запросов пример показывает, как формировать и проверять подписанные запросы с помощью HMAC. Реализация в Workers совместима с тем, как это устроено в WAF, для is_timed_hmac_valid_v0() функция проверки, поэтому вы можете подписывать запросы с помощью Workers и проверять их с помощью пользовательских правил WAF, либо выполнять обе операции в Workers.