# ctk_restapi

Сервис *Cluster Tool Kit Rest API* предоставляет унифицированный программный интерфейс (REST API) для управления компонентами системы и контроля доступа. Он выступает в роли безопасного шлюза, абстрагируя пользователя от специфики среды запуска.

Сервис поддерживает два режима работы в зависимости от архитектуры инсталляции:

- Cluster Mode (ctk_restapi): Работает внутри Kubernetes. Взаимодействует с Kubernetes API для управления подами и сервисами.

- Standalone Mode (scheduler REST API): Работает как системная служба под управлением systemd. Взаимодействует с системными юнитами для управления процессами.


## Основные функции и назначение

1. Единый интерфейс управления (Abstraction Layer)

Вместо прямого взаимодействия с низкоуровневыми инструментами (kubectl или systemctl), пользователь или внешняя система используют стандартные HTTP-запросы. Это позволяет:

- Скрыть сложность инфраструктуры.

- Предоставить только необходимый набор операций (например, только перезапуск конкретных сервисов), не открывая доступ ко всей системе.

2. Ролевой доступ и управление правами (RBAC)

Сервис реализует гибкую модель разграничения прав. Можно настроить разрешения для пользователей на разных уровнях:

- Просмотр (service:view): только получение статуса сервисов.

- Управление (service:restart): право на перезапуск.

- Гранулярный доступ: права на конкретные сервисы (например, service:NAME:all) или группы сервисов.

3. JWT-аутентификация

Для обеспечения безопасности вместо использования системных сертификатов или ключей доступа применяются JWT-токены:

- Разделение прав доступа без передачи системных учетных данных.

- Контроль времени жизни сессии (TTL).

- Возможность оперативного отзыва доступа.

4. Аудит и логирование

Все действия, совершаемые через API, фиксируются в журнале. Для каждой операции сохраняется информация:

- Кто совершил действие.

- Когда и какой запрос был отправлен.

- Причина выполнения операции (необязательное поле).

5. Защита и стабильность (Rate Limiting)

Для предотвращения перегрузки системы и защиты от злоупотреблений реализованы механизмы ограничения запросов:

- Лимиты на количество попыток аутентификации.

- Общие ограничения на количество API-вызовов в единицу времени.

6. Безопасность сетевого взаимодействия

- CORS: Настройка разрешенных доменов для предотвращения запросов с недоверенных ресурсов.

- Контроль заголовков: Строгая проверка состава и содержания HTTP-пакетов.

