Protección de una base de datos y un servidor

Completado

La autenticación y autorización de bases de datos son la forma en que tradicionalmente se protegería una base de datos de código abierto. Hospedar esa base de datos en Azure ofrece la oportunidad de aumentar esa protección.

Como desarrollador de bases de datos de AdventureWorks, le gustaría mejorar la protección de la instancia de Azure Database for PostgreSQL de su empresa.

En esta unidad, conocerá la protección adicional que existe ahora que migró la base de datos de PostgreSQL local a Azure.

Protección de los datos

PostgreSQL y MySQL tienen sus propios mecanismos de autenticación y autorización que controlan qué usuarios pueden tener acceso a las bases de datos y los privilegios que tienen sobre los elementos de esas bases de datos. Debe seguir administrando los usuarios y privilegios de la misma manera que antes de la migración. Recuerde que puede usar herramientas administrativas, como pgAdmin y MySQL Workbench, para conectarse a los servidores hospedados por Azure.

Sin embargo, Azure proporciona protección adicional a los servidores. Esta protección funciona en tres niveles:

  1. Controla el acceso al servidor, para lo cual filtra el tráfico de orígenes desconocidos o que no son de confianza.
  2. Protege el tráfico y se asegura de que no se puede manipular ni interceptar mientras se transmite de un cliente al servidor y viceversa.
  3. Protege al servidor mismo de amenazas externas comunes.

En las secciones siguientes se analizan estos elementos con mayor detalle.

Filtro del tráfico con reglas de firewall

Azure Database for MySQL o PostgreSQL se ejecutan dentro de un firewall administrado por Microsoft. De manera predeterminada, nada puede atravesar este firewall. Puede agregar reglas de firewall para permitir el tráfico desde bloques de direcciones IP designados, tal como se describe en los módulos anteriores. Se recomienda revisar activamente las direcciones IP a las que se les permite enviar tráfico a intervalos frecuentes y quitar las direcciones IP de los clientes que ya no se necesitan.

Si está ejecutando otros servicios de Azure que necesitan usar las bases de datos, debe abrir el firewall para permitir estos servicios. En Azure Portal, en la página Seguridad de la conexión del servicio Azure Database for MySQL o PostgreSQL, establezca el valor de la acción Permitir el acceso a servicios de Azure en ACTIVADO.

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

Nota:

Los cambios que haga en el firewall pueden tardar hasta cinco minutos en activarse.

En algunas situaciones, abrir el servidor a todos los servicios de Azure puede ser demasiado excesivo. Si ejecuta la versión De uso general o la versión Optimizado para memoria de Azure Database for MySQL o PostgreSQL, puede filtrar el tráfico en el nivel de red virtual mediante las reglas de red virtual de Azure. Con una regla de red virtual, puede permitir que el tráfico procedente de sus propias redes virtuales acceda al servidor. Se bloqueará el tráfico desde otras redes.

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

Si necesita crear scripts para tareas de mantenimiento del firewall, use la CLI de Azure. En los ejemplos siguientes, en los que se agregan, eliminan y muestran reglas de firewall, use el comando az mysql que lleva a cabo operaciones en Azure Database for MySQL. Si ejecuta un comando de PostgreSQL, use en su lugar los comandos az postgres correspondientes; los parámetros son los mismos:

Acceso permitido a los clientes en el intervalo de 13.83.152.0 a 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

Enumeración de todas las reglas de firewall

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

Visualización de los detalles de FirewallRule1

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

Eliminación de FirewallRule1. Se denegará el acceso a los clientes del intervalo de direcciones de esta regla

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

Para habilitar el acceso a los servicios de Azure, cree una regla de firewall con un valor start-ip-address y end-ip-address de 0.0.0.0.

Puede crear y administrar reglas de red virtual de manera similar, con los comandos az msysql server vnet-rule.

Protección del tráfico mediante SSL

La protección SSL para Azure Database for MySQL o PostgreSQL está habilitada de manera predeterminada. Puede deshabilitar SSL y volver a habilitarlo con la opción Aplicar conexión SSL de la página Seguridad de la conexión para el servicio Azure Database for MySQL o PostgreSQL en Azure Portal:

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

Protección del servidor mediante Azure Advanced Threat Protection

