Защита базы данных и сервера

Завершено

Проверка подлинности и авторизация — традиционные способы защиты в базах данных с открытым исходным кодом. Разместив базу данных в Azure, вы получаете возможность повысить уровень ее защиты.

Как разработчик базы данных для компании Adventureworks, вы хотели бы улучшить защиту Базы данных Azure для PostgreSQL, используемой вашей компанией.

В этом модуле вы узнаете, какие дополнительные возможности защиты можно использовать теперь, когда вы перенесли локальную базу данных PostgreSQL в Azure.

Защита данных

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

При этом Azure обеспечивает дополнительную защиту для серверов. Эта система защита работает на трех уровнях.

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

В следующих разделах эти уровни защиты будут рассмотрены более подробно.

Фильтрация трафика с помощью правил брандмауэра

База данных Azure для MySQL или PostgreSQL работает за брандмауэром, управляемым компанией Майкрософт. По умолчанию через этот брандмауэр не пропускаются никакие данные. Вам необходимо добавить правила брандмауэра, чтобы разрешить трафик с определенных блоков IP-адресов, как было описано в предыдущих модулях. Рекомендуется регулярно и достаточно часто пересматривать списки IP-адресов, с которых разрешен трафик, и удалять неактуальные IP-адреса клиентов.

Если вы используете другие службы Azure, которым необходимо обращаться к вашим базам данных, разрешите трафик для этих служб в брандмауэре. На портале Azure откройте страницу Безопасность подключения для службы базы данных Azure для MySQL или PostgreSQL, выберите параметр Разрешить доступ к службам Azure и задайте для него значение ON.

Image highlighting the Allow access to Azure services action setting in the firewall configuration for Azure Database for MySQL or PostgreSQL

Примечание.

Применение изменений в брандмауэре может потребовать до пяти минут.

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

Image showing the virtual network rules for Azure Database for MySQL or PostgreSQL

Если вам необходимо создать скрипты для задач обслуживания брандмауэра, используйте Azure CLI. В следующих примерах по добавлению, удалению и отображению правил брандмауэра используется команда az mysql для выполнения операций с Базой данных Azure для MySQL. Если вы выполняете команду PostgreSQL, используйте вместо указанной команды соответствующую команду az postgres с теми же параметрами.

Разрешение доступа клиентам с адресами в диапазоне от 13.83.152.0 до 13.83.152.15

az mysql server firewall-rule create \
    --resource-group [resource group name] \
    --server-name [Azure Database for MySQL server name] \
    --name FirewallRule1 \
    --start-ip-address 13.83.152.0 \
    --end-ip-address 13.83.152.15

Вывод списка всех правил брандмауэра

az mysql server firewall-rule list \
    --resource-group [resource group name] \
    --server-name [Azure Database for MySQL server name]

Отображение сведений о правиле FirewallRule1

az mysql server firewall-rule show \
    --resource-group [resource group name] \
    --server-name [Azure Database for MySQL server name] \
    --name FirewallRule1

Удаление правила FirewallRule1. Клиентам с адресами из диапазона, который указан в этом правиле, доступ будет запрещен

az mysql server firewall-rule delete \
    --resource-group [resource group name] \
    --server-name [Azure Database for MySQL server name] \
    --name FirewallRule1

Чтобы разрешить доступ к службам Azure, создайте для брандмауэра правило, в котором параметры start-ip-address и end-ip-address имеют значение 0.0.0.0.

Создание правил виртуальной сети и управление ими реализуется аналогичным образом с помощью команд az msysql server vnet-rule.

Защита трафика с помощью SSL

Для Базы данных Azure для MySQL или PostgreSQL защита с помощью SSL включена по умолчанию. Вы можете отключить или повторно включить SSL на портале Azure, используя параметр Принудительно использовать SSL-соединение на странице Безопасность подключения для службы базы данных Azure для MySQL или PostgreSQL.

Image highlighting the Enforce SSL connection setting on the Connection security page for Azure Database for MySQL or PostgreSQL

Защита сервера с помощью расширенной защиты от угроз Azure

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

Признаки необычных действий могут быть следующими:

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

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

Image showing the Advanced Threat Protection page for Azure Database for MySQL or PostgreSQL

Резервное копирование и восстановление сервера

Служба базы данных Azure для MySQL или PostgreSQL автоматически выполняет резервное копирование вашего сервера в соответствии со следующим расписанием.

  • Полная резервная копия создается еженедельно, при этом первая полная резервная копия создается сразу после создания сервера.
  • Разностная резервная копия создается дважды в день.
  • Резервная копия журнала транзакций создается каждые пять минут.

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

Настройка параметров резервного копирования

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

Image showing the backup configuration section of the pricing tiers page for Azure Database for MySQL or PostgreSQL

Восстановление сервера

База данных Azure для MySQL или PostgreSQL поддерживает два типа операций восстановления для сервера: восстановление на момент времени и геовосстановление. В обоих случаях в ходе операции восстановления создается новый сервер. Исходный сервер остается доступным. Если требуется, чтобы приложения использовали восстановленные данные, необходимо перенастроить их на использование нового сервера. Кроме того, не забудьте открыть брандмауэр нового сервера, чтобы разрешить подключение к нему клиентов и служб.

Важно!

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

Восстановление на определенный момент времени

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

Image showing the point-in-time restore page for Azure Database for MySQL or PostgreSQL

Интерфейс командной строки Azure CLI поддерживает команды az mysql/postgres server restore, если вы предпочитаете выполнять операции восстановления из командной строки. Например:

az mysql server restore \
    --resource-group [resource group name] \
    --name [new Azure Database for MySQL server name] \
    --source-server [original Azure Database for MySQL server name] \
    --restore-point-in-time "2019-10-23T02:10:00+08:00"

Геовосстановление

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

Image showing the server details section when creating an Azure Database for MySQL or PostgreSQL server

Для выполнения геовосстановления из командной строки в Azure CLI доступна команда az mysql/postgres server georestore.

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