Implementación de un firewall de Azure SQL Database

Completado

Al crear un servidor en Azure SQL Database o Azure Synapse Analytics denominado mysqlserver, por ejemplo, el firewall de nivel de servidor bloquea todo el acceso al punto de conexión público para el servidor (al que se puede acceder en mysqlserver.database.windows.net). Para simplificar, se usa SQL Database cuando se hace referencia tanto a SQL Database como a Azure Synapse Analytics. Este artículo no se aplica a Azure SQL Managed Instance. Para obtener información sobre la configuración de red, vea Conexión de una aplicación a Azure SQL Managed Instance.

Funcionamiento del firewall

Los intentos de conexión desde Internet y Azure deben pasar por el firewall antes de que lleguen al servidor o la base de datos, como se muestra en el diagrama siguiente.

Diagrama que muestra un ejemplo de cómo funciona el firewall.

Importante

Tenga en cuenta que Azure Synapse solo es compatible con las reglas de firewall de IP de nivel de servidor. No admite reglas de firewall de IP de nivel de base de datos.

Reglas de firewall de IP en el nivel de servidor

Estas reglas permiten a los clientes acceder a todo el servidor, es decir, a todas la bases de datos que administra el servidor. Estas reglas se almacenan en la base de datos maestra. El número máximo de reglas de firewall de IP de nivel de servidor se limita a 256 para un servidor. Si tiene habilitada la opción Permitir que los servicios y recursos de Azure accedan a este servidor, cuenta como una sola regla de firewall para el servidor.

Puede configurar reglas de firewall de IP de nivel de servidor mediante Azure Portal, PowerShell o instrucciones Transact-SQL.

Nota:

El número máximo de reglas de firewall de IP de nivel de servidor se limita a 256 cuando se configura con el portal de Azure.

  • Para usar el portal o PowerShell, debe ser propietario o colaborador de la suscripción.
  • Para usar Transact-SQL, debe conectarse a la base de datos maestra como el inicio de sesión de la entidad de seguridad a nivel de servidor o como administrador de Microsoft Entra. (Primero, un usuario con permisos en el nivel de Azure debe crear una regla de firewall de IP en el nivel de servidor).

Nota:

De forma predeterminada, durante la creación de un nuevo servidor SQL server lógico desde Azure Portal, la opción Permitir que los servicios y recursos de Azure accedan a este servidor se establece en No.

Reglas de firewall de IP en el nivel de base de datos

Las reglas de firewall de IP de nivel de base de datos permiten a los clientes acceder a determinadas bases de datos (seguras). Se crean para cada base de datos (incluida la base datos maestra) y se almacenan en las bases de datos individuales.

  • Solo puede crear y administrar reglas de firewall de IP de nivel de base de datos para bases de datos maestras y de usuario mediante instrucciones Transact-SQL y solo después de configurar el primer firewall de nivel de servidor.
  • Si especifica un intervalo de direcciones IP en la regla de firewall de IP de nivel de base de datos que se encuentra fuera del intervalo indicado en la regla de firewall de IP de nivel de servidor, solo los clientes que tengan direcciones IP en el intervalo de nivel de base de datos pueden tener acceso a la base de datos.
  • El valor predeterminado es de hasta 256 reglas de firewall de IP de nivel de base de datos para una base de datos. Para más información sobre la configuración de reglas de firewall de IP de nivel de base de datos, consulte el ejemplo que aparece más adelante en este artículo y sp_set_database_firewall_rule (Azure SQL Database).

Recomendaciones para establecer reglas de firewall

Se recomienda usar reglas de firewall de IP de nivel de base de datos siempre que sea posible. Este procedimiento mejora la seguridad y hace que la base de datos sea más portable. Use reglas de firewall de IP de nivel de servidor para los administradores. También puede usarlas cuando tenga muchas bases de datos con los mismos requisitos de acceso y no quiera configurar individualmente cada una de ellas.

Nota:

Para más información acerca de bases de datos portables en el contexto de la continuidad empresarial, consulte Requisitos de autenticación para la recuperación ante desastres.

Reglas de firewall de IP de nivel de servidor frente a nivel de base de datos

¿Los usuarios de una base de datos deben estar completamente aislados de otra base de datos?

