Перейти к основному содержимому
Ограничить доступ к контенту
Последнее изменение:

Ограничить доступ к контенту

Вы можете ограничить доступ к контенту, который раздается через CDN — например, настроить доступ по ключу, показывать контент только пользователям из некоторых стран или в определенных браузерах.

Доступ по ключу

Доступ по ключу (Tokenized URL) позволяет сделать ссылки на конент временными и ограничить доступ к контенту по IP-адресу.

К ссылкам на сайте добавляется специальный токен, в котором зашифрованы ключ доступа, время жизни ссылки и разрешенные IP-адреса. Когда пользователь переходит по ссылке, CDN-серверы проверяют токен в запросе: если ключ совпадает, IP-адрес разрешен и время жизни ссылки не истекло, то серверы отдают контент. При этом сами CDN-серверы получают контент с источника независимо от наличия токена.

Ссылки с токеном будут иметь вид:

  • CDN Selectel:
    https://cdn.example.com/123.jpg?md5=DMF1ucDxtHCxwYQ&expires=2147483647
  • CDN Akamai:
    https://cdn.example.com/123.jpg?sel-token=exp=1592563853~hmac=0851b56b74c47120565024a6c6532dc77dff809b0eeeb6fc1e01c86090a1bccd

Настроить доступ по ключу

  1. В панели управления перейдите в раздел CDNCDN-ресурсы.

  2. Откройте страницу CDN-ресурса → вкладка Настройки.

  3. Включите опцию Доступ по ключу.

  4. Чтобы сгенерировать ключ автоматически, нажмите Сгенерировать ключ.

  5. Чтобы использовать свой ключ, введите его вручную, учитывая требования:

    • латинские буквы и цифры;
    • длина от 6 до 32 символов;
  6. Опционально: чтобы разрешить доступ к контенту только определенным IP-адресам, отметьте чекбокс Добавить IP-адрес клиента к токену.

  7. Нажмите Сохранить.

  8. Настройте генерацию токена на сервере-источнике. Для генерации токена используются четыре параметра:

    • время жизни ссылки;
    • исходная ссылка на файл;
    • IP-адреса, для которых разрешен доступ к файлу — опциональный параметр;
    • ключ, который вы задали на шаге 4 или 5.
С параметром IP

Используйте, если на шаге 6 в настройках CDN-ресурса отметили чекбокс Добавить IP-адрес клиента к токену.

<?php
$secret = '<secret_key>';
$ip = '<ip_address>';
$path = '<path>';
$expires = time() + <lifetime>;
$link = "$expires$path$ip $secret";
$md5 = md5($link, true);
$md5 = base64_encode($md5);
$md5 = strtr($md5, '+/', '-_');
$md5 = str_replace('=', '', $md5);
$url = "<domain>{$path}?md5={$md5}&expires={$expires}";
echo $<url>;
echo "\n";

Укажите:

  • <secret_key> — секретный ключ, который указали в настройках CDN-ресурса;
  • <ip_address> — IP-адрес, которому разрешено получить контент;
  • <path> — относительный путь к файлу на источнике;
  • <lifetime> — время жизни ссылки в секундах;
  • <domain> — домен CDN-ресурса с указанием протокола. Посмотреть домен ресурса можно в панели управления в разделе CDNCDN-ресурсы → страница ресурса → вкладка Общий.
Без параметра IP

Используйте, если на шаге 6 в настройках CDN-ресурса не отмечали чекбокс Добавить IP-адрес клиента к токену.

<?php
$secret = '<secret_key>';
$path = '<path>';
$expires = time() + <lifetime>;
$link = "$expires$path $secret";
$md5 = md5($link, true);
$md5 = base64_encode($md5);
$md5 = strtr($md5, '+/', '-_');
$md5 = str_replace('=', '', $md5);
$url = "<domain>{$path}?md5={$md5}&expires={$expires}";
echo $url;
echo "\n";

Укажите:

  • <secret_key> — секретный ключ, который указали в настройках CDN-ресурса;
  • <path> — относительный путь к файлу на источнике;
  • <lifetime> — время жизни ссылки в секундах;
  • <domain> — домен CDN-ресурса с указанием протокола. Посмотреть домен ресурса можно в панели управления в разделе CDNCDN-ресурсы → страница ресурса → вкладка Общий.

Настроить политику доступа с доменов

Политика доступа с доменов (Referrer ACL) позволяет предоставить или ограничить доступ к контенту с других доменов. По умолчанию доступ по доменам не ограничен.

  1. В панели управления перейдите в раздел CDNCDN-ресурсы.

  2. Откройте страницу CDN-ресурса → вкладка Настройки.

  3. Включите опцию Политика доступа с доменов.

  4. Выберите политику:

    • разрешительная — ссылки на ваш контент будут работать на всех доменах, кроме указанных;
    • запретительная — ссылки на ваш контент будут работать только на указанных доменах.
  5. Введите имена доменов, которым нужно разрешить или запретить доступ согласно выбранной политике. Вводите имена по одному в строке без указания протокола, например:

    example.com
    example1.com
  6. Нажмите Сохранить.

Настроить политику доступа с IP-адресов

