Менеджер ключей
Нужно сделать HTTP сервис для одноразовых секретов наподобие https://onetimesecret.com/.
Он должен позволить создать секрет, задать кодовую фразу для его открытия и cгенерировать код, по которому можно прочитать секрет только один раз. UI не нужен, это должен быть JSON Api сервис.
Для написание сервиса можно использовать FastAPI или любой другой фреймворк.
- Метод
/generate
должен принимать секрет и кодовую фразу и отдаватьsecret_key
по которому этот секрет можно получить. - Метод
/secrets/{secret_key}
принимает на вход кодовую фразу и отдает секрет.
- Язык программирования: Python 3.7.
- Использование Docker, сервис должен запускаться с
помощью
[docker-compose up](https://docs.docker.com/compose/reference/up/)
. - Требований к используемым технологиям нет.
- Код должен соответствовать PEP, необходимо использование type hints, к публичным методам должна быть написана документация на английском языке.
- Написаны тесты (постарайтесь достичь покрытия в 70% и больше). Вы можете использовать pytest или любую другую библиотеку для тестирования.
- Сервис асинхронно обрабатывает запросы.
- Данные сервиса хранятся во внешнем хранилище, запуск которого также описан в
docker-compose
. Мы рекомендуем использовать MongoDB, но Вы можете использовать любую подходящую базу. - Секреты и кодовые фразы не хранятся в базе в открытом виде.
- Добавлена возможность задавать время жизни для секретов. Можно попробовать реализовать это с помощью TTL индексов.
Шаблон файла .env
Переменная | Описание |
---|---|
APPLICATION__PASSWORD_GEN_LEN |
Длина генерируемого пароля |
DATABASE__MONGO_DSN |
Строка подключения к БД вида mongodb://[username:password@]host[/[defaultauthdb][?options]] |
DATABASE__MONGO_DB_NAME |
Имя базы данных |
APPLICATION__CORS_ORIGINS |
Список разрешенных хостов для CORS |
APPLICATION__CORS_METHODS |
Список разрешенных методов для CORS |
APPLICATION__CORS_HEADERS |
Список разрешенных заголовков для CORS |
python -m uvicorn src.main:app --host 0.0.0.0 --port 8080 --workers 2