Si es , use reglas de firewall de IP de nivel de base de datos para conceder acceso. Este método evita el uso de reglas de firewall de IP de nivel de servidor, que permiten el acceso a través del firewall a todas las bases de datos. Esto reduce la solidez de sus defensas.

¿Los usuarios de las direcciones IP necesitan acceso a todas las bases de datos?

Si es , use reglas de firewall de IP de nivel de servidor para reducir el número de veces que tiene que configurar reglas de firewall de IP.

¿La persona o el equipo que configura las reglas de firewall de IP solo tiene acceso mediante Azure Portal, PowerShell o la API de REST?

En caso afirmativo, debe usar reglas de firewall de IP de nivel de servidor. Las reglas de firewall de IP de nivel de base de datos solo pueden configurarse mediante Transact-SQL.

¿Está prohibido que la persona o el equipo que configura las reglas de firewall de IP tenga permisos elevados en el nivel de base de datos?

En caso afirmativo, use reglas de firewall de IP de nivel de servidor. Necesita al menos el permiso CONTROL DATABASE en el nivel de base de datos para configurar reglas de firewall de IP de nivel de base de datos mediante Transact-SQL.

¿La persona o el equipo que configura o audita las reglas de firewall de IP administra de forma centralizada las reglas de firewall de IP para muchas bases de datos (quizás cientos)?

En este escenario, los procedimientos recomendados se determinan en función de las necesidades y el entorno. Las reglas de firewall de IP de nivel de servidor pueden ser más fáciles de configurar, pero mediante scripts se pueden configurar reglas en el nivel de base de datos. Aunque use las reglas de firewall de IP de nivel de servidor, podría necesitar auditar las reglas de firewall de IP de nivel de base de datos para ver si los usuarios con el permiso CONTROL en la base de datos crean reglas de firewall de IP en este nivel.

¿Puedo usar una combinación de reglas de firewall de IP de nivel de servidor y de base de datos?

Sí. Algunos usuarios, por ejemplo, los administradores, pueden necesitar reglas de firewall de IP de nivel de servidor. Otros usuarios, como los usuarios de una aplicación de base de datos, pueden necesitar reglas de firewall de IP de nivel de base de datos.

Conexiones desde Internet

Cuando un equipo intenta conectarse al servidor desde Internet, el firewall comprueba primero la dirección IP de origen de la solicitud con las reglas de firewall de IP de nivel de base de datos, para la base de datos que se solicita en la conexión.

  • Si la dirección está comprendida en uno de los intervalos especificados en las reglas de firewall de IP de nivel de base de datos, se concede la conexión a la base de datos que contiene la regla.
  • Si la dirección no está comprendida en uno de los intervalos de las reglas de IP de nivel de base de datos, el firewall comprueba las reglas de firewall de IP de nivel de servidor. Si la dirección está incluida en uno de los intervalos de estas reglas, se concede la conexión. Las reglas de firewall de IP de nivel de servidor se aplican a todas las bases de datos que administra el servidor.
  • Si la dirección no se encuentra dentro de los intervalos especificados en cualquiera de las reglas de firewall de IP de nivel de base de datos o de servidor, la solicitud de conexión genera un error.

Nota:

Para acceder a Azure SQL Database desde el equipo local, asegúrese de que el firewall de la red y el equipo local permiten la comunicación saliente en el puerto TCP 1433.

Conexiones desde dentro de Azure

Para permitir que las aplicaciones hospedadas en Azure se conecten al servidor SQL, deben habilitarse las conexiones de Azure. Para habilitar las conexiones de Azure, debe haber una regla de firewall con las direcciones IP inicial y final establecidas en 0.0.0.0. Esta regla recomendada solo es aplicable a Azure SQL Database.

Si una aplicación de Azure intenta conectarse al servidor, el firewall comprueba que se permitan las conexiones de Azure; para ello, verifica la existencia de esta regla de firewall. Esto se puede activar directamente desde el panel de Azure Portal cambiando la opción Permitir que los servicios y recursos de Azure accedan a este servidor a ACTIVADO en la configuración de firewalls y redes virtuales. Al cambiar la configuración a ON, se crea una regla de firewall de entrada para IP 0.0.0.0 - 0.0.0.0 denominada AllowAllWindowsAzureIps. La regla se puede ver en la vista sys.firewall_rules de la base de datos principal. Use PowerShell o la CLI de Azure para crear una regla de firewall con las direcciones IP inicial y final establecidas en 0.0.0.0 si no está usando el portal.

