Перейти к основному содержимому
Версия: Next

Домены

Домены - основной объект в системе для управления услугой CDN для сайтов.

Управление доменами​

Статусы домена​

Для определения текущего состояния домена используется поле status объекта (domain.status).

Возможные значения:

  • OK (CDN для домена включен)
  • DISABLED (CDN для домена выключен)
  • BLOCKED (домена заблокирован)
  • CHECKING_NS_LIST (проводится проверка делегации домена)
  • DOMAIN_NOT_DELEGATED (домен не делегирован)
  • CREATING_SSL_CERT (выпускается сертификат для домена)
  • SSL_CERT_CREATING_ERROR (ошибка выпуска сертификата для домена)
  • UPDATING_DNS_RECORDS (проводится обновление записей на PDNS)
  • UPDATING_DNS_RECORDS_ERROR (ошибка обновления записей на PDNS)

Создание домена​

Создание домена происходит синхронно, в системе создается объект domain.

примечание

Сразу после создания домена услуга CDN неактивна. Статус домена - DISABLED.

Для каждого домена генерируется поле cdn_domain. Это доменное имя, с которого будет раздаваться статический контент из кэширующих серверов. Если тип создаваемого домена cname, то для объекта также генерируется и заполняется поле cname_url. Это доменное имя, которое при необходимости можно указать в качестве контента в CNAME запись в DNS клиента.

Обновление домена​

Обновление домена происходит синхронно, в системе обновляется объект domain. Для изменений используются доступные поля соответствующего API метода.

Работа с TLS/SSL сертификатами​

После создания домена пользователь может автоматически выпустить бесплатный сертификат от Let's Encrypt либо загрузить свой. Для выпуска сертификата используется метод issue_cert. При этом создается задача с типом ISSUE_CERT. Бесплатный сертификат будет обновляться автоматически каждые 60 дней. Автоматическое обновление можно отключить на уровне приложения. Для загрузки пользовательского сертификата использовать метод upload_ssl_cert. Данный метод работает синхронно. Допускается обновление/загрузка сертификата как при выключенной, так и при включенной услуге CDN.

Загрузка сертификата для доменов с типом delegated​

При загрузке сертификата для домена типа delegated выполняется проверка того, что сертификат выпущен для доменного имени domain.name, указанного при создании объекта domain. Поле API-метода domain_name в валидации не участвует.

к сведению

Значение поля domain.cdn_domain для домена типа delegated всегда равно значению поля domain.name.

Пример использования:

  • cоздать домен с именем "example.com" и типом delegated
  • загрузить сертификат
  • среди списка доменных имен загружаемого сертификата (Subject Alternative Name) обязательно должно быть "example.com" либо "*.example.com"
  • включить CDN для домена
  • после обновления кэша DNS-серверов шифрование запросов при обращении к "example.com" будет происходить с помощью загруженного сертификата

Загрузка сертификата для доменов с типом cname​

Для загрузки сертификата для домена типа cname необходимо указать желаемое доменное имя в поле domain_name. Это доменное имя, при обращении к которому запросы будут проходить через серверы CDN. Оно не может совпадать с domain.name.

warning

После успешной загрузки сертификата у объекта domain изменяется значение поля cdn_domain.

Пример использования:

  • cоздать домен с именем "example.com" и типом cname
  • для домена автоматически будет заполнено поле cname_url, например, "d121.static-clients.arviol.com"
  • загрузить сертификат, указав в поле domain_name доменное имя, с которого планируется раздача статики сайта, например, "cdn.example.com"
  • среди списка доменных имен загружаемого сертификата (Subject Alternative Name) обязательно должно быть "cdn.example.com" либо "*.example.com"
  • после успешной загрузки сертификата у объекта domain поле cdn_domain изменится на "cdn.example.com"
  • включить CDN для домена
  • в настройках DNS-хостинга добавить CNAME-запись: name="cdn.example.com", data="d121.static-clients.arviol.com"
  • после обновления кэша DNS-серверов запросы по домену "cdn.example.com" будут отправлены через серверы CDN

Включение услуги CDN для домена​

Для включения услуги необходимо использовать API метод enable_cdn_for_domain. При успешном выполнении метода в системе создается задача ENABLE_CDN. Если услуга уже включена для данного домена, то метод вернет соответствующий код ошибки. Одним из этапов включения услуги является выпуск нового SSL/TLS сертификата или обновление текущего, если он просрочен. Если перед включением для домена был загружен пользовательский сертификат, то никаких действий с ним не производится. После успешного выполнения задачи домен получает статус OK - услуга активна. Доменное имя для получения статики из кэш-серверов: cdn_domain.

