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

Завершено

Проверка подлинности и авторизация базы данных обычно защищают базу данных с открытым кодом. Размещение этой базы данных в 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.

изображение с выделением параметра действия

Примечание.

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

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

изображение с правилами виртуальной сети для Базы данных Azure для MySQL или 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]

Отображение сведений брандмауэраRule1

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

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

изображение, в котором выделен параметр принудительного ssl-подключения на странице безопасности подключения для Базы данных Azure для MySQL или PostgreSQL

Защита сервера с помощью Azure Advanced Threat Protection

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

К обнаруженным шаблонам необычных действий относятся следующие шаблоны:

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

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

изображение с страницей Расширенной защиты от угроз для Базы данных Azure для MySQL или PostgreSQL

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

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

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

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

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

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

изображение с разделом конфигурации резервного копирования на странице ценовых категорий для Базы данных Azure для MySQL или PostgreSQL

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

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

Это важно

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

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

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

изображение с страницей восстановления на определенный момент времени для Базы данных Azure для MySQL или 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 необходимо указать геоизбыточное резервное копирование в качестве источника данных. При создании нового сервера он будет заполнен базами данных в этой резервной копии.

изображение с разделом сведений о сервере при создании сервера Базы данных Azure для MySQL или PostgreSQL

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

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