Importante

Esta opción configura el firewall para permitir todas las conexiones desde Azure, incluidas las procedentes de las suscripciones de otros clientes. Si selecciona esta opción, asegúrese de que los permisos de usuario y el inicio de sesión solo dejan acceder a los usuarios autorizados.

Permisos

Para poder crear y administrar las reglas de firewall de IP para Azure SQL Server, debe:

Creación y administración de reglas de firewall de IP

La primera configuración del firewall de nivel de servidor se crea mediante Azure Portal o bien mediante programación con Azure PowerShell, la CLI de Azure o una API de REST de Azure. Las reglas de firewall de IP de nivel de servidor adicionales se crean y se administran mediante estos métodos o con Transact-SQL.

Importante

Las reglas de firewall de IP de nivel de base de datos solo pueden crearse y administrarse mediante Transact-SQL.

Para mejorar el rendimiento, las reglas de firewall de IP de nivel de servidor se almacenan temporalmente en caché en el nivel de base de datos. Para actualizar la memoria caché, consulte DBCC FLUSHAUTHCACHE.

Sugerencia

Puede usar Auditoría de base de datos para auditar cambios en el firewall en el nivel de servidor y de base de datos.

Uso de Azure Portal para administrar las reglas de firewall de IP de nivel de servidor

Para establecer una regla de firewall de IP de nivel de servidor en Azure Portal, vaya a la página de información general de la base de datos o el servidor.

Sugerencia

Para obtener un tutorial, vea Creación de una base de datos con Azure Portal.

Desde la página de información general de la base de datos

  1. Para establecer una regla de firewall de IP de nivel de servidor en la página de información general de la base de datos, seleccione Establecer firewall de servidor en la barra de herramientas, como se muestra en la imagen siguiente.

    Captura de pantalla que muestra un ejemplo de la barra de herramientas de configuración del firewall de sql Database.

    Se abre la página Redes del servidor.

  2. Agregue una regla en la sección Reglas de firewall para agregar la dirección IP del equipo que usa y, a continuación, seleccione Guardar. Se creará una regla de firewall de IP de nivel de servidor para la dirección IP actual.

    Captura de pantalla que muestra un ejemplo de la página de redes de sql Server.

Desde la página de información general del servidor

Se abre la página de información general del servidor. Muestra el nombre completo del servidor (por ejemplo, mynewserver20170403.database.windows.net) y proporciona opciones para otras configuraciones.

  1. Para establecer una regla de nivel de servidor en esta página, seleccione Redes en el menú Configuración del lado izquierdo.
  2. Agregue una regla en la sección Reglas de firewall para agregar la dirección IP del equipo que usa y, a continuación, seleccione Guardar. Se creará una regla de firewall de IP de nivel de servidor para la dirección IP actual.

Uso de Transact-SQL para administrar reglas de firewall de IP

Expandir tabla

Vista de catálogo o procedimiento almacenado Nivel Descripción
sys.firewall_rules Servidor Muestra las reglas de firewall de IP de nivel de servidor actuales
sp_set_firewall_rule Servidor Crea o actualiza las reglas de firewall de IP de nivel de servidor
sp_delete_firewall_rule Servidor Quita las reglas de firewall de IP de nivel de servidor
sys.database_firewall_rules Base de datos Muestra las reglas de firewall de IP de nivel de base de datos actuales
sp_set_database_firewall_rule Base de datos Crea o actualiza las reglas de firewall de IP de nivel de base de datos
sp_delete_database_firewall_rule Bases de datos Quita las reglas de firewall de IP de nivel de base de datos

En el ejemplo siguiente se revisan las reglas existentes, se habilita un intervalo de direcciones IP en el servidor Contoso y se elimina una regla de firewall de IP:

SQL

SELECT * FROM sys.firewall_rules ORDER BY name;

A continuación, agregue una regla de firewall de IP de nivel de servidor.

SQL

