---
sidebar_label: "Контрольный список для продакшена"
title: "Контрольный список - CyberGo DD | Запуск безопасности"
description: "Полный контрольный список безопасности перед развёртыванием библиотеки логирования CyberGo DD в производственной среде, охватывающий проверку базовых элементов конфигурации, включение и тестирование правил фильтрации конфиденциальных данных, подтверждение переключателей аудитных логов, настройку стратегий ротации файлов, конфигурацию HMAC-подписей целостности и базовое тестирование производительности и другие ключевые пункты проверки, обеспечивая безопасный, надёжный и соответствующий требованиям запуск системы логирования."
sidebar_position: 6
---

# Контрольный список для продакшена

Перед развёртыванием проверьте каждый из следующих элементов безопасности, чтобы гарантировать безопасность и надёжность системы логирования.

## Базовая конфигурация

- [ ] **Уровень логирования** -- Установите `LevelInfo` или выше для производственной среды
- [ ] **Формат вывода** -- Используйте `FormatJSON` для удобного сбора и анализа логов
- [ ] **Ротация файлов** -- Настройте разумные ограничения размера и политику хранения
- [ ] **Сброс буфера** -- Убедитесь, что `Flush()` или `Close()` вызывается перед выходом из программы

```go
logger, _ := dd.New(dd.Config{
    Level:  dd.LevelInfo,
    Format: dd.FormatJSON,
})
defer logger.Close()
```

## Фильтрация безопасности

- [ ] **Включить фильтрацию конфиденциальных данных** -- Используйте `DefaultSecurityConfig()` или выше
- [ ] **Пользовательские шаблоны** -- Добавьте специфичные для бизнеса шаблоны чувствительных полей
- [ ] **Мониторинг статистики фильтрации** -- Регулярно проверяйте статистику фильтрации, выявляйте аномалии

```go
logger.SetSecurityConfig(dd.DefaultSecurityConfig())
```

## Безопасность файлов

- [ ] **Права доступа к логам** -- права файла `0600`, права каталога `0700` (значения библиотеки по умолчанию; для входа в каталог нужен бит исполнения)
- [ ] **Валидация путей** -- Убедитесь, что путь логов не может контролироваться пользовательским вводом
- [ ] **Символические ссылки** -- Запретите символические ссылки в производственной среде
- [ ] **Дисковое пространство** -- Настройте стратегию ротации для предотвращения переполнения диска

## Аудит и целостность

- [ ] **Аудитные логи** -- Включите аудитные логи для записи событий безопасности
- [ ] **Подписи целостности** -- Включите HMAC-подписи для гарантии неподдельности логов
- [ ] **Отдельное хранение аудитных логов** -- Аудитные логи должны храниться отдельно от бизнес-логов

```go
audit, _ := dd.NewAuditLogger(dd.DefaultAuditConfig())
defer audit.Close()

cfg, _ := dd.DefaultIntegrityConfigSafe()
signer, _ := dd.NewIntegritySigner(cfg)
```

## Производительность

- [ ] **Стратегия сэмплирования** -- Рассмотрите возможность включения сэмплирования логов для сценариев с высокой пропускной способностью
- [ ] **Буферизованная запись** -- Используйте `BufferedWriter` для уменьшения количества операций I/O
- [ ] **Учитывайте синхронную запись** -- путь записи по умолчанию синхронный; в высоконагруженных сценариях используйте `BufferedWriter` для уменьшения системных вызовов
- [ ] **Мониторинг памяти** -- Отслеживайте использование памяти, связанное с логированием

## Жизненный цикл

- [ ] **Изящное завершение** -- Используйте `Shutdown(ctx)` вместо `Close()` (примечание: `Shutdown` внутренне не дожидается завершения фильтрующих goroutine, тогда как `Close` вызывает `WaitForFilterGoroutines`; перед переключением явно вызовите `logger.WaitForFilterGoroutines(...)`, чтобы избежать гонки при доступе закрываемого writer'а из фильтрующей goroutine)
- [ ] **Настройка таймаута** -- Установите разумный таймаут завершения (рекомендуется 5-10 секунд)
- [ ] **Глобальный логгер** -- Заменяйте через `SetDefault()`, а не создавайте повторно

```go
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
logger.Shutdown(ctx)
```

## Проверка соответствия

- [ ] **HIPAA** -- Медицинская отрасль использует `HealthcareConfig()`
- [ ] **PCI-DSS** -- Финансовая отрасль использует `FinancialConfig()`
- [ ] **GDPR** -- Убедитесь, что не записывается личная идентификационная информация (PII)
- [ ] **Хранение данных** -- Настройте срок хранения логов в соответствии с нормативными требованиями

## Мониторинг и оповещения

- [ ] **Ошибки записи** -- Настройте `SetWriteErrorHandler` для мониторинга ошибок записи
- [ ] **Фильтрующие горутины** -- Мониторинг количества `ActiveFilterGoroutines()`
- [ ] **Статистика аудита** -- Регулярно проверяйте статистику аудитных событий
- [ ] **Оповещения по кодам ошибок** -- Настройте оповещения по кодам безопасности `PATH_TRAVERSAL`, `REDOS_PATTERN` и др.

```go
logger.SetWriteErrorHandler(func(w io.Writer, err error) {
    metrics.WriteErrors.Inc()
    alert("Ошибка записи лога: " + err.Error())
})
```

## Следующие шаги

- [Обзор безопасности](./) -- обзор функций безопасности
- [API фильтрации безопасности](../../api-reference/security-audit/security) -- справочник конфигурации
- [Оптимизация производительности](../../advanced/performance) -- настройка производительности
