Автор статьи: Артем Михайлов

Безопасность баз данных — это как щит, защищающий сокровища, которые хранятся внутри. Изначально базы данных были направлены на сбор и хранение данных. Это стало крайне удобным инструментом, позволяющим легко и быстро получать и обрабатывать информацию. Однако, с появлением многих проблем, связанных с безопасностью БД, мы должны обеспечить надежную защиту нашей информации.

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

Кроме того, безопасность баз данных помогает защитить нашу информацию от неожиданных сбоев системы, к которым может привести хранение большого объема данных. В случае, если база данных не обеспечена должным уровнем защиты, все эти данные могут быть утеряны.

Основные угрозы, с которыми сталкиваются базы данных, включают в себя:

SQL-инъекции — это тип атак, при котором злоумышленник использует ошибки в веб-сайте или приложении, чтобы получить доступ к базе данных. Как правило, это происходит путем внедрения вредоносного кода на языке SQL в формы, полей ввода или через иные сервисы. Злоумышленник может вводить команды SQL, вместо того, что вводить стандартные параметры. Это позволяет ему получить доступ к важной информации или изменять содержимое базы данных. Пример: злоумышленник может добавить команду DELETE, чтобы удалить данные из базы.

Отличная иллюстрация для базового понимания того, как работают SQL-инъекции
Отличная иллюстрация для базового понимания того, как работают SQL-инъекции

Взлом паролей — это атака, при которой злоумышленник пытается угадать пароль или использовать слабые пароли для получения доступ к базе данных. Взлом паролей может быть автоматизирован, используя программы для перебора паролей(брутфорс), что позволяет злоумышленнику быстро найти правильный пароль и получить доступ к ценной информации.

Несанкционированный доступ к данным — это когда злоумышленник получает доступ к базе данных без разрешения владельца или администратора базы данных. Это может происходить путем использования слабых паролей или уязвимостей в системе безопасности. В результате злоумышленник может получить доступ к конфиденциальной информации и использовать ее в своих корыстных целях.

В истории есть масса проблем, связанных с безопасностью баз данных. Одной из самой известной является атака на базу данных Equifax в 2017 году, когда злоумышленники украли личную информацию более чем 143 миллионов человек. Эта атака произошла из-за невообразимо слабых паролей и уязвимостей в самой системе безопасности.

Методы аутентификации в базах данных

Хэширование паролей — это один из популярных методов аутентификации. Вместо того, чтобы хранить пароль в базе данных в открытом виде, пароль хэшируется с использованием специального алгоритма хэширования и хранится в виде хеш-значения. Хэш — это сложный алгоритм, который используется для создания уникального и кодированного значения для каждого пароля.

Как работает хэширование наглядно
Как работает хэширование наглядно

Лучший способ убедиться, что пароль был правильно введен в систему, заключается в том, чтобы сравнить хэш-значение, которое было создано при вводе пароля, с хеш-значением, которое было сохранено в базе данных. Если эти два значения совпадают, пользователь получает доступ к базе данных. Если нет, то доступ к базе данных недоступен.

Однако, не все алгоритмы хэширования безопасны.

Использование SSL/TLS-шифрования. Во время передачи данных через сеть, данные могут быть перехвачены злоумышленниками, которые могут получить доступ к ним, но при использовании SSL/TLS-шифрования данных это становится практически невозможным. SSL/TLS-шифрование использует специальные сертификаты и протоколы для шифрования данных и защиты их от несанкционированного доступа.

Давайте рассмотрим, как работает SSL/TLS-шифрование на примере простого запроса на web-сайт, например, чтобы получить страницу в Интернете.

1. Когда вы вводите URL-адрес сайта в адресную строку браузера, браузер устанавливает соединение с сервером, на котором размещен сайт.

2. Когда сервер получает запрос на соединение от браузера, он отправляет свой цифровой сертификат на клиентскую сторону. Этот сертификат содержит публичный ключ, который браузер использует для установления безопасного соединения.

3. Браузер проверяет цифровой сертификат, чтобы убедиться, что сайт, к которому он собирается подключаться, является действительным и не является поддельным. Это происходит путем проверки цепочки сертификатов — открытых ключей, сертификатов корневого центра сертификации и других промежуточных сертификатов.

4. Если сертификат является действительным, браузер создает сессионный ключ шифрования, который используется для шифрования данных, передаваемых между клиентом и сервером.

5. Когда клиент и сервер общаются между собой, все данные, передаваемые между ними, шифруются с использованием этого сессионного ключа. Это означает, что даже если кто-нибудь перехватит эти данные, он не сможет их прочитать или использовать.

6. В конце сессии браузер и сервер обмениваются сообщениями, чтобы закрыть безопасное соединение. Сессионный ключ шифрования уничтожается и больше не может быть использован.

SSL/TLS-шифрование обеспечивает безопасность данных, передаваемых через Интернет, и защищает от кибератак и хакеров. Это важный метод защиты данных, используемый в большинстве web-сервисов и приложений. Разработчики и администраторы баз данных должны убедиться, что SSL/TLS-шифрование используется для всех передач данных между клиентом и сервером для обеспечения максимальной безопасности и защиты данных

Использование OAuth и OpenID для авторизации через любой OAuth-провайдер — например, Facebook, Twitter, Google или VK – это одна из самых распространенных форм аутентификации. Она позволяет третьим сторонам получать доступ к ресурсам без необходимости передавать пароль пользователя. При использовании этой формы аутентификации пользователи могут предоставлять доступ к своим аккаунтам, не раскрывая логин и пароль. Вместо этого, сервис использует токен доступа для аутентификации пользователя.

Например, вы можете войти на сайт с помощью своей учетной записи в ВК или Google, не вводя свой пароль и логин на новом сайте. Это возможно благодаря протоколам OAuth и OpenID, которые позволяют сервисам запрашивать разрешение для доступа к вашей учетной записи на других сайтах, не раскрывая ваш пароль или логин.

OAuth — это протокол аутентификации, который разрешает пользователям предоставлять доступ к своим аккаунтам на других сайтах для управления их авторизацией и доступом. Примером могут служить приложения социальных сетей, которые могут обрабатывать данные пользователей, запрашивать их профиль, обновлять статусы и т.д. без необходимости предоставления своего логина и пароля на каждой из этих платформ.

OpenID — это схожий протокол аутентификации, но с более широким спектром приложений. Он позволяет пользователям использовать одну учетную запись для доступа к нескольким сайтам. Таким образом, пользователь может использовать свой идентификатор OpenID для доступа к сервисам, не предоставляя им свой пароль и логин.  

Преимущества использования протоколов OAuth и OpenID для аутентификации очевидны. Эти методы защищают данные пользователя и обеспечивают простоту использования, так как пользователи могут использовать уже имеющиеся данные пользователя для доступа на новых сайтах. Кроме того, они избавляются от необходимости запоминать множество логинов и паролей для каждого сервиса. 

Методы авторизации в базах данных 

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

Права доступа на уровне базы данных

Этот метод авторизации управляет доступом к базе данных через систему прав доступа на уровне базы данных. Программист или администратор базы данных могут управлять уровнями доступа к базе данных, чтобы пользователи могли получить доступ только к определенным частям базы данных.

Рассмотрим компанию, которая работает с данными своих клиентов. В базе данных хранятся такие данные как имя, адрес, номер телефона и т.д. Используя права доступа на уровне базы данных, компания может разрешить доступ нескольким пользователям, обеспечив их доступ к определенной части базы данных. Например, сотрудникам отдела аналитики могут быть предоставлены доступ только к данным о покупках каждого клиента, тогда как сотрудники отдела продаж могут получить доступ к данным контактных лиц клиентов.

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

Разделение прав доступа на уровне приложения

Вторым методом авторизации является разделение прав доступа на уровне приложения, где права доступа управляются из приложения, а не непосредственно из базы данных. Этот метод иногда называют методом ролевого доступа, т.к. пользователи должны быть присвоены определенную роль, чтобы получить доступ к приложению и его функциональности.

Приложение новостной газеты может использовать разделение прав доступа на уровне приложения для управления доступом пользователей к определенным частям сайта. Например, администратор может получить дополнительные возможности редактирования или удаления товаров, а читатель может оставить комментарий.

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

Методы аудита в базах данных 

Это важная часть системы информационной безопасности, которая позволяет оценить уровень конфиденциальности и защищенности данных, хранимых в базе данных.

