- Virtual Infrastructure
- Disaster Recovery
- Кроссплатформенная миграция на базе Киберпротект
- Veeam Agent BaaS
- Veeam Cloud Connect
- Объектное хранилище #CloudMTS
- GPU Workspaces
- VDI Desktops
- Cloud CDN / Медиасервисы
- Диск #CloudMTS
- Техническая поддержка и отзывы
- DBaaS for PostgreSQL
- Containerum Kubernetes
- GPU SuperCloud
Раздел Безопасность
Возможно ограничить доступ к контенту для списка стран. Чтобы это сделать:
- перейдите в раздел CDN-ресурсы
- перейдите в настройки необходимого ресурса
- перейдите в раздел Безопасность
- выберите Политика доступа по странам
По умолчанию никакие ограничения доступа по странам к ресурсу не применяются. Возможно выбрать разрешающую или блокирующую политику.
Разрешающая политика
Доступ к ресурсу разрешен всем странам, кроме указанных в поле.

Блокирующая политика
Доступ к ресурсу запрещен всем странам, кроме указанных в поле.

Данная опция необходима для запрета размещения ссылок на контент на других сайтах.
- перейдите в раздел CDN-ресурсы
- перейдите в настройки необходимого ресурса
- перейдите в раздел Безопасность
- выберите Политика доступа по доменам
По умолчанию никакие ограничения доступа по доменам к ресурсу не применяются. Возможно задать разрешающую или блокирующую политику.
Разрешающая политика

- в появившемся окне впишите для каких доменов необходимо запретить доступ
Пример
- site.com - запретить доступ для конкретного домена
- *.site.com и site.com - запретить доступ всех поддоменов домена и сам домен; необходимо добавлять сам домен и дополнительно домен в формате wildcards
При доступе с введенных доменов, пользователь будет получать отказ в доступе.
Блокирующая политика

- в появившемся окне впишите для каких доменов необходимо разрешить доступ
Пример
- www.site.com - разрешить доступ для конкретного домена
- *.site.com и site.com - разрешить доступ всех поддоменов домена и сам домен; необходимо добавлять сам домен и дополнительно домен в формате wildcards для поддоменов
При доступе с других доменов пользователь будет получать отказ в доступе.
Возможно ограничить доступ к контенту в CDN для определенных IP адресов.
- перейдите в раздел CDN-ресурсы
- перейдите в настройки необходимого ресурса
- перейдите в раздел Безопасность
- выберите Политика доступа по IP-адресам
По умолчанию никакие ограничения доступа по IP к ресурсу не применяются. Возможно задать разрешающую или блокирующую политику.
Опция поддерживает и IPv4, и IPv6 адреса.
Разрешающая политика
Доступ к ресурсу разрешен всем IP-адресам, кроме указанных в поле.

Блокирующая политика
Доступ к ресурсу запрещен всем IP-адресам, кроме указанных в поле.

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

Блокирующая политика
Доступ к ресурсу запрещен всем клиентским приложениям, кроме указанных в поле.

Включение редиректа трафика с HTTP на HTTPS доступно в настройках CDN-ресурса.
- перейдите в раздел CDN-ресурсы
- перейдите в настройки необходимого ресурса
- перейдите в раздел Безопасность
- включите опцию "Редирект с HTTP на HTTPS"

Чтобы настроить редирект с HTTPS на HTTP, воспользуйтесь API-документацией.
Для получения подробной информации об API-документации обратитесь в службу технической поддержки #CloudMTS по адресу support@ccloud.mts.ru.
На CDN-ресурсе единовременно может быть включена только одна из опций редиректа: редирект с HTTPS на HTTP или с HTTP на HTTPS.
При использовании опции «Доступ по ключу» контент может быть загружен только по запросам, содержащим хеш-ключ. Опция защищает контент от нежелательных загрузок.
Временные ссылки на защищаемый контент будут иметь вид: http://cdn.example.com/photo.jpeg?md5=DMF1ucDxtHCxwYQ&expires=2147483647.
Настройки в личном кабинете
Чтобы включить Tokenized URL:
- перейдите в раздел CDN-ресурсы
- перейдите в настройки необходимого ресурса
- перейдите в раздел Безопасность
- включите опцию "Secure Token"
- в появившемся окне введите желаемый ключ подписи
- сохраните настройки
- ключ должен содержать 6-32 символов

