Skip to content

Revert "Feature/docker security improvements"#26

Closed
Fl1riX wants to merge 2 commits into
mainfrom
revert-25-feature/docker-security-improvements
Closed

Revert "Feature/docker security improvements"#26
Fl1riX wants to merge 2 commits into
mainfrom
revert-25-feature/docker-security-improvements

Conversation

@Fl1riX
Copy link
Copy Markdown
Owner

@Fl1riX Fl1riX commented May 30, 2026

Reverts #25

Summary by Sourcery

Отменить недавние изменения по усилению безопасности Docker и логированию, добавив при этом базовое логирование в файл.

Новые возможности:

  • Добавлено файловое логирование для записи журналов приложения в SteelTime.log вместе с выводом в консоль.

Улучшения:

  • Упрощена сетевая конфигурация Docker за счёт возврата к стандартной конфигурации мостовой сети (bridge).

Обслуживание:

  • Задокументирован TODO в endpoint’е магической ссылки Telegram для повторного внедрения изоляции на уровне Docker в будущем.
Original summary in English

Summary by Sourcery

Revert recent Docker security hardening and logging changes while adding basic file logging.

New Features:

  • Add file-based logging to write application logs to SteelTime.log alongside console output.

Enhancements:

  • Simplify Docker networking by reverting to the default bridge network configuration.

Chores:

  • Document a TODO in the Telegram magic link endpoint to reintroduce Docker-level isolation in the future.

@sourcery-ai
Copy link
Copy Markdown
Contributor

sourcery-ai Bot commented May 30, 2026

Руководство для ревьюера (свернуто для небольших PR)

Руководство для ревьюера

Этот PR отменяет большую часть ранее добавленных мер по усилению безопасности Docker (сети, возможности, файловая система только для чтения, опции безопасности) и добавляет базовое логирование в файл, а также TODO‑комментарий, связанный с изоляцией Docker в auth‑флоу.

Изменения на уровне файлов

Изменение Детали Файлы
Отмена усиления безопасности Docker и настройки пользовательских сетей в docker-compose.
  • Удалить пользовательские сетевые подключения сервисов api_db_net и api_bot_net для сервисов postgres, api, bot и watchtower
  • Убрать опции безопасности, такие как no-new-privileges, файловая система root в режиме read_only, cap_drop ALL и tmpfs /tmp для сервисов, у которых они ранее были настроены
  • Заменить отдельные сети api_db_net и api_bot_net определением стандартной сети bridge
docker-compose.yml
Добавить файловое логирование вместе с логированием в консоль.
  • Создать FileHandler, который записывает логи в SteelTime.log с кодировкой UTF-8
  • Применить существующий форматтер к новому файловому обработчику
  • Подключить файловый обработчик к основному логгеру вдобавок к консольному обработчику
src/logger.py
Задокументировать ожидаемую работу по Docker‑изоляции для обработки Telegram magic link.
  • Добавить TODO‑комментарий, указывающий на необходимость Docker‑уровневой изоляции вокруг обработки токена telegram magic link
src/presentation/api/v1/auth/tg_link.py

Подсказки и команды

Взаимодействие с Sourcery

  • Запустить новое ревью: Оставьте комментарий @sourcery-ai review в pull request.
  • Продолжить обсуждение: Отвечайте напрямую на комментарии ревью от Sourcery.
  • Создать GitHub‑issue из комментария ревью: Попросите Sourcery создать
    issue из комментария ревью, ответив на него. Вы также можете ответить на
    комментарий ревью с @sourcery-ai issue, чтобы создать из него issue.
  • Сгенерировать заголовок pull request: Напишите @sourcery-ai в любом месте
    заголовка pull request, чтобы сгенерировать заголовок в любой момент. Также можно
    оставить комментарий @sourcery-ai title в pull request, чтобы (пере)сгенерировать заголовок в любой момент.
  • Сгенерировать описание pull request: Напишите @sourcery-ai summary в любом месте
    тела pull request, чтобы сгенерировать описание PR в нужном месте. Также можно
    оставить комментарий @sourcery-ai summary в pull request, чтобы (пере)сгенерировать описание в любой момент.
  • Сгенерировать руководство для ревьюера: Оставьте комментарий @sourcery-ai guide в pull request,
    чтобы (пере)сгенерировать руководство для ревьюера в любой момент.
  • Пометить все комментарии Sourcery как разрешённые: Оставьте комментарий @sourcery-ai resolve в
    pull request, чтобы пометить все комментарии Sourcery как разрешённые. Полезно, если вы уже
    учли все комментарии и больше не хотите их видеть.
  • Отклонить все ревью Sourcery: Оставьте комментарий @sourcery-ai dismiss в pull request,
    чтобы отклонить все существующие ревью от Sourcery. Особенно полезно, если вы
    хотите начать с чистого листа с новым ревью — не забудьте затем оставить комментарий
    @sourcery-ai review, чтобы запустить новое ревью!

Настройка работы

Зайдите в свою панель управления, чтобы:

  • Включать или отключать функции ревью, такие как автоматически сгенерированное Sourcery
    описание pull request, руководство для ревьюера и другие.
  • Изменить язык ревью.
  • Добавлять, удалять или редактировать пользовательские инструкции для ревью.
  • Настроить другие параметры ревью.

Получение помощи

Original review guide in English
Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

This PR reverts most of the previously introduced Docker security hardening (networks, capabilities, read-only FS, security options) and adds basic file-based logging, plus a TODO comment related to Docker isolation in the auth flow.

File-Level Changes