Выключение услуги CDN для домена​

Для выключения услуги необходимо использовать API метод disable_cdn_for_domain. При успешном выполнении метода в системе создается задача DISABLE_CDN. Если услуга уже выключена для данного домена, то метод вернет соответствующий код ошибки. После успешного выполнения задачи домен получает статус DISABLED - услуга выключена.

WAF​

Объекты waf являются второстепенными по отношению к доменам. Для управления waf реализован набор API методов.

Структура объекта:

{
"id": 1,
"domain_id": 1,
"sec_rule_engine": "detection_only",
"paranoia_level": 1,
"executing_paranoia_level": 1,
"critical_anomaly_score": 5,
"error_anomaly_score": 4,
"warning_anomaly_score": 3,
"notice_anomaly_score": 2,
"in_score_threshold": 5,
"out_score_threshold": 4,
"sampling_percentage": 100
}

Выгрузка логов WAF​

Для получения логов WAF по домену доступен API-метод get_waf_logs.

В параметрах требуется указать время начала выборки (включительно), время конца выборки (не включая). Дополнительными параметрами можно указать limit - максимальное количество логов, ожидаемых в ответе, и offset - сдвиг, с помощью которого возможно реализовать пагинацию.

В результате метод возвращает объект, который содержит total_count - общее количество записей в хранилище по указанным датам и logs - массив json-записей c данными об ошибке.

примечание

Значение total_count не соответствует длине массива logs.

Например, если всего в хранилище 2000 записей (ids=1-2000) по указанными датам, а в запросе указан limit = 100, offset = 100, то в ответе получим: total_count = 2000, logs.length = 100 (id=101-200).

Locations​

Для каждого домена возможно добавить до 10 второстепенных объектов locations. Для управления locations реализован набор API методов.

Структура объекта и значения полей по умолчанию:

{
"id": 1,
"domain_id": 1,
"name": "/static/",
"type": "matching",
"headers": [
{
"key": "Accept-Encoding",
"value": "gzip, deflate, br"
}
],
"request_headers": [
{
"key": "X-Origin-Routing",
"value": "beta"
}
],
"cors_headers": {
"access_control_allow_origin": [
"*"
],
"access_control_expose_headers": [
"*"
],
"access_control_max_age": 600,
"access_control_allow_credentials": true,
"access_control_allow_methods": [
"DELETE"
],
"access_control_allow_headers": [
"*"
]
}
}

headers — массив заголовков ответа, добавляемых CDN при возврате контента пользователю. Каждый элемент задается парой key и value. Подходит для настройки кэширования, внедрения политик безопасности или передачи служебных меток.

request_headers — массив заголовков, которые CDN проксирует на origin при обращении за оригинальным ресурсом. Каждый элемент задается парой key и value. Используется для передачи дополнительных признаков маршрутизации, параметров A/B-тестов и другой служебной информации backend-системам.

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

Для доменов доступна функция ограничения доступа, за которую отвечает объект domain.access_params. Структура объекта:

{
"disallowed_country_codes": [
"RU",
"BY"
]
}

В поле disallowed_country_codes указывается список кодов стран, при запросах из которых клиент получит ответ с кодом ошибки 403 Forbidden. Коды стран должны соответствовать двухбуквенным обозначениям по ISO 3166 Alpha-2.

Подписанные ссылки​

За включение и выключение функции ограничения доступа к разделам сайта по подписанным ссылкам отвечают поля signed_url_enabled и signed_url_key объектов location. Включить и выключить функцию можно обновив объект location. При включении функции доступ к соответствующему разделу сайта будет только у обладателей подписанных ссылок. Генерация ссылок осуществляется клиентом.

Рекомендуемые сценарии​

Ниже представлены рекомендации по управлению доменами.

Первичное включение:​

  1. создать домен
  2. загрузить/выпустить сертификат при необходимости
  3. добавить список locations при необходимости
  4. добавить waf при необходимости
  5. включить услугу CDN

Обновление домена:​

  1. внести правки по всем интересующим пользователя настройкам
  2. вызвать API метод обновления домена
  3. внести изменения во второстепенные объекты (вызывать метод обновления домена не требуется)

API методы​

Домены​

Сертификаты​

Locations​

WAF​