[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-setevaya-bezopasnost-chto-i-kak-logirovat-s-tochki-zreniya-bezopasnosti":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},1204,"chto-i-kak-logirovat-s-tochki-zreniya-bezopasnosti",24,"setevaya-bezopasnost","Сетевая безопасность","🔒","Что и как логировать с точки зрения безопасности?","Security-логирование — фиксация событий безопасности (аутентификация, авторизация, критичные операции) в структурированном формате для обнаружения инцидентов, аудита и соответствия требованиям регуляторов.\n\n### Что НЕОБХОДИМО логировать\n\n1. События аутентификации:\n\n```java\nlog.info(\"Успешная аутентификация: user={}, ip={}, userAgent={}\",\n    username, request.getRemoteAddr(), request.getHeader(\"User-Agent\"));\n\nlog.warn(\"Неудачная попытка аутентификации: user={}, ip={}, причина={}\",\n    username, request.getRemoteAddr(), failureReason);\n```\n\n2. Действия авторизации:\n\n```java\nlog.info(\"Доступ разрешён: user={}, action={}, resource={}\",\n    username, \"VIEW_ACCOUNT\", accountId);\n\nlog.warn(\"Доступ запрещён: user={}, action={}, resource={}, причина={}\",\n    username, \"TRANSFER\", accountId, \"insufficient_role\");\n```\n\n3. Критичные бизнес-операции:\n\n```java\nlog.info(\"Создание перевода: user={}, from={}, to={}, amount={}, traceId={}\",\n    username, fromAccount, toAccount, amount, traceId);\n```\n\n4. Системные события безопасности:\n\n```java\nlog.warn(\"Подозрительная активность: user={}, ip={}, причина=множественные запросы\",\n    username, ip);\n```\n\n### Что НЕЛЬЗЯ логировать\n\n```java\n\u002F\u002F ЗАПРЕЩЕНО: пароли\nlog.info(\"Логин: user={}, password={}\", user, password);\n\n\u002F\u002F ЗАПРЕЩЕНО: полные номера карт\nlog.info(\"Оплата картой: {}\", cardNumber);\n\n\u002F\u002F ЗАПРЕЩЕНО: токены доступа, CVV\u002FCVC, PIN-коды, приватные ключи\n```\n\n### Маскирование данных в логах\n\n```java\npublic class MaskingUtil {\n    public static String maskCardNumber(String pan) {\n        if (pan == null || pan.length() \u003C 10) return \"****\";\n        return pan.substring(0, 6) + \"****\" + pan.substring(pan.length() - 4);\n        \u002F\u002F 411111****1111\n    }\n\n    public static String maskEmail(String email) {\n        return email.replaceAll(\"(^[^@]{2})[^@]*(@.*)\", \"$1****$2\");\n        \u002F\u002F iv****@mail.ru\n    }\n}\n\nlog.info(\"Оплата картой: {}\", MaskingUtil.maskCardNumber(cardNumber));\n```\n\n### Logback: автоматическое маскирование\n\n```xml\n\u003C!-- logback-spring.xml -->\n\u003Cconfiguration>\n    \u003CconversionRule conversionWord=\"mask\"\n        converterClass=\"com.mybank.logging.MaskingConverter\" \u002F>\n\n    \u003Cappender name=\"FILE\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\">\n        \u003Cencoder>\n            \u003Cpattern>%d{ISO8601} [%thread] %-5level %logger - %mask(%msg)%n\u003C\u002Fpattern>\n        \u003C\u002Fencoder>\n    \u003C\u002Fappender>\n\u003C\u002Fconfiguration>\n```\n\n### Структурированное логирование (JSON)\n\n\u003Cdetails>\u003Csummary>Пример использования MDC\u003C\u002Fsummary>\n\n```java\n\u002F\u002F Использование MDC для контекста\nMDC.put(\"userId\", username);\nMDC.put(\"traceId\", traceId);\nMDC.put(\"ip\", request.getRemoteAddr());\n\nlog.info(\"Перевод выполнен: transferId={}, amount={}\", transferId, amount);\n\n\u002F\u002F В JSON-формате:\n\u002F\u002F {\n\u002F\u002F   \"timestamp\": \"2024-01-15T10:30:00Z\",\n\u002F\u002F   \"level\": \"INFO\",\n\u002F\u002F   \"userId\": \"ivanov\",\n\u002F\u002F   \"traceId\": \"abc-123\",\n\u002F\u002F   \"ip\": \"10.0.1.50\",\n\u002F\u002F   \"message\": \"Перевод выполнен: transferId=T-001, amount=50000\"\n\u002F\u002F }\n```\n\n\u003C\u002Fdetails>\n\n### Хранение и защита логов\n\n1. Centralized logging — отправлять логи в централизованную систему (ELK, Splunk, Graylog)\n2. Неизменяемость — логи должны быть защищены от модификации (append-only)\n3. Ретенция — хранить логи аудита не менее 1-3 лет (требование регуляторов)\n4. Контроль доступа — доступ к логам ограничен\n5. Шифрование — при хранении и при передаче\n\n> **На собеседовании:** интервьюер ожидает два списка: что логировать (аутентификация, авторизация, бизнес-операции) и что категорически нельзя (пароли, карты, токены). Частая ошибка — не упомянуть маскирование данных и структурированные логи для SIEM.","","middle",[15],"network-security",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Что и как логировать с точки зрения безопасности? — Gymterview","Security-логирование — фиксация событий безопасности (аутентификация, авторизация, критичные операции) в структурированном формате для обнаружения инцидентов, а","Security-логирование — фиксация событий безопасности (аутентификация, авторизация, критичные операции) в структурированн",[15,13],"Security-логирование — фиксация событий безопасности (аутентификация, авторизация, критичные операции) в структурированном формате для обнаружения инцидентов, аудита и соответствия требованиям регуляторов.",true]