Skip to content
Exlogare
← Ко всем постам
Команда Exlogare CI/CD logs redaction security

Redacted logs: что вырезать из CI-логов и что нельзя резать вслепую

Токены и приватные ключи нужно скрывать, но job id, версии, имена сервисов и exit code часто нужны для RCA. Разбираем баланс безопасности и диагностируемости.

Redaction легко понять неправильно. Кажется, что чем больше вырезали, тем безопаснее. Формально да. Но если после очистки в логе осталось только ERROR [REDACTED] failed at [REDACTED], инженер уже не сможет понять, что произошло.

Хороший redacted log сохраняет диагностический контекст и убирает только то, что может навредить: секреты, приватные ключи, персональные данные и внутренние токены.

Коротко: redaction vs anonymization

Redaction — точечное скрытие опасных фрагментов: токен заменили на [REDACTED_TOKEN], URL с паролем — на безопасный URL без credentials. Anonymization — более широкое обезличивание данных. Для CI чаще нужен redaction: нам важно сохранить структуру ошибки.

Что нужно вырезать всегда

  • JWT и bearer tokens.
  • AWS/GCP/Azure keys.
  • SSH/private keys.
  • Basic-auth credentials в URL.
  • kubeconfig и service account tokens.
  • .npmrc, .pypirc, Docker auth.
  • Email/телефоны клиентов в тестовых дампах.

Если сомневаетесь, вырезайте. Секрет, попавший в внешний сервис или артефакт, уже нельзя «забыть» так же легко, как строку локального лога.

Что нельзя резать вслепую

Для RCA часто критичны:

  • имя job/stage;
  • номер pipeline/build/job;
  • exit code;
  • версия Docker image/runtime;
  • package name;
  • test file и test case;
  • service name;
  • URL без credentials;
  • последние 20–50 строк stack trace.

Например, connect ECONNREFUSED db:5432 сообщает полезный сервис и порт. Если заменить всё на connect [REDACTED], RCA потеряет смысл.

Хорошие маркеры лучше пустоты

Плохо:

Error: request failed with token abc123...

Хорошо:

Error: request failed with token [REDACTED_TOKEN]

Ещё лучше:

Error: registry auth failed for registry.internal.example.com with token [REDACTED_NPM_TOKEN]

Так лог остаётся безопасным, но сохраняет контекст: проблема с registry auth, а не с тестом или кодом.

Где тут Exlogare

Exlogare выигрывает от качественного redaction: модель видит достаточно контекста, чтобы сказать «упала авторизация в npm registry после смены токена», но не видит сам токен. Поэтому перед подключением внешнего анализа стоит договориться, какие поля сохраняются, а какие всегда маскируются.

Для настройки формата отправки смотрите ingest API и generic-подключение через ingest-generic. Общие принципы обработки данных — в Security.

Читайте также

Чеклист

  • Токены заменяются на типизированные маркеры.
  • URL сохраняется без credentials.
  • Job/stage/build id остаются в логе.
  • Exit code и последние строки stack trace не удаляются.
  • PII из тестовых данных маскируется.
  • Redaction тестируется на реальных падениях, а не только на синтетике.