Configurando las Reglas de Firewall para Azure SQL Database

Las bases de datos Azure SQL Database son ofrecidas como un producto PasS dentro de la plataforma cloud de Azure, y por defecto son seguras, al no permitir el acceso a ellas si es que antes no se configuran las reglas de Firewall para permitir las conexiones externas. Esto es lo que vamos a ver en esta ocasión, la configuración del Firewall de las bases de datos Azure SQL Database.

Tomando como fuente la documentación oficial, vemos que las bases de datos de Azure tienen dos tipos de reglas de Firewall, las reglas a nivel Servidor y las reglas a nivel de base de datos.

Reglas de Firewall a nivel de Servidor

Estas reglas son almacenadas en la base de datos “master” del servidor lógico donde están alojadas nuestras bases de datos Azure SQL Database. Estas reglas son globales para todas las bases de datos que se encuentran dentro del servidor lógico, por esa razón es importante ser lo mas restrictivos posibles ya que si estas no están correctamente restringidas podríamos dejar un hueco de seguridad que eventualmente nos traiga problemas de acceso a todas las bases de datos del servidor. El configurar estas reglas es bastante sencillo, ya que se puede hacer desde el mismo portal de Azure, desde Powershell, desde el cliente de linea de comando de Azure o desde el mismo Transac-SQL.

Desde el portal de Azure podemos hacerlo dirigiéndonos al Azure SQL Server y seleccionando la opción de “Firewall / Virtual Networks”, una vez aquí nos aparecerá una pantalla donde podremos dar un nombre a nuestra regla, y escoger los rangos de IP, adicionalmente el portal nos muestra, como ayuda, cuál es nuestra IP publica por si queremos dar el acceso solo a esa IP, en ese caso debemos colocar como “Start IP” y “End IP” la IP publica que nos muestra el portal, finalmente debemos dar clic en el botón “Save”. De esta manera ya habremos creado la regla a nivel de servidor y podremos acceder al Azure SQL Server desde nuestra maquina.

chrome_2017-10-11_16-50-03

Otra forma de crear estas reglas a nivel de servidor son con Powershell, a través del comando “New-AzureRmSqlServerFirewallRule”, en el siguiente ejemplo simplemente he tomado mi IP publica y la asigno como IP de inicio y fin para un servidor de prueba.

Adicionalmente a estas dos opciones también podemos crear este tipo de reglas con comandos de Transac-SQL. En este caso como ya mencionamos que estas reglas se almacenan en la base de datos “master” del servidor lógico, debemos de ejecutar los siguientes comandos bajo el contexto de la base de datos “master”.

Para verificar las reglas podemos hacer una consulta a la vista de sistema “sys.firewall_rules”

Ssms_2017-10-11_17-18-08

Para eliminar la regla con un comando Transac-SQL, podemos ejecutar lo siguiente:

Reglas de Firewall a nivel de Base de Datos

Estas reglas están almacenadas a nivel de la base de datos de usuario y son evaluadas primero que las reglas de firewall a nivel de Servidor. Microsoft recomienda el uso de estas reglas sobre el uso de las reglas a nivel de servidor, porque éstas son mas portables y dedicadas. Portables debido a que al estar almacenadas en la base de datos de usuario, si esta es replicada, entonces las reglas también serán replicadas y no deberemos volver a configurarlas en las copias generadas desde esta base de datos. Son dedicadas ya que solo sirven para el acceso a esa base de datos y no están afectando los permisos de acceso sobre las demás bases de datos.

La configuración de estas reglas, hasta este momento, solo es posible hacerla desde código Transac-SQL. A continuación explicaremos como crear, consultar y eliminar estas reglas.

Para crear una regla de firewall a nivel de base de datos, debemos primero estar conectados a la base de datos con algun usuario que al menos tenga el permiso de CONTROL, seguidamente debemos ejecutar el siguiente comando:

Luego podemos verificar que efectivamente la regla ha sido creada consultando la siguiente vista de sistema: “sys.database_firewall_rules”

Ssms_2017-10-12_09-37-41

Finalmente si deseamos eliminar la regla recientemente creada, podemos hacerlo ejecutando el siguiente procedimiento almacenado: “sp_delete_database_firewall_rule”.

Conclusión

Como ha podido mostrar, la administración de estas reglas de Firewall es bastante sencilla, y la aplicación de dichas reglas es muy importante para reforzar la seguridad de nuestras Azure SQL Databases.

Anuncios

Copiar SQL Azure Database entre Subscripciones

Hace poco recibí un requerimiento de un cliente que deseaba copiar una de sus bases de datos PaaS de Azure de una subscripción hacia otra. Esta base de datos pesa alrededor de 50 GB y se encuentra en un “tier” Standard S2. Esta tarea por más sencilla que parezca no lo es tanto así, y a continuación vamos a explorar la solución que se implementó para completar el requerimiento. Sigue leyendo “Copiar SQL Azure Database entre Subscripciones”

Migración y Upgrade con Database Mirroring

 

El objetivo de este post es auto-documentar un proceso de migración y upgrade de una base de datos SQL Server 2014 a un nuevo servidor con SQL Server 2017 que tuve a cargo. Durante este proceso tuve que solucionar una serie de problemas los cuales también hago referencia en este post por si a alguien también le sucede. El requerimiento principal era minimizar el tiempo de desconexión de las aplicaciones con la base de datos. Documentación y blogs sobre este tema hay muchos, pero la gran mayoría en ingles por eso me anime también a documentarlo en español. Sigue leyendo “Migración y Upgrade con Database Mirroring”

Asegurando los Servicios de SQL Server – Parte 1

SQL Server tiene una serie de servicios los cuales cumplen labores especificas y muy importantes para el correcto funcionamiento del motor de base de datos. Como buenos DBAs debemos asegurara que los servicios de nuestras instancias de base de datos estén correctamente asegurados en relación a las cuentas de usuarios que se utilizan para que estos se ejecuten, ya que los permisos que estas tengan pueden causar problemas mayúsculos en el sistema operativo donde estos corren o incluso en la red donde nuestra instancia esta alojada. Sigue leyendo “Asegurando los Servicios de SQL Server – Parte 1”

Copiar Linked Servers

Hola amigos, el dia de hoy tuve un requerimiento en el que necesitaba copiar una serie de Linked Servers de una instancia de base de datos hacia otra, dichos linked servers apuntaban a una instancia Oracle. Los que tenemos algo de experiencia tratando con bases de datos Oracle, sabemos que estas requieren algunas preparaciones previas para configurar los linked servers desde SQL Server. A continuación vamos a ver los pasos seguidos para poder realizar esta tarea sin tener mayores contratiempos. Sigue leyendo “Copiar Linked Servers”