Поделиться через


Защита ресурсов сети доставки содержимого Azure с помощью аутентификации на основе маркеров

Это важно

Это функция только для Azure CDN Premium от Edgio, для настройки правил в Azure CDN от Майкрософт используйте Стандартный обработчик правил. Дополнительные правила недоступны для Azure CDN из Akamai. Полное сравнение возможностей CDN см. в статье Характеристики продукта Azure CDN.

Обзор

Аутентификация токенов — это механизм, позволяющий предотвратить доступ несанкционированных клиентов к ресурсам в сети доставки содержимого Azure. Обычно аутентификация на основе маркеров применяется во избежание создания активных ссылок на содержимое. В этом случае другой сайт (например, доска сообщений) использует ваши ресурсы без разрешения. Хотлинкинг может повлиять на затраты на передачу контента. При включении аутентификации с использованием токенов в сети доставки содержимого, запросы проверяются сервером на краю сети доставки содержимого, прежде чем сеть начинает доставлять содержимое.

Принцип работы

Аутентификация по токену проверяет, что запросы исходят от доверенного сайта, путем требования, чтобы запросы содержали значение токена, содержащее закодированные сведения о запросчике. Содержимое передается инициатору запроса, только если сведения соответствуют требованиям. В противном случае запросы отклоняются. Эти требования можно настроить, используя один или несколько следующих параметров.

  • Страна или регион: разрешить или запретить запросы, исходящие из стран или регионов, указанных в коде страны или региона.
  • "URL-адрес": разрешение только тех запросов, которые соответствуют указанному ресурсу или пути.
  • Разрешайте или отклоняйте запросы, которые используют указанные хосты в заголовке запроса.
  • "Источник ссылки". Разрешение или отклонение запроса из указанного источника ссылки.
  • Разрешить только запросы, которые исходят с конкретного IP-адреса или IP-подсети.
  • "Протокол". Разрешение или отклонение запросов на основе протокола, использованного для запроса содержимого.
  • "Время истечения срока действия". Задайте дату и время, чтобы убедиться, что ссылка будет действовать только в течение ограниченного периода времени.

Чтобы узнать больше, ознакомьтесь с подробными примерами конфигурации для каждого параметра в разделе Настройка аутентификации на основе маркеров.

Это важно

Если для какого-либо пути этой учетной записи включена авторизация по токену, для кэширования строки запроса можно использовать только режим стандартного кэширования. Для получения дополнительной информации см. в разделе «Управление поведением кэширования сети доставки контента Azure с помощью строк запроса».

Эталонная архитектура

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

Скриншот процесса аутентификации маркера сети доставки контента.

Логика проверки токенов на узле CDN

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

Снимок экрана: логика проверки токена сети доставки контента.