Change Details Files
Revert Docker security hardening and custom networks configuration in docker-compose.
  • Remove custom api_db_net and api_bot_net service network attachments from postgres, api, bot, and watchtower services
  • Drop security options such as no-new-privileges, read_only root filesystem, cap_drop ALL, and tmpfs /tmp from services that previously had them
  • Replace the separate api_db_net and api_bot_net networks with the default bridge network definition
docker-compose.yml
Add file-based logging alongside console logging.
  • Create a FileHandler that writes logs to SteelTime.log with UTF-8 encoding
  • Apply the existing formatter to the new file handler
  • Attach the file handler to the main logger in addition to the console handler
src/logger.py
Document pending Docker-level isolation work for Telegram magic link handling.
  • Add a TODO comment indicating the need for Docker-level isolation around telegram magic link token handling
src/presentation/api/v1/auth/tg_link.py

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Copy link
Copy Markdown
Contributor

@sourcery-ai sourcery-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Привет — я нашёл 1 проблему и оставил несколько общих замечаний:

  • Запись логов в фиксированный файл SteelTime.log в файловой системе контейнера может привести к неконтролируемому росту диска или проблемам с правами; рассмотрите вывод логов в stdout/stderr (для Docker‑логирования) или в примонтированный том с ротацией.
  • Откат удаляет все security_opt, read_only, cap_drop и выделенные сети; если проблемы вызывали только конкретные настройки, подумайте о том, чтобы вернуть минимально необходимый поднабор (например, no-new-privileges или сброс некоторых capability), вместо полного отключения всех механизмов повышения безопасности.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- Writing logs to a fixed `SteelTime.log` in the container filesystem may cause disk growth or permission issues; consider directing logs to stdout/stderr (for Docker logging) or to a mounted volume with rotation.
- The revert removes all `security_opt`, `read_only`, `cap_drop`, and dedicated networks; if only specific settings caused issues, consider reintroducing a minimal subset (e.g., `no-new-privileges` or capability drops) instead of disabling all hardening.

## Individual Comments

### Comment 1
<location path="src/logger.py" line_range="12-15" />
<code_context>
 console_handler = logging.StreamHandler() # вывод логов в консоль
 console_handler.setFormatter(formatter)

+handler = logging.FileHandler(filename="SteelTime.log", encoding="utf-8") # файл для записи логов
+handler.setFormatter(formatter)
+
+logger.addHandler(handler)
 logger.addHandler(console_handler)
\ No newline at end of file
</code_context>
<issue_to_address>
**issue (bug_risk):** Plain FileHandler risks unbounded log file growth and path issues

Using `FileHandler` with a fixed filename will grow the log file indefinitely in the container’s working directory, which can fill the filesystem in Docker. Prefer `RotatingFileHandler`/`TimedRotatingFileHandler` with size/backup limits or logging to stdout for Docker to manage. If you must write to a file, make the log path configurable (e.g. via environment variable).
</issue_to_address>

Для open source Sourcery бесплатен — если вам нравятся наши ревью, пожалуйста, расскажите о них ✨
Помогите мне стать полезнее! Пожалуйста, нажмите 👍 или 👎 под каждым комментарием, и я использую этот фидбек, чтобы улучшать ваши ревью.
Original comment in English

Hey - I've found 1 issue, and left some high level feedback:

  • Writing logs to a fixed SteelTime.log in the container filesystem may cause disk growth or permission issues; consider directing logs to stdout/stderr (for Docker logging) or to a mounted volume with rotation.
  • The revert removes all security_opt, read_only, cap_drop, and dedicated networks; if only specific settings caused issues, consider reintroducing a minimal subset (e.g., no-new-privileges or capability drops) instead of disabling all hardening.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- Writing logs to a fixed `SteelTime.log` in the container filesystem may cause disk growth or permission issues; consider directing logs to stdout/stderr (for Docker logging) or to a mounted volume with rotation.
- The revert removes all `security_opt`, `read_only`, `cap_drop`, and dedicated networks; if only specific settings caused issues, consider reintroducing a minimal subset (e.g., `no-new-privileges` or capability drops) instead of disabling all hardening.

## Individual Comments

### Comment 1
<location path="src/logger.py" line_range="12-15" />
<code_context>
 console_handler = logging.StreamHandler() # вывод логов в консоль
 console_handler.setFormatter(formatter)

+handler = logging.FileHandler(filename="SteelTime.log", encoding="utf-8") # файл для записи логов
+handler.setFormatter(formatter)
+
+logger.addHandler(handler)
 logger.addHandler(console_handler)
\ No newline at end of file
</code_context>
<issue_to_address>
**issue (bug_risk):** Plain FileHandler risks unbounded log file growth and path issues

Using `FileHandler` with a fixed filename will grow the log file indefinitely in the container’s working directory, which can fill the filesystem in Docker. Prefer `RotatingFileHandler`/`TimedRotatingFileHandler` with size/backup limits or logging to stdout for Docker to manage. If you must write to a file, make the log path configurable (e.g. via environment variable).
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment thread src/logger.py Outdated
@coveralls
Copy link
Copy Markdown

coveralls commented May 30, 2026

Coverage Report for CI Build 26684644872

Coverage remained the same at 27.887%

Details

  • Coverage remained the same as the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • 2 coverage regressions across 1 file.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

2 previously-covered lines in 1 file lost coverage.

File Lines Losing Coverage Coverage
presentation/api/v1/auth/tg_link.py 2 0.0%

Coverage Stats

Coverage Status
Relevant Lines: 1169
Covered Lines: 326
Line Coverage: 27.89%
Coverage Strength: 0.56 hits per line

💛 - Coveralls

@Fl1riX Fl1riX closed this May 30, 2026
@Fl1riX Fl1riX deleted the revert-25-feature/docker-security-improvements branch May 30, 2026 13:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants