В прошлом уроке мы обсудили способы, которые позволяют внедрять контроль целостности данных на этапе проектирования распределённых систем. Кроме этого, с точки зрения безопасности нужно учитывать ещё ряд требований. В этом уроке мы поговорим об угрозах для целостности данных, а также принципах и механизмах, которые позволяют от них защититься. В конце дадим чек-лист с лучшими практиками.
Угрозы целостности данных
Чтобы эффективно проектировать систему контроля целостности, нужно понимать, с какими угрозами вы можете столкнуться. Мы предлагаем сосредоточиться на двух возможных проблемах — атаках на целостность данных и инсайдерских угрозах.
Атаки на целостность
Это атаки типа «человек посередине» (Man-in-the-Middle), которые позволяют украсть или изменить передаваемые данные. В ходе таких атак злоумышленник получает нелегитимный доступ к каналу связи между двумя сторонами общения. В роли сторон могут выступать пользователи, приложения, сетевые устройства и так далее. Доступ к каналу связи позволяет злоумышленнику просматривать содержимое передаваемых сообщений, удалять и изменять их.
Как защищаться. Такие атаки, как правило, состоят из двух этапов: чтобы использовать данные в своих целях, их нужно сначала перехватить, а затем дешифровать. Чтобы противостоять таким угрозам, используют шифрование и контроль хеш-сумм.
Например, хакер может перехватить трафик, передаваемый между контейнерами и системой оркестрации. Если он не будет зашифрован, злоумышленник сможет не только просмотреть содержимое пакетов, но и внести в них изменения.
Инсайдерские угрозы
Это угрозы, которые исходят от инсайдеров — сотрудников компании, её партнёров или подрядчиков. У этих людей есть доступ к объектам IT-инфраструктуры организации и критическим данным.
Инсайдеры могут случайно или намеренно манипулировать данными. Здесь может сыграть роль человеческий фактор: человек ошибся и, например, изменил или повредил важный файл. Но действия могут быть и злонамеренными. Используя своё положение, инсайдер может продать конфиденциальные данные, а также вывести из строя системы защиты или критические компоненты инфраструктуры.
Как защищаться. Инсайдерам необходим доступ к системам и данным, чтобы выполнять свои рабочие обязанности. Поэтому средства безопасности не рассматривают их как угрозу. Уменьшить ущерб от деятельности инсайдера помогут:
политики нулевого доверия (Zero Trust),
механизмы управления доступом — IAM, RBAC,
регулярный аудит прав доступа,
аудит активности пользователей для обнаружения аномалий.
PropVisor постоянно анализирует возможные угрозы целостности данных. Одной из ключевых угроз является атака типа «человек посередине», при которой злоумышленники могут перехватить и изменить данные, передаваемые между сервисами. Для предотвращения таких угроз в компании используются методы шифрования и контроль хеш-сумм, которые помогают идентифицировать любые изменения данных во время их передачи.
Другой важной угрозой являются инсайдерские риски. Сотрудники, имеющие доступ к системам, могут случайно или намеренно изменить данные. PropVisor применяет строгие механизмы управления доступом и ведёт детальный аудит всех действий пользователей, чтобы быстро выявить подозрительные действия и предотвратить возможные нарушения целостности.
В следующих уроках мы подробно расскажем про механизмы ограничения доступа к данным. А сейчас расскажем про ещё одну важную концепцию для контроля целостности данных — принцип нулевой потери.
Принцип нулевой потери данных
✏️ Принцип нулевой потери данных предполагает, что данные ни при каких обстоятельствах не должны теряться или повреждаться.
В контексте требований ACID эту концепцию можно связать с устойчивостью (Durability).
Особенно важно придерживаться принципа нулевой потери данных в распределённых системах. Представьте, что вы работаете над системой обработки финансовых транзакций, которая распределена по множеству дата-центров. Важно гарантировать, что в случае сбоев данные о транзакциях не будут потеряны или повреждены. Например, если выйдет из строя один из дата-центров или будут временные проблемы с сетью.
Чтобы реализовать этот принцип, нужно спроектировать систему таким образом, чтобы все операции надёжно сохранялись даже в случае сбоя одного из узлов.
Реализовать принцип нулевой потери данных можно с помощью разных подходов. К ним относятся:
репликация данных,
Event Sourcing,
журнал транзакций.
С точки зрения архитектуры эти инструменты едва ли можно сравнивать между собой. Это понятия разного уровня: первые два связаны с проектированием, а последнее — с логированием и сбором метаданных. Однако с точки зрения безопасности различия между ними не так важны. Главное, чтобы у вас был надёжный источник об изменении данных, который позволяет отслеживать ошибки и атаки, а также возвращать данные в исходное состояние.
Остановимся на третьем подходе и разберём, как журналирование помогает контролировать целостность.
Метаданные и контроль целостности
Метаданные — это один из механизмов, который помогает реализовать принцип нулевой потери данных. С их помощью можно гарантировать, что даже при сбоях или ошибках мы сможем определить, что данные были изменены или потеряны, а при необходимости — восстановить их из резервных копий или пересчитать.
В контексте контроля целостности метаданные могут включать в себя:
Контрольные суммы (хеш-суммы, хеш). Они позволяют определить, были ли данные изменены. Контрольные суммы пересчитывают при каждом изменении данных. А при передаче данных их пересылают вместе с данными, чтобы на стороне получателя проверить, что данные не были повреждены.
Версионные метаданные. Это информация о версии данных. Например, метка времени последнего изменения. Система может отслеживать версионные метки, чтобы определить, какая версия данных актуальна в текущий момент.
Метаданные можно хранить вместе с основными данными или отдельно. В реляционных базах данных их можно хранить в отдельных столбцах таблиц. А в распределённых системах — в журналах транзакций.
Кейс компании PropVisor
Для компании, которая работает с большими объёмами геоданных и чувствительной информацией, очень важно соблюдать принцип нулевой потери данных.
PropVisor использует метаданные, чтобы отслеживать изменения данных о недвижимости. Например, каждая оценка недвижимости сопровождается контрольной суммой, которая гарантирует, что данные не были изменены с момента их последнего обновления. Это особенно важно при передаче данных между различными компонентами системы. Контрольные суммы позволяют проверить, что информация осталась целостной при передаче между узлами. А если обнаружено расхождение, система либо восстановит данные из резервной копии, либо инициирует повторную передачу данных.
Принцип нулевой потери данных тесно связан с мониторингом: без мониторинга и логирования реализовать его просто невозможно. Наблюдаемость системы — это залог её безопасности.
Мониторинг и уведомления в реальном времени
Контроль целостности — это задача не только хранения и обработки данных, но и постоянного мониторинга.
🔍 Мы уже рассказывали, как настроить мониторинг. Этому посвящена вторая тема четвёртого спринта. Поэтому здесь остановимся только на тех аспектах, которые связаны с информационной безопасностью.
Чтобы контролировать целостность данных, рекомендуем:
Настроить интеграцию с SIEM. Используйте системы управления информацией и событиями безопасности для анализа журналов и обнаружения аномалий. Они помогают выявлять потенциальные угрозы целостности — например, неожиданное изменение данных или отклонения в работе сервисов.
Настройте уведомления о нарушениях. Настройте систему автоматических оповещений, чтобы быстрее реагировать на попытки изменения критических данных, конфликты в репликации или сбои в коммуникации между сервисами.
Функции SIEM
Вы уже рассматривали плюсы и минусы SIEM. Напомним, что у этих систем много полезных функций:
Сбор и корреляция событий. SIEM собирает логи из разных систем и сопоставляет их для выявления угроз.
Обнаружение инцидентов. Анализирует данные в реальном времени для выявления подозрительных действий и нарушений.
Оповещения. Автоматически уведомляет администраторов о найденных инцидентах по почте, через SMS или мессенджеры.
Автоматическая реакция на атаку. Может блокировать учётные записи, изолировать заражённые устройства или запускать другие автоматизированные действия.
Аудит и отчётность. Ведёт логи для последующих проверок и предоставляет отчёты, чтобы проверить соответствия требованиям безопасности.
Архитектура SIEM
Чтобы интегрировать SIEM в распределённую систему, нужно учитывать пять ключевых элементов:
Источники данных. Это приложения, базы данных, серверы и сетевые устройства, которые генерируют логи и события. К событиям, например, могут относиться события безопасности, запросы данных, ошибки и аномалии. Каждый компонент системы отправляет логи и события в центральное хранилище.
Сбор и агрегация логов. Логи и события со всех компонентов собирают с помощью агентов или лог-коллекторов, таких как Filebeat, Fluentd или Logstash. Эти агенты передают логи в систему для дальнейшей обработки.
SIEM. Это центральный компонент системы, в котором происходит анализ всех собранных данных. SIEM анализирует логи в режиме реального времени, используя встроенные алгоритмы для обнаружения аномалий или подозрительных действий.
Панели мониторинга (Dashboards). Результаты анализа отображаются на интерактивных панелях. Они помогают администраторам и специалистам по безопасности наблюдать за состоянием системы и мгновенно реагировать на проблемы. Панели отображают критичные метрики, графики аномалий, успешные и неуспешные попытки доступа и другие данные в реальном времени.
Хранилище данных. Все логи и данные событий хранятся в долговременном хранилище для последующего анализа и проведения аудита. В зависимости от инфраструктуры хранение может происходить в облачных системах или на локальных серверах.
Кейс компании PropVisor
Чтобы обеспечить целостность данных в режиме реального времени, PropVisor внедрил систему мониторинга и уведомлений. Система собирает логи всех операций, связанных с обработкой и передачей данных о недвижимости. Для анализа журналов и выявления аномалий используется интеграция с SIEM-системой Splunk. Этот инструмент помогает обнаруживать потенциальные угрозы целостности данных — например, внезапные изменения кадастровых данных или ошибки при загрузке спутниковых снимков.
Кроме того, в PropVisor настроены автоматические уведомления, которые срабатывают при попытке несанкционированного изменения критически важных данных. Если система обнаруживает конфликт в репликации данных между серверами или сбои в коммуникации с внешними системами (например, геоинформационными службами), она тут же отправляет уведомление администраторам.
Теперь рассмотрим несколько отдельных вопросов, которые касаются целостности данных. Осталось поговорить о трёх аспектах:
как выбрать БД, чтобы обеспечить целостность данных,
как контролировать целостность, если вы используете облачные технологии,
как блокчейн помогает контролировать целостность.
Как популярные БД обеспечивают целостность данных
Важно понимать, что большинство популярных баз данных уже имеют встроенные механизмы для поддержания целостности. Например, транзакции, контрольные суммы и журналирование.
Чтобы выбрать базу данных под задачи проекта, нужно внимательно изучить её документацию. Конечно, на выбор будет влиять сразу несколько факторов: в том числе предпочтения команды и опыт работы с разными БД. Но мы рекомендуем также учитывать механизмы контроля целостности.
Базы данных предоставляют разный набор инструментов для поддержки корректности данных в различных сценариях — от строгих ACID-транзакций до асинхронной репликации в распределённых системах. В таблице мы сравнили основные варианты на рынке:
Таблица показывает, как сильно различаются подходы к контролю данных в разных БД. Но нужно понимать, что это общий ориентир, а не готовый инструмент для выбора. Чтобы принять решение, необходимо глубоко изучить документацию.
Кейс компании PropVisor
PropVisor использует разные БД для хранения данных о недвижимости и оценках.
Например, для обеспечения целостности данных система использует PostgreSQL, которая поддерживает транзакции с полным набором свойств ACID. Благодаря журналированию и механизмам верификации контрольных сумм PostgreSQL гарантирует, что данные об объектах недвижимости остаются согласованными и корректными. В ситуациях, когда требуется согласованность в конечном итоге (например, при репликации данных на несколько серверов), используется Cassandra. Эта БД поддерживает асинхронную репликацию и автоматически решает конфликты, если данные обновляются на разных узлах одновременно.
Контроль целостности при использовании облачных сервисов
Многие современные приложения используют облачные сервисы для хранения и обработки данных. В таких условиях контроль целостности данных становится ещё более критичным, поскольку сервисы могут находиться в разных географических зонах, а операции могут происходить асинхронно.
В облачных решениях есть два важных инструмента для контроля целостности:
Подпись данных. При использовании облачных хранилищ добавляйте цифровые подписи к передаваемым данным. Это позволяет проверять подлинность и целостность данных после их загрузки.
Шифрование данных. Храните данные в облаке в зашифрованном виде, чтобы предотвратить несанкционированный доступ и изменение данных. Некоторые облачные провайдеры, такие как AWS и Google Cloud, предлагают встроенные механизмы шифрования и управления ключами.
Кейс компании PropVisor
Компания PropVisor активно использует облачные хранилища для хранения больших объёмов данных о недвижимости. Например, там хранят спутниковые снимки и кадастровые записи. Чтобы обеспечить контроль целостности данных в облачной среде, данные подписывают цифровыми подписями при загрузке в облако. Это позволяет проверять их подлинность и целостность после каждого доступа или изменения.
Кроме того, для предотвращения несанкционированного доступа к данным PropVisor использует шифрование на всех уровнях. Облачный сервис, который использует компания, предоставляет встроенные механизмы шифрования и управления ключами. Это позволяет компании защищать данные в режиме реального времени.
Управление целостностью с использованием блокчейн-технологий
Для систем с высокими требованиями к целостности и прозрачности данных может быть полезен подход на основе блокчейна. Например, к таким системам относятся сервисы финтеха и здравоохранения. В использовании блокчейна есть два плюса:
Непрерывный лог изменений. Блокчейн позволяет хранить неизменяемую последовательность транзакций. Каждый блок содержит хеш предыдущего блока, что обеспечивает целостность всей цепочки данных.
Децентрализация. Использование блокчейна исключает необходимость в центральном координаторе и тем самым повышает устойчивость системы к сбоям и атакам.
Кейс компании PropVisor
Для некоторых критически важных процессов, таких как регистрация изменений кадастровых записей или оценок стоимости недвижимости, PropVisor рассматривает возможность внедрения блокчейн-технологий. Блокчейн позволяет создать непрерывный лог изменений данных, где каждая транзакция будет зафиксирована в неизменяемой цепочке. Это обеспечит высокую степень прозрачности и уверенность в том, что никакие данные не были изменены без ведома системы.
Кроме того, децентрализация, присущая блокчейн-технологиям, исключает зависимость от центрального координатора и повышает устойчивость системы к сбоям и атакам, что может быть особенно полезно в контексте работы с государственными базами данных и крупными банками.
Теперь вы знаете основные механизмы для обеспечения целостности данных. Напомним самое главное в виде чек-листа.
Чек-лист: лучшие практики для обеспечения целостности
Чтобы обеспечить целостность данных, используйте лучшие практики. К ним относятся:
Контроль версий данных. Используйте версии данных или контрольные суммы, чтобы обнаружить несогласованность данных между различными компонентами системы. Это также поможет определить, какие версии данных являются последними и корректными.
Регулярные аудиты целостности. Проводите периодические аудиты целостности данных, проверяя соответствие текущих данных ожидаемым. Используйте механизмы автоматизированного мониторинга, которые отслеживают состояние данных и отправляют алерты в случае обнаружения нарушений.
End-to-end шифрование. Защищайте данные как при передаче, так и при хранении с использованием современных стандартов шифрования. Это предотвратит несанкционированный доступ и подделку данных во время их перемещения между сервисами.
Логирование и мониторинг. Записывайте все события, связанные с изменением критичных данных, в систему логирования. Это позволит быстро выявить и проанализировать возможные нарушения целостности и при необходимости восстановить исходное состояние.
Тестирование на отказоустойчивость. Регулярно проводите тестирование отказоустойчивости систем (например, с помощью Chaos Engineering), чтобы проверить, как система справляется с различными видами сбоев и сохраняет целостность данных.
Проверка на идемпотентность. Оцените, насколько ваши операции в распределённой системе соответствуют принципу идемпотентности. При обнаружении неидемпотентных операций разрабатывайте механизмы контроля, чтобы исключить их негативное влияние на целостность данных.
Это набор лучших практик, которые помогают минимизировать риски и повысить целостность данных в зависимости от специфики системы. Не все из них могут быть применимы или необходимы в каждом конкретном случае.
К обязательным пунктам относятся только четыре. На старте проекта точно критично заложить версионирование данных и идемпотентность. А в готовой системе должны быть логирование и мониторинг, а также аудиты целостности.
Шифрование можно использовать только при передаче конфиденциальной информации. А тестирование на отказоустойчивость — это совсем опциональный вариант. Если такой возможности нет, это не страшно.
На этом урок подходит к концу. Впереди — несколько заданий и подведение итогов.
Итоги
Если не рассматривать ошибки внутри системы, то целостности данных могут угрожать внешние атаки на целостность данных и инсайдерские угрозы:
К атакам на целостность относятся атаки типа «человек посередине» (Man-in-the-Middle). Они позволяют украсть или изменить передаваемые данные. Чтобы защититься от них, используйте шифрование и контроль хеш-сумм.
Инсайдерские угрозы — это угрозы, которые исходят от сотрудников компании, её партнёров или подрядчиков, у которых есть доступ к IT-инфраструктуре компании и конфиденциальным данным. Чтобы минимизировать риски, используйте политики нулевого доверия (Zero Trust), механизмы управления доступом (IAM, RBAC), а также регулярно проводите аудит прав доступа и аудит активности пользователей для обнаружения аномалий.
Принцип нулевой потери данных — это важная концепция для распределённых систем, которую можно связать с устойчивостью (Durability) в терминах ACID. Этот принцип предполагает, что данные ни при каких обстоятельствах не должны теряться или повреждаться. Реализовать его можно с помощью репликации данных, Event Sourcing и журнала транзакций.
К лучшим практикам для обеспечения целостности данных относятся контроль версий данных, регулярные аудиты целостности, End-to-end шифрование, логирование и мониторинг, тестирование на отказоустойчивость, проверка на идемпотентность. Из этого списка только четыре меры обязательны и крайне желательны для любого проекта.
Также важно серьёзно подходить к выбору БД и настраивать механизмы защиты данных в облачной среде. Чтобы выбрать БД, внимательно изучайте документацию и анализируйте механизмы защиты целостности, которые предлагает решение. Защитить данные в облаке помогут подпись данных и шифрование.
В следующем уроке разберём, какие есть средства защиты доступа к данным и когда их нужно использовать.