SELECT * FROM sys.firewall_rules ORDER BY name;

EXECUTE sp_set_firewall_rule @name = N'ContosoFirewallRule',
@start_ip_address = '192.168.1.1', @end\_ip\_address = '192.168.1.10'

Para eliminar una regla de firewall de IP de nivel de servidor, ejecute el procedimiento almacenado sp_delete_firewall_rule. En el ejemplo siguiente se elimina la regla ContosoFirewallRule:

SQL

EXECUTE sp_delete_firewall_rule @name = N'ContosoFirewallRule'

Uso de PowerShell para administrar reglas de firewall de IP de nivel de servidor

Nota:

En este ejemplo se usa el módulo de PowerShell de Azure Az, que es el módulo de PowerShell recomendado para interactuar con Azure. Para empezar a trabajar con el módulo Az PowerShell, consulte Instalación de Azure PowerShell. Para obtener información sobre cómo migrar al módulo Az PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.

Importante

El módulo de Azure Resource Manager (AzureRM) de PowerShell ha quedado en desuso el 29 de febrero de 2024. Todo el desarrollo futuro debe usar el módulo Az.Sql. Se recomienda a los usuarios migrar de AzureRM al módulo Az PowerShell para seguir recibiendo soporte técnico y actualizaciones. El módulo AzureRM ya no cuenta con mantenimiento ni soporte. Los argumentos de los comandos del módulo Az PowerShell y en los módulos AzureRM son sustancialmente idénticos. Para obtener más información sobre su compatibilidad, consulte Introducción al nuevo módulo de Az PowerShell.

Expandir tabla

Cmdlet Nivel Descripción
Get-AzSqlServerFirewallRule Servidor Devuelve las reglas de firewall de nivel de servidor actuales
New-AzSqlServerFirewallRule Servidor Crear una regla de firewall de nivel de servidor
Set-AzSqlServerFirewallRule Servidor Actualiza las propiedades de una regla de firewall de nivel de servidor existente
Remove-AzSqlServerFirewallRule Servidor Elimina las reglas de firewall de nivel de servidor

En el ejemplo siguiente se usa PowerShell para establecer una regla de firewall de IP de nivel de servidor:

PowerShell

New-AzSqlServerFirewallRule -ResourceGroupName "myResourceGroup" `-ServerName $servername `-FirewallRuleName "ContosoIPRange" -StartIpAddress "192.168.1.0" -EndIpAddress "192.168.1.255"

Sugerencia

Para $servername especifique el nombre del servidor y no el nombre DNS completo, por ejemplo, especifique mysqldbserver en lugar de mysqldbserver.database.windows.net. Para obtener ejemplos de PowerShell en el contexto de un inicio rápido, vea Creación de una base de datos con PowerShell y Creación de una base de datos única y configuración de una regla de firewall de IP de nivel de servidor mediante PowerShell.

Uso de la CLI para administrar reglas de firewall de IP de nivel de servidor

Expandir tabla

Cmdlet Nivel Descripción
az sql server firewall-rule create (Crear regla de firewall del servidor SQL) Servidor Crea una regla de firewall de IP del servidor
az sql server firewall-rule list - Comando SQL para listar reglas de firewall en el servidor. Servidor Enumera las reglas de firewall de IP en un servidor
az sql server firewall-rule show Servidor Muestra los detalles de una regla de firewall de IP
az sql server firewall-rule update Servidor Actualiza una regla de firewall de IP
az sql server firewall-rule delete Servidor Elimina una regla de firewall de IP

En el ejemplo siguiente se usa la CLI para establecer una regla de firewall de IP de nivel de servidor:

CLI de Azure



az sql server firewall-rule create --resource-group myResourceGroup --server $servername \-n ContosoIPRange --start-ip-address 192.168.1.0 --end-ip-address 192.168.1.255">">


Sugerencia

Para $servername, especifique el nombre del servidor y no el nombre DNS completo. Por ejemplo, use mysqldbserver en lugar de mysqldbserver.database.windows.net. Para obtener un ejemplo de la CLI en el contexto de un inicio rápido, vea Creación de una base de datos con la CLI de Azure y Creación de una base de datos única y configuración de una regla de firewall de IP de nivel de servidor con la CLI de Azure. Para Azure Synapse Analytics, consulte los ejemplos siguientes:

