Configuración de Private Endpoint en Azure Data Factory

Generalmente, las organizaciones tienen políticas de seguridad de cumplimiento obligatorio impuesto por un tercero, y otras adoptadas de manera voluntaria para asegurar la confidencialidad y evitar fugas de información. Por ello, siempre se nos pide aplicar estas políticas en los sistemas administrados, como en este caso, para la integración de datos entre una base de datos y un integrador.

Azure Data Factory es el integrador más conocido de la nube de Microsoft, quizá por su rápida curva de aprendizaje ya que no se requiere conocer un lenguaje como Python para desarrollar procesos. Así mismo, Azure SQL Database es la base de datos más conocida y utilizada en esta nube. Así que en este articulo veremos como comunicar estos dos componentes de una arquitectura de datos a través de un private endpoint.

¿Qué es un private endpoint?

Un punto de conexión privado es una interfaz de red que usa una dirección IP privada de la red virtual. Esta interfaz de red le conecta de forma privada y segura a un servicio con la tecnología de Azure Private Link. Al habilitar un punto de conexión privado, incorpora el servicio a la red virtual.

https://docs.microsoft.com/en-us/azure/private-link/private-endpoint-overview

En otras palabras, cuando utilizamos un private link no se utiliza la IP pública del servicio, sino un entorno privado habilitado que habilita esta comunicación entre los servicios.

Situación actual

Se cuenta con una instancia de Azure Data Factory llamado “adf-98”, y un Azure SQL Server llamado “server-98” que hospeda una Azure SQL Database serverless llamada “database-98”.

Componentes utilizados
Componentes y su comunicación

Azure SQL Server

El acceso publico a la base de datos se encuentra habilitado, así como el acceso de los servicios de Azure, esto incluye Azure Data Factory; no se cuenta con reglas de firewall que habilite la comunicación con una IP especifica.

Estado actual de la configuración de firewall en Azure SQL Server
Configuración del firewall en Azure SQL Server

Tampoco se tiene configurado ningún private endpoint, como se puede ver a continuación:

Estado actual de la configuración de private Endpoints en Azure SQL Server
Listado de private endpoints en Azure SQL Server

Azure Data Factory (ADF)

En este servicio, contamos con la configuración de un linked service que conecta nuestro ADF con la base de datos “database-98”, utilizando el Integration runtime (IR) llamado “AutoResolveIntegrationRuntime”, el cual viene por defecto en cualquier instancia creada de ADF.

Configuración actual del linked service creado en Azure Data Factory
Configuración integration runtime en ADF

Al realizar la prueba de conexión de este IR, se obtiene un resultado satisfactorio.

Cambio de politicas sobre Azure SQL Server

En este paso se deshabilitara la comunicación abierta sobre el servidor de base de datos, lo que causará el fallo del linked service configurado sobre ADF.

Aplicando las nuevas politicas sobre el servidor SQL

Inicialmente, se deshabilita la comunicación abierta entre el servidor de base de datos y otros servicios de Azure, luego se habilita la opción de denegar acceso desde redes públicas hacia la base de datos.

Configuración segura de firewall en Azure SQL Server
Aplicación de politicas sobre firewall de Azure SQL Server

Pruebas del impacto sobre ADF

Dado este cambio, al probar el linked service previamente configurado sobre ADF para conectar con la base de datos “database-98” que se hospeda sobre el servidor “server-98”, se obtiene un error de comunicación.

Error de conexión entre Azure Data Factory y Azure SQL Database
Error de comunicación

El error pide validar si las reglas del firewall de la base de datos están permitiendo el acceso por parte de este integration runtime; también indica que la conexión fue denegada por que la base de datos tiene habilitada la opción de denegación de accesos desde redes públicas.

Configurando un private endpoint entre Azure Data Factory a una Azure SQL Database

Para solucionar el error de conexión entre ADF y Azure SQL Database, debemos crear un nuevo integration runtime que permita la utilización de una VNet a través de la cual se comunicarán los servicios. Luego se debe configurar un private endpoint entre ambos servicios.

Crear integration runtime para VNet en Azure Data Factory

  1. Sobre el portal de ADF, nos dirigimos al icono de administración que se encuentra a mano izquierda en forma de caja de herramientas
  2. En el listado de opciones que aparece a mano izquierda, seleccionamos “Integration runtime”
  3. Damos clic sobre el botón “+ New”
  4. Seleccionar el tipo “Azure, Self-Hosted”
  5. Seleccionar el entorno “Azure”
  6. Asignar un nombre al IR en el campo “Name”
  7. Habilitar la opción “Virtual network configuration”
  8. Seleccionar la región de preferencia
  9. Clic en el botón “Create”

Podrán pasar hasta 15 minutos para que el nuevo integration runtime quede listo para su uso.

Listado de integration runtimes
Integration runtimes disponibles

Configurar private endpoint entre ADF y Azure SQL Server

  1. Sobre el portal de ADF, nos dirigimos al icono de administración que se encuentra a mano izquierda en forma de caja de herramientas
  2. En el listado de opciones que aparece a mano izquierda, seleccionamos “Managed private endpoints”
  3. Damos clic sobre el botón “+ New”
  4. Seleccionar el servicio “Azure SQL Database”
  5. Clic en “Continue”
  6. Asignar un nombre al private endpoint en el campo “Name”
  7. Seleccionamos la suscripción donde se encuentra el servicio de base de datos
  8. Seleccionamos el nombre del servidor
  9. Clic en el botón “Create”
Formulario de creación del Private Endpoint
Formulario de creación del Private Endpoint

Notará que se ha creado el private endpoint, pero se encuentra en estado de aprobación pendiente.

Private endpoint en Azure SQL Server
Estado pendiente en aprobación de private endpoint en Azure SQL Server

Aprobar la conexión privada en Azure SQL Server

Ahora, sobre el servicio de Azure SQL Server, sobre la opción de “Private endpoint connections” aparecerá una nueva petición de conexión, la cual se encuentra en estado pendiente.

Aprobación de private endpoint en Azure SQL Server
Aprobación de private endpoint en Azure SQL Server

Para aprobar, clic sobre el check box que se encuentra al lado izquierdo de la petición, luego clic “Approve” que se encuentra en la parte superior. Esto nos mostrará un prompt solicitando un mensaje de aprobación, se puede dejar vacío y dar clic en “Yes”.

Esta aprobación tardará unos minutos antes de ser detectada por la configuración de Azure Data Factory; sin embargo al final, si vemos el Private Endpoint sobre ADF veremos que el estado de aprobación es “Approved”

Estado aprobado en aprobación de private endpoint en Azure SQL Server
Estado aprobado en aprobación de private endpoint en Azure SQL Server

Pruebas finales de conexión en ADF

Ahora, solo es cuestión de modificar el linked service, seleccionando el nuevo integration runtime creado con conexión sobre VNet, así se obtendrá una conexión exitosa.

Prueba de conexión de linked service con private endpoint
Prueba de conexión exitosa utilizando con private endpoint

Conclusiones

Al aplicar las políticas aplicadas sobre el servidor de base de datos, este quedará inaccesible desde cualquier IP, incluso será imposible acceder utilizando el “Query editor” integrado del portal de Azure.

La comunicación segura sobre redes virtuales es posible implementando configuraciones y políticas correctamente sobre los servicios.

Finalmente, recomiendo ver el siguiente articulo, en el cual se demuestra como ocultar datos sensibles en las bases de datos de Azure SQL.

You May Also Like