Настройка аутентификации на основе токенов

  1. В портал Azure перейдите к профилю сети доставки содержимого, а затем выберите "Управление", чтобы запустить дополнительный портал.

    Снимок экрана: кнопка управления профилем сети доставки содержимого.

  2. Наведите указатель мыши на HTTP Large, затем выберите Token Auth во всплывающем меню. Затем можно настроить ключ шифрования и параметры шифрования следующим образом.

    1. Создайте один или несколько ключей шифрования. Ключ шифрования чувствителен к регистру и может содержать любое сочетание буквенно-цифровых символов. Любые другие типы символов, включая пробелы, не допускаются. Максимальная длина составляет 250 символов. Чтобы убедиться, что ключи шифрования являются случайными, рекомендуется создать их с помощью средства OpenSSL.

      В инструменте OpenSSL используется следующий синтаксис:

      rand -hex <key length>

      Рассмотрим пример.

      OpenSSL> rand -hex 32

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

    2. Введите уникальный ключ шифрования в поле Первичный ключ. При необходимости введите также резервную копию ключа в поле Backup Key (Резервная копия ключа).

    3. Выберите минимальную версию шифрования для каждого ключа в списке Минимальная версия шифрования, а затем щелкните Обновить.

      • V2: указывает, что ключ можно использовать для создания маркеров версии 2.0 и 3.0. Используйте этот параметр, только если вы переходите с устаревшего ключа шифрования версии 2.0 на ключ шифрования версии 3.0.
      • V3 (рекомендуется): указывает, что ключ можно использовать только для создания маркеров версии 3.0.
    4. Используйте инструмент шифрования для настройки параметров шифрования и создания маркера. С его помощью можно настроить разрешение или отклонение запросов с учетом времени истечения срока действия, страны или региона, источника ссылки, протокола и IP-адреса клиента (в любых сочетаниях). Хотя число и сочетание параметров, которые можно объединить для формирования токена, не ограничены, общая длина токена ограничена 512 символами.

      Снимок экрана: средство шифрования сети доставки содержимого.

      Введите значения для одного или нескольких указанных ниже параметров шифрования в разделе Encrypt Tool (Инструмент шифрования).

      Имя параметра Описание
      ec_expire Задает срок действия токена, после которого токен истекает. Запросы, отправленные после истечения срока действия, отклоняют. Этот параметр использует метку времени Unix, основанную на числе секунд с начала стандартной эпохи Unix, "1/1/1970 00:00:00 GMT". (Вы можете использовать онлайн-инструменты для преобразования между стандартным временем и временем Unix.)

      Например, если требуется, чтобы токен истекал в 12/31/2016 12:00:00 GMT, введите значение метки времени Unix 1483185600.

      ec_url_allow Позволяет настроить токены для конкретного ресурса или пути. Этот параметр ограничивает доступ к запросам, URL-адрес которых начинается с определенного относительного пути. В URL-адресах учитывается регистр. Укажите несколько путей через запятую без пробелов. В зависимости от требований можно настроить разные значения для обеспечения различных уровней доступа.

      Например, для URL-адреса http://www.mydomain.com/pictures/city/strasbourg.png эти запросы допустимы при следующих входных значениях:

      • Входное значение "/" — все запросы разрешаются.
      • Укажите значение "/рисунки", разрешены следующие запросы:
        • 'http://www.mydomain.com/pictures.png'
        • 'http://www.mydomain.com/pictures/city/strasbourg.png'
        • 'http://www.mydomain.com/picturesnew/city/strasbourgh.png'
      • Входное значение "/pictures/" — разрешаются только запросы, содержащие путь "/pictures/". Например, http://www.mydomain.com/pictures/city/strasbourg.png.
      • Входное значение "/pictures/city/strasbourg.png": разрешены только запросы на этот конкретный путь и ресурс.
      ec_country_allow Разрешает запросы, отправленные из одной или нескольких указанных стран или регионов. Запросы, отправленные из любых других стран или регионов, отклоняются. Укажите двухбуквенный [код каждой страны или региона в формате ISO 3166](/previous-versions/azure/mt761717(v=azure.100)), разделяя значения запятой. Не добавляйте пробелы. Например, если вы хотите разрешить доступ только из США и Франции, введите в поле "US,FR".
      ec_country_deny Отклоняет запросы, отправленные из одной или нескольких указанных стран или регионов. Запросы, отправленные из любых других стран или регионов, разрешаются. Реализация аналогична параметру ec_country_allow. Если код страны или региона указан в параметрах ec_country_allow и ec_country_deny, то параметр ec_country_allow имеет больший приоритет.
      ec_ref_allow Разрешает запросы только из указанного источника ссылки. Источник ссылки определяет URL-адрес веб-страницы, связанной с запрашиваемым ресурсом. Не включайте протокол в значение параметра.

      Допускаются приведенные ниже типы входных данных.

      • Имя узла или имя узла и путь.
      • Несколько источников ссылок. Чтобы добавить несколько источников, разделяйте их запятыми без пробелов. Если значение источника ссылки указано, но сведения о нем не отправляются в запросе из-за конфигурации браузера, то такие запросы отклоняются по умолчанию.
      • Запросы с пустыми или отсутствующими сведениями об источнике ссылки. По умолчанию параметр ec_ref_allow блокирует запросы таких типов. Чтобы разрешить такие запросы, введите либо текст «missing», либо пустое значение (с запятой в конце).
      • Поддомены. Чтобы разрешить поддомены, введите звездочку (\*). Например, чтобы разрешить все поддомены 'contoso.com', введите '*.contoso.com'.

      Например, чтобы разрешить доступ для запросов с сайта www.contoso.com, всех поддоменов в contoso2.com и для запросов с пустым или отсутствующим источником ссылки, введите www.contoso.com,*.contoso.com,missing.

      ec_ref_deny Отклоняет запросы из указанного источника ссылки. Реализация аналогична параметру ec_ref_allow. Если источник ссылки указан в параметрах ec_ref_allow и ec_ref_deny, то параметр ec_ref_allow имеет больший приоритет.
      ec_proto_allow Разрешает только запросы, полученные по указанному протоколу. Допустимые значения: "http", "https" и "http, https".
      ec_proto_deny Отклоняет запросы, полученные по указанному протоколу. Реализация аналогична параметру ec_proto_allow. Если протокол указан в параметрах ec_proto_allow и ec_proto_deny, то параметр ec_proto_allow имеет больший приоритет.
      ec_clientip Ограничивает доступ по IP-адресу указанного инициатора запроса. Поддерживаются протоколы 4 (IPv4) и Протокол Интернета версии 6 (IPv6). Можно указать отдельный IP-адрес запроса или IP-адреса, связанные с определенной подсетью. Например, "11.22.33.0/22" разрешает запросы с IP-адресов 11.22.32.1/22–11.22.35.254.
    5. После завершения ввода значений параметров шифрования выберите ключ для шифрования (если вы создали первичный и резервный ключ) из списка "Ключ для шифрования ".

    6. Выберите версию шифрования из списка Encryption Version (Версия шифрования): V2 для версии 2 или V3 для версии 3 (рекомендуется).

    7. Нажмите кнопку Шифровать для создания маркера.

      После создания маркера он отображается в поле "Созданный маркер ". Чтобы использовать маркер, присоедините его как строку запроса в конец пути URL файла. Например: http://www.domain.com/content.mov?a4fbc3710fd3449a7c99986b.

    8. При необходимости проверьте маркер с помощью инструмента расшифровки, чтобы просмотреть параметры этого маркера. Вставьте значение маркера в поле Token to Decrypt (Маркер для расшифровки). Выберите использование ключа шифрования из списка Ключ для расшифровки, а затем нажмите кнопку Расшифровать.

      После расшифровки маркера его параметры отобразятся в поле Original Parameters.

    9. Дополнительно можно настроить тип кода ответа, который возвращается при отклонении запроса. Выберите Enabled (Включено), затем выберите код ответа из списка Response Code (Код ответа). Параметру Header Name (Имя заголовка) автоматически присваивается значение Location (Расположение). Нажмите кнопку Сохранить, чтобы реализовать новый код ответа. Для некоторых кодов ответа нужно также ввести URL-адрес страницы ошибки в поле Header Value (Значение заголовка). Код ответа 403 (Запрещено) выбран по умолчанию.

  3. В разделе HTTP Large выберите Rules Engine. Механизм правил используется для определения путей применения функции, включения функции проверки подлинности токена и включения дополнительных возможностей, связанных с проверкой подлинности токена. Дополнительные сведения см. в справочнике по подсистеме правил.

    1. Выберите существующее или создайте новое правило, чтобы определить ресурс или путь, для которого требуется применить аутентификацию на основе маркеров.
    2. Чтобы включить аутентификацию на основе маркеров в правиле, выберите Token Auth (Аутентификация на основе маркеров) из списка Features (Функции), а затем выберите Enabled (Включено). Выберите "Обновить", если вы обновляете правило или добавляете , если вы создаете правило.
  4. В движке правил вы также можете включить дополнительные функции, связанные с аутентификацией токенов. Чтобы включить какую-либо из приведенных ниже функций, выберите ее из списка Features (Функции), а затем выберите Enabled (Включено).

    • Код отказа проверки подлинности токена: определяет тип ответа, который возвращается пользователю при отказе в запросе. Заданные здесь правила переопределяют код ответа, настроенный в разделе Custom Denial Handling (Пользовательская обработка отказов) на странице аутентификации на основе маркеров.

    • Игнорирование регистра URL-адреса для токена аутентификации: определяет, является ли URL-адрес, используемый для проверки токена, чувствительным к регистру.

    • Параметр проверки подлинности токена: переименовывает параметр токена для строки запроса, который появляется в запрашиваемом URL-адресе.

  5. Можно настроить маркер, воспользовавшись исходным кодом на сайте GitHub. Доступны такие языки:

    • С
    • C#
    • PHP
    • Perl
    • Ява
    • Питон

Особенности и цены поставщиков сети доставки контента Azure

Дополнительные сведения о функциях см. в разделе функции продукта Azure Content Delivery Network. Сведения о ценах см. на странице Цены на сеть доставки содержимого.