По умолчанию при генерации токена учитываются 4 параметра:
- время истечения ссылки
- исходная ссылка на файл
- IP-адреса, для которых разрешен доступ к файлу
- ключ
Возможно настроить токен таким образом, чтобы доступ к файлу был открыт для любых IP-адресов:
- отключите опцию «Добавить IP-адрес к токену»
- настройте токен на сервере-источнике так, чтобы параметр IP не учитывался
Настройка на сервере-источнике
Организуйте сайт таким образом, чтобы обращения пользователей к защищаемым файлам в CDN производились по временным ссылкам. При обращении серверов CDN, контент должен отдаваться вне зависимости от наличия ключа.
Хеш-ключ — результат вычисления односторонней хеш-функции MD5 (String), где String — параметр, полученный слиянием следующих элементов (в указанной последовательности): <expires><path><ip> <key>
<expires>: время истечения ссылки. Указывается в формате UNIX Timestamp.
<path>: исходная ссылка на файл
<key>: ключ
<IP>: IP-адреса, для которых разрешен доступ к файлу (параметр может не учитываться).
чтобы сгенерировать Unix Timestamp в linux: `date +%s -d "10min"` (текущее время + 10 минут)
- CDN-серверы проверяют каждый запрос на своей стороне; они имеют те же вводные данные (<expires><path><ip> <key>) и используют их для генерации хеш-ключа
- если вычисленная подпись не совпала и/или срок действия истек, сервер доставки контента CDN отправляет пользователю ошибку 403 Forbidden
- если вычисленная подпись совпала и срок действия ссылки не истек, сервер доставки контента CDN передает пользователю запрашиваемый файл
Способы генерации токена на источнике
PHP-скрипт с параметром IP
<?php
$secret = 'secret_key';
$ip = '1.2.3.4';
$path = '/live/133529_2/chunklist.m3u8';
$expires = time() + 10000;
$link = "$expires$path$ip $secret";
$md5 = md5($link, true);
$md5 = base64_encode($md5);
$md5 = strtr($md5, '+/', '-_');
$md5 = str_replace('=', '', $md5);
$url = "http://cdn.site.com{$path}?md5={$md5}&expires={$expires}";
echo $url;
echo "\n";
PHP-скрипт без параметра IP
<?php
$secret = 'secret_key';
$path = '/live/133529_2/chunklist.m3u8';
$expires = time() + 10000;
$link = "$expires$path $secret";
$md5 = md5($link, true);
$md5 = base64_encode($md5);
$md5 = strtr($md5, '+/', '-_');
$md5 = str_replace('=', '', $md5);
$url = "http://cdn.site.com{$path}?md5={$md5}&expires={$expires}";
echo $url;
echo "\n";
Где:
- $secret — секретный ключ
- $path — путь к файлу
- $ip — IP-адрес, которому разрешено получить контент
- $expires — время жизни ссылки (в секундах)
- $link — строка для генерации токена с учетом необходимых параметров хеш-ключа
- $url — ссылка на файл
Python-скрипт с параметром IP
import base64 from hashlib import md5 from time import time ip = '1.2.3.4' secret = 'secret_key' stream_address = '133529_2' path = f'/live/{stream_address}/playlist.m3u8' expires = int(time()) + 100000 token = base64.encodebytes(md5(f"{expires}{path}{ip} {secret}".encode()).digest()).decode().replace("\n", "").replace("+", "-").replace("/", "_").replace("=", "") secured_url = f"https://cdn.site.com{path}?md5={token}&expires={expires}" print(secured_url)
Python-скрипт без параметра IP
import base64 from hashlib import md5 from time import time secret = 'secret_key' stream_address = '133529_2' path = f'/live/{stream_address}/playlist.m3u8' expires = int(time()) + 100000 token = base64.encodebytes(md5(f"{expires}{path} {secret}".encode()).digest()).decode().replace("\n", "").replace("+", "-").replace("/", "_").replace("=", "") secured_url = f"https://cdn.site.com{path}?md5={token}&expires={expires}" print(secured_url)
Где:
- secret — секретный ключ
- path — путь к файлу
- ip — IP-адрес, которому разрешено получить контент
- expires — время жизни ссылки (в секундах)
- token — генерация токена
- secured_url — ссылка на файл
Использование openssl
В результате будет получен только токен. Его необходимо использовать в ссылках и дополнительно указать время истечения ссылка в UNIX-время.
С параметром IP
echo -n '2147483647/images/1.jpg1.2.3.4 secret_key' | openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d =
'2147483647/images/1.jpg1.2.3.4 secret_key' = '{expires}{path}{ip} {secret_key}'
Без параметра IP
echo -n '2147483647/images/1.jpg secret_key' | openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d =
'2147483647/images/1.jpg secret_key' = '{expires}{path} {secret_key}'
Возможно задать разрешенные HTTP-методы запросов к контенту в CDN. По умолчанию разрешены и доступны методы GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS.
Активируйте данную опцию, если необходимо выбрать методы, которыми разрешено обращаться к CDN-ресурсу.
- перейдите в раздел CDN-ресурсы
- перейдите в настройки необходимого ресурса
- перейдите в раздел Безопасность
- включите опцию «Разрешенные HTTP-методы»
Запросы не будут обработаны указанными в строке методами.
Каждый сервер должен поддерживать методы GET и HEAD. Если сервер не распознал указанный метод, вернется статус 501 (Not Implemented). Если серверу метод известен, но он неприменим к конкретному ресурсу, будет возвращено сообщение с кодом 405 (Method Not Allowed).
В большинстве случаев рекомендуем оставлять оставлять методы GET, HEAD и POST.

Server Name Indication (SNI) — расширение протокола TLS, позволяющее указывать имя хоста, с которым необходимо установить соединение.
SNI необходимо для того, чтобы веб-серверы, размещённые на одном IP-адресе под разными доменами, могли корректно откликаться по HTTPS.
Опция «Изменить имя SNI-хоста» позволяет задать имя хоста, передающееся в SNI-запросах от CDN-серверов к серверу-источнику по протоколу HTTPS.
Данная опция работает только, если CDN-серверы используют протокол HTTPS для обращения к источнику.
Опция может принимать 2 значения:
Динамическое имя SNI-хоста
Совпадает со значением опции «Изменить заголовок Host».

Пользовательское имя SNI-хоста
Задаётся вручную. Значение не может быть пустым или содержать IP адрес.

После создания ресурса опция будет автоматически активирована со значением по умолчанию «Динамическое имя SNI-хоста».
Описания и инструкции, размещаемые на данном ресурсе, носят исключительно информационный характер и не могут рассматриваться в качестве гарантий, заверений, рекомендаций или документа, порождающего какие-либо обязательства МТС. Конкретные условия использования сервисов определяются договорами с клиентом. МТС не несет ответственности за содержание публикуемых инструкций и результаты их применения клиентом. Актуальность отдельных положений публикуемых описаний и инструкций необходимо уточнять у аккаунт-менеджера или службы технической поддержки support@cloud.mts.ru