Expandir tabla

Cmdlet Nivel Descripción
az synapse workspace firewall-rule create - Crea una regla de firewall para el espacio de trabajo de Synapse. Servidor Creación de una regla de firewall
az synapse workspace firewall-rule delete: Este comando se utiliza para eliminar una regla de firewall dentro del área de trabajo de Synapse. Servidor Eliminación de una regla de firewall
az synapse workspace firewall-rule list - lista de reglas de firewall del espacio de trabajo de Synapse Servidor Enumeración de todas las reglas de firewall
az synapse workspace firewall-rule show Servidor Obtención de una regla de firewall
az synapse workspace firewall-rule update Servidor Actualización de una regla de firewall
az synapse workspace firewall-rule wait Servidor Colocación de la CLI en estado de espera hasta que se cumpla una condición de una regla de firewall

En el ejemplo siguiente se usa la CLI para establecer una regla de firewall de IP de nivel de servidor en Azure Synapse:

CLI de Azure

az synapse workspace firewall-rule create --name AllowAllWindowsAzureIps --workspace-name $workspacename --resource-group $resourcegroupname --start-ip-address 0.0.0.0 --end-ip-address 0.0.0.0

Uso de API de REST para administrar reglas de firewall de IP de nivel de servidor

Expandir tabla

API Nivel Descripción
Enumerar reglas de firewall Servidor Muestra las reglas de firewall de IP de nivel de servidor actuales
Crear o actualizar regla de firewall Servidor Crea o actualiza las reglas de firewall de IP de nivel de servidor
Eliminar reglas de firewall Servidor Quita las reglas de firewall de IP de nivel de servidor
Obtener reglas de firewall Servidor Obtiene las reglas de firewall de IP de nivel de servidor

Solución de problemas del firewall de base de datos

Tenga en cuenta los aspectos siguientes cuando el acceso a Azure SQL Database no se comporte de la manera prevista.

  • Configuración del firewall local: para que el equipo pueda acceder a Azure SQL Database, es posible que tenga que crear una excepción de firewall en el equipo para el puerto TCP 1433. Para realizar conexiones dentro del límite de la nube de Azure, es posible que tenga que abrir puertos adicionales. Para más información, consulte la sección "SQL Database: Exterior vs interior" de Puertos más allá del 1433 para ADO.NET 4.5 y Azure SQL Database.

  • Traducción de direcciones de red: debido a la traducción de direcciones de red (NAT), la dirección IP que usa el equipo para conectarse a Azure SQL Database puede ser diferente de la dirección IP en la configuración de IP del equipo. Para ver la dirección IP que usa el equipo para conectarse a Azure:

    1. Inicie sesión en el portal.
    2. Vaya a la pestaña Configurar del servidor que hospeda la base de datos.
    3. La dirección IP del cliente actual se muestra en la sección Direcciones IP permitidas. Seleccione Agregar para Direcciones IP permitidas para permitir que este equipo acceda al servidor.
  • Los cambios en la lista de permitidos aún no han tenido efecto: puede haber hasta un retraso de cinco minutos para que los cambios en la configuración del firewall de Azure SQL Database surtan efecto.

  • El inicio de sesión no está autorizado o se usó una contraseña incorrecta: si un inicio de sesión no tiene permisos en el servidor o la contraseña es incorrecta, se deniega la conexión al servidor. La creación de una configuración de firewall solo ofrece a los clientes la oportunidad de intentar conectarse al servidor. El cliente todavía debe proporcionar las credenciales de seguridad necesarias. Para obtener más información sobre la preparación de inicios de sesión, vea Control y concesión de acceso a bases de datos.

  • Dirección IP dinámica: si tiene una conexión a Internet que usa direccionamiento IP dinámico y tiene problemas para atravesar el firewall, pruebe una de las siguientes soluciones:

    • Solicite al proveedor de servicios de Internet el intervalo de direcciones IP asignado a los equipos cliente que acceden al servidor. Agregue ese intervalo de direcciones IP como regla de firewall de IP.
    • Obtenga el direccionamiento IP estático en su lugar para los equipos cliente. Agregue las direcciones IP como reglas de firewall de IP.