Общие сведения
В системе предусмотрена возможность ограничивать доступ к API, для этого существуют списки доступа. Ограничения распространяются на пользователей типа администратор и дилер. Существуют глобальные и частные списки доступа.
Глобальные списки доступа
Располагаются в отдельном разделе административного интерфейса, позволяют разом ограничить доступ всех пользователей типа администратор или дилер, пример:
Форма состоит из списка IP адресов сетей (с маской сети, если маска не указана, автоматически подставляется 32), а также комментарий к каждому адресу. Оба поля обязательны для заполнения. С помощью кнопок + и - можно добавлять и удалять строки. Для очистки следует удалить все строки с адресами и нажать Apply.
Частные списки доступа
Частный список доступа также возможно задавать для администраторов или дилеров. Задать частный список можно через раздел User → Access list (колонка) → list
частный список доступа, привязанный непосредственно к пользователю
интерфейс аналогичен глобальным спискам доступа, но применяется непосредственно к пользователю. Важно частный список доступа перекрывает глобальный список, это дает возможность, к примеру, всем администратором ограничить доступ офисной сетью и какому-либо конкретному предоставить доступ из другой сети.
Проверка доступа
- при попытке пройти авторизацию в системе, если список доступа не позволяет авторизовать пользователя, ему будет выведено сообщение:
- при попытке получить токен через приложение типа trusted - вернется статус 403 с сообщением - unallowed_ip
Варианты использования
- не заданы ни глобальные, ни локальные списки доступа, всем администратором и дилерам разрешен доступ из всех сетей
- заданы глобальные списки доступа для администраторов и дилеров, все пользователи данного типа будут проходить эту проверку
- заданы (не заданы) глобальные списки, у пользователя задан частный список доступа, данный пользователь будут проходить проверку только по частному списку доступа
Ресурсы API
Ресурс | Метод | Описание | Данные |
---|---|---|---|
/admin/admin_global_access_list/ /admin/dealer_global_access_list/ | GET | Получить глобальный список доступа для администраторов, дилеров соответственно | либо пустой список [] либо список записей вида: [{ "description": "string", "id": 0, "network_address": "string" }] |
/admin/admin_global_access_list/ /admin/dealer_global_access_list/ | PUT | Изменить глобальный список доступа | status=200 при успешном изменении списка |
/admin/users/{user_id}/access_list/ | GET | Получить частный список доступа, для пользователя типа администратор или диллер | либо пустой список [] либо список записей вида: [{ "description": "string", "id": 0, "network_address": "string", "user_id": 0 }] |
/admin/users/{user_id}/access_list/ | PUT | Изменить частный список доступа | status=200 при успешном изменении списка |
Доверенный IP адррес
Если был указан неверный адрес в списке доступа, и система не позволяет авторизоваться администратору, в разделе [rest-api] главном конфигурационном файле /etc/ringme/main.cfg предусмотрен параметр trusted_ip. В качестве значения этому параметру можно указать IP адрес, для которого проверка через список доступа осуществляться не будет. Таким образом можно задать адрес, перезапустить сервис API, авторизоваться и прописать правильные адреса в списках доступа.