Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014jDYM1nnoZZ3vFz23DDaV1
58 lines
4.1 KiB
Markdown
58 lines
4.1 KiB
Markdown
# logpile v1.35
|
|
|
|
Дата релиза: 2026-09-03
|
|
Тег: `v1.35`
|
|
|
|
Накопительный список изменений с версии v1.34.
|
|
|
|
## Обезличивание логов на месте (ADL-067)
|
|
|
|
Кнопка **«Обезличить и скачать копию»** в панели Customer data и режим
|
|
`logpile -sanitize <file> [-sanitize-out <file>]`. Строит де-идентифицированную
|
|
копию загруженного файла: замены той же длины, формат не меняется.
|
|
|
|
- Замены сохраняют длину байт-в-байт: `sigma.sbrf.ru` → `xxxxx.xxxx.xx`
|
|
(точки на местах), e-mail → `xxxxx@xxxx.xxxx.xx`, публичный IP
|
|
`93.184.216.34` → `00.000.000.00` (`net.ParseIP` → nil, не перематчится),
|
|
`TimeZone=Europe/Moscow` → `TimeZone=Etc/Universal` — валидная нейтральная
|
|
IANA-зона той же длины из таблицы `len → zone`, `SELTimeUTCOffset=180` →
|
|
`000`. Таймстемпы событий не пересчитываются.
|
|
- Архивы (`.tar` / `.sds` / `.gz` / `.tgz` / `.zip`) разбираются рекурсивно
|
|
без потерь: имена записей, права и все встроенные даты (tar mtime/atime/
|
|
ctime, gzip Name/ModTime, zip Modified) сохраняются; нетронутые zip-записи
|
|
копируются сырыми; длина содержимого не меняется → tar-заголовки и
|
|
контрольные суммы байт-идентичны, пересобирается только слой сжатия.
|
|
Если чистить нечего — выход байт-в-байт равен входу.
|
|
- Не редактируется (в отчёте, чистить вручную): бинарные члены (`FRU.bin`,
|
|
`localtime`, `redis-dump.rdb`, SOL-логи), битые вложенные архивы, HPE `.ahs`.
|
|
- Приватные IP, `pool.ntp.org` и остальной allowlist не трогаются;
|
|
вендорские шаблоны (`*_tianyiyun`, `*.conf_bak`, `raw_export.json`, …)
|
|
пропускаются целиком.
|
|
- Проверено: повторный разбор обезличенного Dell TSR / xFusion / Inspur
|
|
onekeylog / H3C `.sds` даёт идентичный инвентарь; повторный скан — чисто.
|
|
|
|
Точки входа: `POST /api/sanitize` + `GET /api/sanitize/download`. Детали —
|
|
`bible-local/docs/log-sanitization.md`.
|
|
|
|
## Детектор уже обезличенного файла
|
|
|
|
`privacy.Scan` сообщает `PrivacyScan.Sanitized {detected, markers, strong,
|
|
files, evidence}`. Распознаёт *форму* заглушки (слот значения, заполненный
|
|
одним повторяющимся символом и разделителями), а не буквальный `x`, поэтому
|
|
смена символа-заглушки в будущем не сломает детект. `detected` требует
|
|
подтверждения (`strong ≥ 2`, либо `strong ≥ 1 && markers ≥ 3`, либо
|
|
`markers ≥ 4`) — одно вхождение выдаётся в отчёте, но не считается за
|
|
«уже обезличено». UI прячет кнопку обезличивания и показывает пометку.
|
|
|
|
## Калибровка privacy-скана
|
|
|
|
Починены ложные срабатывания, найденные на корпусе RMA и nvidia-bug-report:
|
|
syslog-селекторы (`local7.info`), firmware-квады `MEVersion`, `*.conf_bak`
|
|
вендорские шаблоны, домены bundled-вьюеров (github.com, typoland.com,
|
|
schemas.dell.com и т.п.).
|
|
|
|
## Запуск на macOS
|
|
|
|
Снимите карантинный атрибут через терминал: `xattr -d com.apple.quarantine /path/to/logpile-darwin-arm64`
|
|
После этого бинарник запустится без предупреждения Gatekeeper.
|