Fabric Notebooks obtener datos por red virtual con ip รบnico
Siempre hay un detalle que puede complicar un proyecto de ingenierรญa de datos, especialmente cuando tenemos que trabajar con APIs limitadas o hay polรญticas de seguridad que requieren que los datos viajen por canales seguros.
En este artรญculo te mostramos como podemos acceder desde Fabric Notebooks a un origen de API por un canal seguro e IP pรบblica รบnica.
Si hay algo en lo que estamos de acuerdo es que conectarse a una API compleja siempre serรก mรกs robusto y flexible hacerlo por cรณdigo. Si estamos en Fabric, probablemente elijamos usar notebooks por sobre Pipelines. Los Pipelines estรกn buenรญsimos, pero si de creaciรณn dinรกmica de token o jwt trata, se puede complicar.
Normalmente, cuando necesitamos canalizar Fabric por un canal seguro podemos usar la nueva feature de VNet Gateway. Sin embargo, ese canal solo funciona para los รญtems Dataflow Gen2, Fabric data pipelines, Fabric Copy Job, Fabric Mirroring, Power BI semantic models y Power BI paginated reports. Fabric pensรฉ que siempre necesitarรญamos obtener datos desde esos รญtems. Nosotros sabemos que obtener datos desde Notebooks puede ocurrir y quedamos frenados.
Para requerimientos de canales de seguridad dedicados por redes privadas, no podrรญamos ir por esa vรญa.
Por otro lado, algunos orรญgenes podrรญan dejarnos cargar las IPs pรบblicas anunciadas por Microsoft sobre sus servicios. Lametablemente, no siempre es asรญ. Fabric Notebooks puede salir por powerbi o por azure cloud. Lo que genera aproximadamente 150 rangos de IP y mรกs de 600 mil IPs pรบblicas. La carga de estas excepciones es inviable para algunos orรญgenes de datos.
ยฟCรณmo podemos entonces salir a conectarnos en canal รบnico y seguro? La realidad es que hoy no se puede 100% porque eso requerirรญa que Fabric Notebooks tengan configuraciones de redes privadas. A modo de alternativa, podemos canalizar que Fabric acceda a otro recurso que si esta configurado en una red. En este ejemplo tenemos una API de acceso restringido a 10 IPs pรบblicas. Para que Fabric Notebooks pueda llegar, necesitaremos ayuda de otros recursos de azure. Primero un proxy que garantice una IP pรบblica รบnica. Segundo una red de privada de comunicaciรณn. Tercero un puente que ejecute las llamadas a la API y Fabric pueda comunicarse. La soluciรณn serรญa como muestra la siguiente imagen:
Azure NAT Gateway: es un servicio de traducciรณn de direcciones de red (NAT) totalmente administrado y altamente resistente. Use Azure NAT Gateway para permitir que todas las instancias de una subred se conecten de salida a Internet mientras permanecen completamente privadas
Virtual Networks: permite a los recursos de Azure, como mรกquinas virtuales (VM) comunicarse de forma segura entre sรญ, Internet y redes locales
Azure Functions: es una soluciรณn sin servidor que le permite crear aplicaciones sรณlidas mientras usa menos cรณdigo y con menos infraestructura y menores costos. En lugar de preocuparse de implementar y mantener servidores, puede usar la infraestructura en la nube para proporcionar todos los recursos actualizados necesarios para mantener sus aplicaciones en funcionamiento
Comenzamos creando una red virtual y en su configuraciรณn una subred:
Luego se asociarรก el NAT. Tambiรฉn vamos a ir a Delegaciones para delegar a la subred el servicio de Apps de Azure:
Ahora creamos un Azure NAT Gateway asegurรกndonos que en Outbound IP creemos una IP pรบblica. La clave aquรญ serรก asociar la red antes creada en networking:
La asociaciรณn deberรญa asignarle a la red la salida nat automรกticamente. Podemos validarlo buscando nuestra red y chequeando sus opciones:
Ahora si podemos continuar con nuestra Azure function. Lo primero serรก saber que solo los planes premium, app service flex consumption van a permitir la salida por red virtual. En nuestro caso iremos por flex consumption porque sabemos que el consumo serรก bastante reducido. Lo importante aquรญ es la secciรณn de networking para seleccionar nuestra red virtual y su subred:
Por defecto, solo el trรกfico hacia IPs privadas va por la VNet. Para que el trรกfico hacia internet (tu API externa) use el NAT Gateway, debes configurar la aplicaciรณn para que todo el trรกfico salga por la red virtual.
Esto lo vamos a configurar desde el azure functions. Buscamos el menรบ de configuraciรณn y las variables de entorno para configurar la siguiente:
WEBSITE_VNET_ROUTE_ALL = 1
El aplicar reiniciarรก la Function App para que tome efecto.
No vamos a explicar como se hace una Azure Function. Para ello puede leer la documentaciรณn de Microsoft. Pero si podemos mostrar que para probar podemos hacer un muy simple ejemplo con Python que tiene el siguiente cรณdigo:
A la derecha tenemos los requests para llamar a la API de Azure Functions y el cรณdigo solo hace un request a la api de ipify que devuelve la ip que la estรก consultando.
Podemos probarlo ejecutando un request de la azure function super sencillo para ver que la IP que devuelve:
Asรญ comprobamos que coincide con nuestra IP generada en nuestro NAT Gateway:
De este modo hemos generado un tรบnel para que nuestro Fabric Notebook viajen a buscar datos por una red virtual controlada y segura que sale por una IP รบnica. ยฟPodrรญamos haber usado otro recurso en lugar de azure functions? Si. Podrรญamos usar Azure Logic Apps o cรณdigo en un App Service Plan. Elegรญ functions por su free tier y familiaridad de uso. Ademรกs, que serรญa mรกs prรกctico tener ahรญ una funciรณn que genere los requests de forma genรฉrica los llamemos desde un notebook.
Espero que les haya servido para conocer un poco mรกs sobre redes, seguridad y obtener datos con Fabric notebooks.