Политика доступа с IP-адресов (IP ACL) позволяет предоставить или ограничить доступ к контенту с определенных IP-адресов. По умолчанию доступ по IP-адресам не ограничен.

  1. В панели управления перейдите в раздел CDNCDN-ресурсы.

  2. Откройте страницу CDN-ресурса → вкладка Настройки.

  3. Включите опцию Политика доступа с IP-адресов.

  4. Выберите политику:

    • разрешительная — доступ к контенту разрешен всем IP-адресам, кроме указанных;
    • запретительная — доступ к контенту запрещен всем IP-адресам, кроме указанных.
  5. Введите IP-адреса, которым нужно разрешить или запретить доступ согласно выбранной политике. Вводите адреса с указанием маски подсети, по одному в строке, например:

    192.0.2.0/24
    198.51.100.0/24
  6. Нажмите Сохранить.

Настроить политику доступа по странам

Опция недоступна для ресурсов Akamai.

Политика доступа по странам (Geo ACL) позволяет предоставить или ограничить доступ к контенту из определенных стран. По умолчанию доступ по странам не ограничен.

  1. В панели управления перейдите в раздел CDNCDN-ресурсы.

  2. Откройте страницу CDN-ресурса → вкладка Настройки.

  3. Включите опцию Политика доступа по странам.

  4. Выберите политику:

    • разрешительная — доступ к контенту разрешен из всех стран, кроме указанных;
    • запретительная — доступ к контенту запрещен из всех стран, кроме указанных.
  5. Выберите страны, для которых нужно разрешить или запретить доступ согласно выбранной политике.

  6. Нажмите Сохранить.

Настроить политику доступа с клиентских приложений

Политика доступа с клиентских приложений (User Agent ACL) позволяет предоставить или ограничить доступ к контенту из CDN по клиентским приложениям (User Agent), например, для определенного браузера, приставки, устройства. По умолчанию доступ к ресурсу разрешен всем клиентским приложениям.

  1. В панели управления перейдите в раздел CDNCDN-ресурсы.

  2. Откройте страницу CDN-ресурса → вкладка Настройки.

  3. Включите опцию Политика доступа с клиентских приложений.

  4. Выберите политику:

    • разрешительная — доступ к ресурсу разрешен всем клиентским приложениям, кроме указанных;
    • запретительная — доступ к ресурсу запрещен всем клиентским приложениям, кроме указанных.
  5. Введите названия приложений, для которых нужно разрешить или запретить доступ согласно выбранной политике. Вводите названия по одному в строке, например:

    Mozilla/5.0 (Windows NT 10.0; Win 64; x64)
  6. Нажмите Сохранить.

Настроить уникальные HTTP-заголовки

Опция уникальных HTTP-заголовков (Custom Origin headers) позволяет задавать собственные HTTP-заголовки, которые CDN-сервер добавит в запрос при обращении к источнику.

  1. В панели управления перейдите в раздел CDNCDN-ресурсы.
  2. Откройте карточку CDN-ресурса.
  3. Откройте вкладку Настройки.
  4. Включите опцию Уникальные HTTP-заголовки.
  5. Введите название заголовка. Допускаются латинские буквы A-Z, a-z, цифры 0-9, подчеркивание _ и дефис -.
  6. Введите значение заголовка. Допускаются латинские буквы A-Z, a-z, цифры 0-9, подчеркивание _, точка ., слэш /, двоеточие :, дефис -, равно = и пробел.
    Пробел можно добавлять только внутри значения и между словами. Не ставьте пробел в начале и конце значения.
  7. Если вам нужно добавить еще один заголовок, нажмите Добавить заголовок и повторите шаги 5-6.

Заголовок Access-Control-Allow-Origin

Опция позволяет защитить контент от загрузки на сторонних сайтах и приложениях за счет добавления заголовка Access-Control-Allow-Origin. Применяется ко всем файлам на CDN-ресурсе.

Например, пользователь, находящийся на сайте example1.com, открывает изображение, которое расположено на вашем сайте по адресу cdn.example2.com/image.jpg. Браузер пользователя отправляет на сервер домена cdn.example2.com/image.jpg запрос с заголовком Origin, который указывает на источник запроса, в примере — Origin: http://example1.com.

Сервер домена cdn.example2.com проверяет содержимое заголовка Origin в запросе:

  • если домен разрешен, сервер ответит браузеру с заголовком Access-Control-Allow-Origin, который позволит браузеру отобразить изображение для пользователя сайта example2.com.
  • если домен не разрешен, сервер ответит браузеру без заголовка Access-Control-Allow-Origin, и браузер не отобразит изображение для пользователя.

Настроить заголовок Access-Control-Allow-Origin

  1. В панели управления перейдите в раздел CDNCDN-ресурсы.

  2. Откройте страницу CDN-ресурса → вкладка Настройки.

  3. Включите опцию Заголовок Access-Control-Allow-Origin.

  4. Выберите политику:

    • *, для всех доменов — отображение контента разрешено всем сайтам, CDN-сервер будет передавать ответ браузеру с заголовком Access-Control-Allow-Origin: *;
    • только для указанных доменов — отображение контента разрешено только указанным сайтам. При получении запроса CDN-сервер будет сверять значение заголовка Origin с доменами, которые вы укажете в настройках на шаге 5. Если домен разрешен, сервер ответит браузеру с заголовком Access-Control-Allow-Origin с именем этого домена;
    • для всех доменов — отображение контента разрешено всем сайтам, CDN-сервер будет передавать в ответ браузеру имя домена, с которого пришел запрос, например: Access-Control-Allow-Origin: example.com.
  5. Если вы выбрали политику Только для указанных доменов, введите имена доменов, которым разрешено загружать контент, максимум 20 доменов. Вводите имена по одному в строке без указания протокола.

  6. Нажмите Сохранить.