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.
















