Обзор безопасности
Библиотека логирования DD имеет встроенные многоуровневые механизмы безопасности, всесторонне обеспечивающие безопасность логов от фильтрации данных до аудит-тассировки.
Уровни безопасности
| Уровень | Механизм | Описание |
|---|---|---|
| Данные | Фильтрация конфиденциальных данных | Автоматическое маскирование паролей, ключей и т.д. |
| Пути | Верификация безопасности путей | Предотвращение обхода пути, атак через символические ссылки |
| Шаблоны | Защита от ReDoS | Обнаружение опасных regex-шаблонов |
| Аудит | Аудитные логи | Запись всех событий безопасности |
| Целостность | HMAC-подписи | Гарантия неподдельности логов |
Фильтрация конфиденциальных данных
DD имеет встроенное автоматическое обнаружение и маскирование конфиденциальных данных:
go
logger, _ := dd.New(dd.Config{
Security: dd.DefaultSecurityConfig(),
})
// Поле password автоматически маскируется
logger.InfoWith("Вход",
dd.String("username", "admin"),
dd.String("password", "s3cr3t"), // Вывод: [REDACTED]
)Поддержка пользовательских шаблонов:
go
filter, _ := dd.NewCustomSensitiveDataFilter(
`(?i)password\s*[:=]\s*\S+`,
`(?i)api[_-]?key\s*[:=]\s*\S+`,
`\b\d{16,19}\b`, // Номер кредитной карты
)Подробнее в API фильтрации безопасности.
Безопасность путей
FileWriter имеет встроенную многоуровневую верификацию безопасности путей:
| Защита | Описание |
|---|---|
| Обход пути | Отклоняет ../ и другие варианты обхода пути |
| Null-байты | Отклоняет инъекцию null-байтов |
| Сверхдлинная кодировка | Обнаруживает UTF-8 сверхдлинную кодировку |
| Символические ссылки | Настраиваемый запрет символических ссылок |
| Жёсткие ссылки | Настраиваемый запрет жёстких ссылок |
| Длина пути | Ограничение максимальной длины пути |
go
// Атака обхода пути автоматически отклоняется
fw, err := dd.NewFileWriter("../../../etc/passwd", dd.DefaultFileWriterConfig())
// err: PATH_TRAVERSALКонфигурация соответствия
DD предоставляет отраслевые предустановки соответствия:
| Предустановка | Стандарт соответствия | Отрасль |
|---|---|---|
HealthcareConfig() | HIPAA | Медицина |
FinancialConfig() | PCI-DSS | Финансы |
GovernmentConfig() | Правительственный стандарт | Государственный сектор |
go
// Соответствие HIPAA
logger, _ := dd.New(dd.Config{
Security: dd.HealthcareConfig(),
})Аудитные логи
Все события безопасности можно отслеживать через аудитные логи:
go
audit, _ := dd.NewAuditLogger(dd.DefaultAuditConfig())
defer audit.Close()
audit.LogSecurityViolation("sql_injection", "SQL-инъекция", map[string]any{
"input": "' OR 1=1 --",
})Подробнее в API аудитных логов.
Целостность логов
Через HMAC-подписи гарантируется неподдельность логов:
go
cfg, _ := dd.DefaultIntegrityConfigSafe()
signer, _ := dd.NewIntegritySigner(cfg)
signature := signer.Sign(logMessage)
// При проверке: signer.Verify(signedEntry)Подробнее в API подписей целостности.
Следующие шаги
- Контрольный список для продакшена -- проверка безопасности перед развёртыванием
- API фильтрации безопасности -- подробное описание SensitiveDataFilter
- API аудитных логов -- подробное описание AuditLogger