Вам предоставляется задача спроектировать и реализовать приложение на Golang, которое выполняет несколько методов в операционной системе Linux и возвращает результат выполнения посредством REST API в формате JSON. К каждому методу применяется Role-Based Access Control (RBAC). В качестве базы данных используется ETCD. Приложение должно предоставлять возможность управления элементами RBAC (Identity Providers, Users, Groups, Roles, Permissions, Objects) с помощью CRUD методов. Аутентификация пользователей должна осуществляться по паролю, после успешной аутентификации выдается JWT токен, который используется для дальнейших вызовов методов API.
-
Реализовать методы для работы с элементами RBAC:
- Создание, чтение, обновление и удаление (CRUD) Identity Providers, Users, Groups, Roles, Permissions и Objects.
-
Аутентификация и авторизация:
- Реализовать аутентификацию пользователей по паролю.
- После успешной аутентификации пользователю выдается JWT токен, который должен быть использован для аутентификации при дальнейших вызовах методов API.
- Реализовать авторизацию на основе RBAC. Методы API должны проверять права доступа пользователя на выполнение операций.
-
Реализовать методы API:
- Вернуть текущее системное время и дату.
- Вернуть емкость корневой директории: занято, свободно, всего.
- Вернуть текущую версию системы.
- Вернуть default gateway и текущий IP адрес.
- Вернуть емкость RAM: занято, свободно, всего.
-
Использование базы данных ETCD:
- Использовать ETCD в качестве базы данных для хранения информации о элементах RBAC (Identity Providers, Users, Groups, Roles, Permissions, Objects).
-
Проектирование с учетом масштабируемости:
- При проектировании приложения выбрать один из паттернов проектирования, который обеспечит масштабируемость и возможность работы над проектом многочисленными разработчиками.
-
Тестирование ( опционально ):
- Написать unit-тесты для всех методов API и функциональных возможностей приложения.
- Покрыть тестами различные сценарии использования и возможные ошибки.
-
Документация:
- Предоставить документацию к API, описывающую все доступные методы и форматы данных.
-
Безопасность ( опционально ):
- Обеспечить защиту от возможных уязвимостей и атак, таких как инъекции, переполнения буфера и т.д.
-
Размещение на GitHub:
- Загрузить исходный код проекта на GitHub с подробным описанием и инструкциями по развертыванию.
В результате выполнения проекта должно быть разработано приложение на Golang, реализующее методы API с применением RBAC и хранением данных в ETCD. Приложение должно успешно работать на хост системе Linux и удовлетворять всем поставленным требованиям.