Advanced Threat Protection es una capa adicional de seguridad que proporciona Azure. Advanced Threat Protection supervisa el acceso al servidor y busca patrones de comportamiento inusual o potencialmente malintencionado. Cuando se detecta ese tipo de comportamiento, establezca que se envíe una alerta a direcciones de correo electrónico especificadas.

Entre los patrones de actividad inusual detectados se incluyen los siguientes:

  • Acceso desde una ubicación inesperada o inusual.
  • Acceso desde un centro de datos de Azure inusual.
  • Acceso desde una aplicación que podría se perjudicial, como una herramienta de ataque reconocida.
  • Una gran cantidad de inicios de sesión erróneos en una sucesión rápida, lo que indica un posible ataque por fuerza bruta.

Puede habilitar Advanced Threat Protection en la página Advanced Threat Protection correspondiente al servicio en cuestión en Azure Portal:

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

Copia de seguridad y restauración de un servidor

El servicio Azure Database for MySQL o PostgreSQL hace automáticamente una copia de seguridad del servidor según la programación siguiente:

  • Se hace una copia de seguridad completa semanal, y la primera copia de seguridad completa se hace tan pronto como se crea el servidor.
  • Se hace una copia de seguridad diferencial dos veces al día.
  • Se hace una copia de seguridad del registro de transacciones cada cinco minutos.

Se hace una copia de seguridad de todo el servidor. No se pueden hacer copias de seguridad de bases de datos individuales y tampoco puede forzar manualmente la creación de una copia de seguridad.

Establecimiento de las opciones de copia de seguridad

Estas copias de seguridad se usan para restaurar a cualquier momento dado para el que se hayan conservado los archivos de copia de seguridad. De manera predeterminada, las copias de seguridad se conservan durante siete días, pero puede mantenerlas durante un máximo de 35 días. También puede especificar cómo se almacenan las copias de seguridad; las copias de seguridad con redundancia local se conservan en la misma región que el servidor y las copias de seguridad con redundancia geográfica se copian en centros de datos de otras regiones. La opción de redundancia geográfica solo está disponible para los servidores con el plan de tarifa De uso general y el plan de tarifa Optimizado para memoria. Puede establecer las opciones de copia de seguridad en la página Planes de tarifa correspondiente a su servidor en Azure Portal:

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

Restauración de un servidor

Azure Database for MySQL o PostgreSQL admite dos tipos de operaciones de restauración de servidor: restauración a un momento dado y restauración geográfica. En ambos casos, la acción de restauración crea un servidor nuevo. El servidor original sigue estando disponible. Si desea que las aplicaciones utilicen los datos restaurados, debe volver a configurarlas para que usen el servidor nuevo. Además, recuerde abrir el firewall del servidor nuevo para permitir que se conecten los clientes y servicios.

Importante

No se puede restaurar un servidor eliminado. Cuando se elimina un servidor, también se eliminan las copias de seguridad que tiene asociadas.

Restauración a un momento dado

Una restauración a un momento dado crea un servidor con las copias de seguridad del servidor original y revierte el servidor al momento especificado. Puede iniciar una operación de restauración con el comando Restaurar de la barra de herramientas de la página Información general correspondiente al servidor en Azure Portal. Se le pedirá que indique el nombre de un servidor nuevo, además de un momento dado.

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

Si prefiere hacer las operaciones de restauración desde la línea de comandos, la CLI de Azure admite los comandos az mysql/postgres server restore. Por ejemplo:

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"

Geo-restore

Una restauración geográfica es la restauración completa de un servidor mediante una copia de seguridad almacenada en un almacenamiento con redundancia geográfica. Cuando se crea un servidor mediante Azure Portal, se especifica una copia de seguridad con redundancia geográfica como el origen de datos. Cuando se cree el servidor nuevo, se rellenará con las bases de datos de esta copia de seguridad.

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

La CLI de Azure proporciona los comandos az mysql/postgres server georestore necesarios para realizar una restauración geográfica desde la línea de comandos.

La replicación de una copia de seguridad con redundancia geográfica en otra región puede tardar hasta una hora. Esto podría dar lugar a la pérdida de hasta una hora de datos si necesita realizar una restauración geográfica desde otra región.