Документация: ПО Факел — разрабатываемая версия
Служба HTTPS и HTTP API¶
Обзор¶
Служба HTTPS ПО Факел — веб-сервер маршрутизатора, через который работает программный интерфейс управления HTTP API (раздел service https api). Через API внешние системы управления и сценарии администратора читают и изменяют конфигурацию маршрутизатора, сохраняют и загружают файлы конфигурации, добавляют образы системы, просматривают образы контейнеров, выполняют команды просмотра (show), генерации (generate) и сброса (reset), перезагружают и выключают маршрутизатор. Каждой из этих возможностей соответствует свой путь запроса (/retrieve, /configure, /config-file, /image, /container-image, /show, /generate, /reset, /reboot, /poweroff). Служба доступна на адресах интерфейсов, которыми управляет FVE. Кроме обычного API служба поддерживает интерфейс GraphQL (api graphql).
Служба настраивается в разделе service https:
адреса и порт —
listen-addressиport(по умолчанию 443). Если адреса не заданы, служба принимает подключения на всех адресах IPv4 и IPv6. Если порт занят другой службой, проверка конфигурации завершается ошибкой. Командойvrfслужбу можно перенести в экземпляр VRF (см. Виртуальная маршрутизация), адресаlisten-addressпри этом должны принадлежать интерфейсам этого VRF;доступ —
allow-client addressограничивает адреса и сети клиентов, которым разрешены запросы к путям API (другим клиентам служба отвечает кодом HTTP 403); запросы к остальным путям службы этот параметр не ограничивает;enable-http-redirectвключает перенаправление запросов HTTP с порта 80 на HTTPS;шифрование — сертификат службы и сертификат удостоверяющего центра из конфигурации PKI (
certificates, см. Инфраструктура открытых ключей), параметры Диффи — Хеллмана для обмена ключами DHE (certificates dh-params), допустимые версии TLS (tls-version). Если сертификат не задан, служба использует встроенный самоподписанный сертификат, и при проверке конфигурации выводится предупреждение: такой сертификат не следует использовать в рабочей сети;размер тела запроса —
request-body-size-limit.
Запросы к API подтверждаются ключом. Ключи задаются командами api keys id <id> key. Для GraphQL можно выбрать аутентификацию по ключам или по токену JWT (api graphql authentication type); для токенов задаются время действия и длина секрета. Если раздел api задан, но не задан ни один ключ и аутентификация по токену не выбрана, проверка конфигурации завершается ошибкой. Если для GraphQL выбрана аутентификация по токену, а ключей нет, выводится предупреждение: обычный (не GraphQL) API в этом случае недоступен.
Запрос с неверным ключом служба отклоняет с сообщением Valid API key is required. Описание API (путь /docs) доступно без ключа.
Дополнительные параметры API: cors allow-origin разрешает запросы к интерфейсу GraphQL со страниц других источников (CORS), strict включает строгую проверку путей (например, удаление несуществующего пути конфигурации завершается ошибкой), debug — режим отладки (подробные сведения об ошибках изменения конфигурации в системном журнале), graphql introspection — интроспекцию схемы GraphQL.
В текущей версии ПО Факел через API запросы /configure и /configure-section не выполняются (ответ 502), изменения конфигурации через API не применяются, а при нестандартном порте enable-http-redirect перенаправляет на порт 443 (см. Ограничения).
Список команд¶
Режим «Конфигурирование»¶
service https allow-client address <address>¶
Синтаксис:
set service https allow-client address
<address>delete service https allow-client address
<address>show service https allow-client address
Аргументы:
<address>— адрес или префикс клиента. Формат: IPv4-адрес (x.x.x.x), IPv6-адрес (h:h:h:h:h:h:h:h), IPv4-префикс (x.x.x.x/x) или IPv6-префикс (h:h:h:h:h:h:h:h/x). Можно задать несколько значений.
Режим: «Конфигурирование».
service https api cors allow-origin <allow-origin>¶
access-control-allow-origin.Синтаксис:
set service https api cors allow-origin
<allow-origin>delete service https api cors allow-origin
<allow-origin>show service https api cors allow-origin
Аргументы:
<allow-origin>— источник запросов. Формат: строка. Можно задать несколько значений.
Режим: «Конфигурирование».
service https api debug¶
/configure) завершился ошибкой, в системный журнал (show log) записываются подробные сведения об ошибке. Ответ клиенту в режиме отладки не меняется.Синтаксис:
set service https api debug
delete service https api debug
show service https api debug
Режим: «Конфигурирование».
service https api graphql authentication expiration <expiration>¶
expired token.Синтаксис:
set service https api graphql authentication expiration
<expiration>delete service https api graphql authentication expiration
<expiration>show service https api graphql authentication expiration
Аргументы:
<expiration>— время действия токена в секундах. Формат: целое число. Диапазон значений: от 60 до 31536000. Значение по умолчанию: 3600.
Режим: «Конфигурирование».
service https api graphql authentication secret-length <secret-length>¶
Синтаксис:
set service https api graphql authentication secret-length
<secret-length>delete service https api graphql authentication secret-length
<secret-length>show service https api graphql authentication secret-length
Аргументы:
<secret-length>— длина секрета в байтах. Формат: целое число. Диапазон значений: от 16 до 65535. Значение по умолчанию: 32.
Режим: «Конфигурирование».
service https api graphql authentication type <type>¶
Синтаксис:
set service https api graphql authentication type
<type>delete service https api graphql authentication type
<type>show service https api graphql authentication type
Аргументы:
<type>— тип аутентификации. Возможные значения:key— аутентификация по ключам API;token— аутентификация по токену JWT. Значение по умолчанию: key.
Режим: «Конфигурирование».
service https api graphql introspection¶
Синтаксис:
set service https api graphql introspection
delete service https api graphql introspection
show service https api graphql introspection
Режим: «Конфигурирование».
service https api keys id <id>¶
<id>.api keys id <id> key, иначе проверка конфигурации завершается ошибкой. Если не задан ни один ключ и для GraphQL не выбрана аутентификация по токену (api graphql authentication type token), проверка конфигурации также завершается ошибкой.Синтаксис:
set service https api keys id
<id>delete service https api keys id
<id>show service https api keys id
Аргументы:
<id>— идентификатор ключа API. Формат: строка.
Режим: «Конфигурирование».
service https api keys id <id> key <key>¶
<id> в открытом виде.Синтаксис:
set service https api keys id
<id>key<key>delete service https api keys id
<id>key<key>show service https api keys id
<id>key
Аргументы:
<id>— идентификатор ключа API.<key>— значение ключа. Формат: строка.
Режим: «Конфигурирование».
service https api strict¶
Cannot delete [<path>]: path/value does not exist.Синтаксис:
set service https api strict
delete service https api strict
show service https api strict
Режим: «Конфигурирование».
service https certificates ca-certificate <ca-certificate>¶
Синтаксис:
set service https certificates ca-certificate
<ca-certificate>delete service https certificates ca-certificate
<ca-certificate>show service https certificates ca-certificate
Аргументы:
<ca-certificate>— имя сертификата удостоверяющего центра в конфигурации PKI. Формат: строка.
Режим: «Конфигурирование».
service https certificates certificate <certificate>¶
Синтаксис:
set service https certificates certificate
<certificate>delete service https certificates certificate
<certificate>show service https certificates certificate
Аргументы:
<certificate>— имя сертификата в конфигурации PKI. Формат: строка.
Режим: «Конфигурирование».
service https certificates dh-params <dh-params>¶
pki dh, см. Инфраструктура открытых ключей). С этими параметрами служба принимает подключения TLS 1.2 с обменом ключами DHE (наборы шифров DHE-RSA, нужен сертификат RSA). Без них такие подключения отклоняются, и для обмена ключами используется только ECDHE.Синтаксис:
set service https certificates dh-params
<dh-params>delete service https certificates dh-params
<dh-params>show service https certificates dh-params
Аргументы:
<dh-params>— имя параметров Диффи — Хеллмана в конфигурации PKI. Формат: строка.
Режим: «Конфигурирование».
service https enable-http-redirect¶
Синтаксис:
set service https enable-http-redirect
delete service https enable-http-redirect
show service https enable-http-redirect
Режим: «Конфигурирование».
service https listen-address <listen-address>¶
Синтаксис:
set service https listen-address
<listen-address>delete service https listen-address
<listen-address>show service https listen-address
Аргументы:
<listen-address>— локальный IP-адрес. Формат: IPv4-адрес (x.x.x.x) или IPv6-адрес (h:h:h:h:h:h:h:h). Можно задать несколько значений.
Режим: «Конфигурирование».
service https port <port>¶
Синтаксис:
set service https port
<port>delete service https port
<port>show service https port
Аргументы:
<port>— номер порта. Формат: целое число. Диапазон значений: от 1 до 65535. Значение по умолчанию: 443.
Режим: «Конфигурирование».
service https request-body-size-limit <request-body-size-limit>¶
Синтаксис:
set service https request-body-size-limit
<request-body-size-limit>delete service https request-body-size-limit
<request-body-size-limit>show service https request-body-size-limit
Аргументы:
<request-body-size-limit>— размер тела запроса в мегабайтах. Формат: целое число. Диапазон значений: от 1 до 256. Значение по умолчанию: 1.
Режим: «Конфигурирование».
service https tls-version <tls-version>¶
Синтаксис:
set service https tls-version
<tls-version>delete service https tls-version
<tls-version>show service https tls-version
Аргументы:
<tls-version>— версия TLS. Возможные значения:1.2— TLS 1.2;1.3— TLS 1.3. Значение по умолчанию: 1.2 1.3. Можно задать несколько значений.
Режим: «Конфигурирование».
service https vrf <vrf>¶
listen-address служба занять не может и не запускается.Синтаксис:
set service https vrf
<vrf>delete service https vrf
<vrf>show service https vrf
Аргументы:
<vrf>— имя экземпляра VRF. Формат: строка.
Режим: «Конфигурирование».