Техническое задание: Web API для CoreDNS
Цель проекта
Разработать легковесное и безопасное веб-приложение программируемого интерфейса (API) для динамического управления DNS-сервером CoreDNS. API должно предоставлять удобный способ администрирования доменных зон и записей через HTTP-запросы.
Ключевые функциональные требования
1. Режимы работы API
- Простой режим (Simple): Поддержка только записей типа A для создания и управления host-файлом.
- Полный режим (Full): Поддержка полноценных zone-файлов со всеми основными типами DNS-записей (A, AAAA, CNAME, MX, TXT и др.).
2. Безопасность и аутентификация
- Реализация авторизации всех входящих запросов.
- Использование механизма подписи запросов через пару
api-key и api-secret.
3. Логирование и аудит
- Интеграция с Immudb для обеспечения неизменяемого (immutable) журналирования всех операций и запросов к API.
- В логах должны фиксироваться: тип операции, данные запроса, временная метка, идентификатор инициатора.
4. Валидация данных
- Реализация строгой проверки корректности всех входящих данных для DNS-записей (формат IP-адресов, доменных имен, TTL и т.д.).
- API должно возвращать понятные ошибки при некорректном вводе.
5. Управление данными
- Создание, чтение, обновление и удаление (CRUD) пулов доменов.
- Создание, чтение, обновление и удаление DNS-записей внутри каждого домена.
- Организация локального (промежуточного) хранилища данных для обеспечения отказоустойчивости и скорости отклика.
Технические ожидания
- Код должен быть чистым, документированным и готовым к развертыванию в production-среде.
- Архитектура API должна быть модульной и масштабируемой.
- Необходимо предоставить базовую документацию по конечным точкам (endpoints) API и примеры запросов.