Настроить защищенный доступ к контенту
По умолчанию любой пользователь может получить доступ к вашему контенту.
Вы можете настроить доступ по кодовому слову или собственному скрипту.
Настроить доступ по кодовому слову
Настройка доступа по кодовому слову (Tokenized URL) позволяет сделать ссылки на контент временными и ограничить доступ к контенту по IP-адресу.
К ссылкам на сайте добавляется токен вида md5(kymJ2w55VH4LUMSKGb6ZqA,1704067200). Токен формируется:
- из кодового слова, которое вы придумали;
- пути к файлу на источнике;
- опционально: срока действия ссылки в формате POSIX-времени;
- опционально: разрешенного IP-адреса.
В результате ссылка с токеном будет такого вида:
https://cdn.example.com/md5(kymJ2w55VH4LUMSKGb6ZqA,1704067200)/path/to/file.png.
Когда пользователь переходит по ссылке, CDN-серверы проверяют токен в запросе. Если токен совпадает и время жизни ссылки не истекло, то серверы отдают контент. При этом сами CDN-серверы получают контент от источника независимо от наличия кодового слова.
-
В панели управления в верхнем меню нажмите Продукты и выберите CDN.
-
В разделе CDN-ресурсы откройте страницу CDN-ресурса → вкладка Ограничения.
-
В блоке Авторизация выберите По кодовому слову.
-
Введите кодовое слово размером от 6 до 32 символов. Можно использовать латинские буквы и цифры.
-
Опционально: чтобы не указывать время действия ссылки, отметьте чекбокс Не ограничивать по времени.
-
Опционально: чтобы не ограничивать доступ к контенту только определенным IP-адресам, отметьте чекбокс Не учитывать IP.
-
Нажмите Применить. Во время применения настроек CDN-ресурс будет находиться в статусе
PROCESSING. В это время применение других настроек недоступно. Настройки применятся, когда CDN-ресурс перейдет в статусACTIVE. -
Настройте генерацию ссылки с токеном на сервере-источнике с помощью скрипта. Посмотреть примеры скриптов можно в подразделе Примеры скрипта для генерации токена.
Примеры скрипта для генерации защищенной ссылки
Это примеры скрипта для генерации токена с учетом ограничений по IP-адресу и времени действия ссылки.
PHP-скрипт
Python-скрипт
OpenSSL-скрипт
<?php
$secret = '<code_word>';
$ip = '<ip_address>';
$path = '<file_path>';
$lifetime = <link_lifetime>;
$expires = time() + $lifetime;
$link = "$secret$path$ip$expires";
$md5 = md5($link, true);
$md5 = base64_encode($md5);
$md5 = strtr($md5, '+/', '-_');
$md5 = str_replace('=', '', $md5);
$domain = '<domain>';
$url = "$domain/md5($md5,$expires)$path";
echo $url;
echo "\n";
Укажите:
-
<code_word>— кодовое слово, которое указали при настройке доступа к контенту по кодовому слову; -
<ip_address>— IP-адрес, которому вы разрешаете получить контент; -
<file_path>— относительный путь к файлу или префикс пути на источнике. Например, есть относительный путь к файлу:/path/to/file.jpg. Чтобы дать доступ:- к конкретному файлу укажите:
/path/to/file.jpg; - ко всем файлам, которые начинаются с
/path/to/, включая подпапки, укажите:/path/to; - ко всем файлам в
/path/и его подпапках укажите:/path;
- к конкретному файлу укажите:
-
<link_lifetime>— время жизни ссылки в секундах; -
<cdn_domain>— домен CDN-ресурса с указанием протокола. Посмотреть домен CDN-ресурса можно в панели управления: в верхнем меню нажмите Продукты → CDN → CDN-ресурсы → строка CDN-ресурса.
Настроить доступ по собственному скрипту
Вы можете добавить собственный скрипт для авторизации пользователей.
Когда пользователь переходит по ссылке, решение о доступе контента принимается на основе ответа от скрипта.
В скрипте нужно передать заголовки:
Host— имя домена, для которого предназначен запрос;X-Request-URI— URI запрашиваемого CDN-ресурса;X-Forwarded-For— реальный IP-адрес пользователя, который запрашивает CDN-ресурс;X-Remote-Addr— IP-адрес пользователя, который запрашивает CDN-ресурс, или IP-адрес прокси-сервера.
-
В панели управления в верхнем меню нажмите Продукты и выберите CDN.
-
В разделе CDN-ресурсы откройте страницу CDN-ресурса → вкладка Ограничения.
-
В блоке Авторизация выберите По внешнему скрипту.
-
Вставьте ссылку на ваш скрипт.
-
Нажмите Применить. Во время применения настроек CDN-ресурс будет находиться в статусе
PROCESSING. В это время применение других настроек недоступно. Настройки применятся, когда CDN-ресурс перейдет в статусACTIVE.