Логирование всех действий в базе данных

Логирование действий — это процесс записи всех событий, связанных с базой данных, в системный журнал (лог). Он может включать в себя сведения о выполняемых запросах к базе данных, изменениях данных, времени сеанса пользователя и другие события.

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

Логирование всех действий помогает выявлять уязвимости в системе безопасности базы данных и предотвращать потенциальные угрозы безопасности.

Мониторинг пользовательской активности

Второй метод аудита в базах данных — это мониторинг пользовательской активности. Это процесс наблюдения за действиями пользователей в системе в режиме реального времени, чтобы обнаружить любые несанкционированные действия или необычный пользовательский трафик.

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

Мониторинг пользовательской активности помогает идентифицировать подозрительную активность и уведомлять администраторов базы данных о потенциальных угрозах безопасности.

Фильтрация логов и анализ результатов

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

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

Анализ результатов фильтрации логов помогает определить, какие изменения требуют практических решений, комплаенса или технических мер безопасности.

Примеры успешной реализации методов безопасности 

Рассмотрим несколько примеров, которые могут послужить наглядным доказательством эффективности методов безопасности в базах данных.

1) Управление правами доступа в Oracle Database. Oracle Database — одна из наиболее широко используемых баз данных в мире и предоставляет множество функций безопасности, включая управление правами доступа. Система позволяет администраторам баз данных контролировать доступ к данным, назначая определенные роли и права для пользователей и групп пользователей. На практике, это означает, что пользователи смогут получать доступ только к тем данным, которые необходимы для выполнения их задач.

2) SSL шифрование в MongoDB. MongoDB — документо-ориентированная база данных, используемая многими крупными компаниями во всем мире. Один из методов безопасности, используемых в MongoDB, — это SSL шифрование. SSL шифрование защищает данные, передаваемые между клиентом и сервером приложения, путем шифрования данных перед отправкой через сеть. Это помогает предотвратить перехват данных злоумышленниками.

3) Google Cloud SQL. Google Cloud SQL это управляемый сервис, предоставляющий облачную базу данных MySQL. Преимуществом Google Cloud SQL является то, что Google автоматически внедряет множество методов безопасности в этот сервис, таких как шифрование данных в покое и в движении, контроль доступа и функции мониторинга и управления доступом.

4) Методы авторизации в Microsoft SQL Server. Microsoft SQL Server — довольно распространенная реляционная база данных с широким диапазоном функций безопасности. В SQL Server администраторы могут реализовать политики аутентификации, позволяющие управлять доступом к базе данных. Одним из методов авторизации в SQL Server является Windows Authentication, который позволяет администраторам контролировать доступ к базе данных при помощи учетных записей Windows.

Итак, резюмируя основные рекомендации для безопасности БД необходимо:

1. Структурирование прав доступа на уровне базы данных и приложения.

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

2. Регулярное обновление паролей и ключей шифрования.

Следующая рекомендация заключается в регулярном обновлении паролей и ключей шифрования. Чем чаще меняется пароль или ключ, тем сложнее их перехватить и использовать для несанкционированного доступа к базе данных. Этот метод помогает сохранить безопасность данных.

3. Мониторинг активности пользователей и анализ логов.

Мониторинг активности пользователей и анализ логов является третьей рекомендацией для обеспечения безопасности в базах данных. Такой мониторинг позволяет выявлять необычную активность, события риска и другие проблемы, связанные с безопасностью данных.

Эти методы помогут защитить данные от несанкционированного доступа, взлома и утечки. Чтобы обеспечить безопасность в базах данных, рекомендуется использовать все указанные методы в сочетании между собой, тем самым усиливая и повышая уровень безопасности данных.


Проектирование баз данных — это сложный творческий навык, которым должны владеть разработчики из самых разных сфер. Узнайте теоретические основы и практические приёмы этого процесса на мастер-классе, который пройдёт уже сегодня вечером на открытом занятии в OTUS. Что вас ждет на этом уроке:

  • Посмотрим, для чего на самом деле нужны нормальные формы.

  • Обсудим полезные подходы при создании связей.

  • Совместно спроектируем небольшую базу данных.

Записаться на урок можно на странице онлайн-курса «PostgreSQL для администраторов баз данных и разработчиков».

Комментарии (0)