Tutorial: Establecimiento del acceso a un sitio privado de Azure Functions

En este tutorial se muestra cómo habilitar el acceso a un sitio privado con Azure Functions. Mediante el acceso a un sitio privado, puede requerir que el código de la función solo se desencadene desde una red virtual específica.

El acceso a un sitio privado es útil en escenarios en los que es necesario limitar el acceso a la aplicación de funciones a una red virtual específica. Por ejemplo, la aplicación de funciones puede ser aplicable solo a los empleados de una organización específica o a los servicios que se encuentran en la red virtual especificada (por ejemplo, otra función de Azure, una máquina virtual de Azure o un clúster de AKS).

Si una aplicación de funciones necesita acceder a los recursos de Azure dentro de la red virtual o conectarse mediante puntos de conexión de servicio, se necesita la integración de red virtual.

En este tutorial, aprenderá a configurar el acceso a un sitio privado para la aplicación de funciones:

  • Creación de una máquina virtual
  • Creación de un servicio de Azure Bastion
  • Creación de una aplicación de Azure Functions
  • Configuración de un punto de conexión de servicio de red virtual
  • Creación e implementación de una función de Azure
  • Invocación de la función desde fuera y dentro de la red virtual

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Topología

El siguiente diagrama muestra la arquitectura de la solución que se va a crear:

High-level architecture diagram for private site access solution

Requisitos previos

En este tutorial, es importante que comprenda el direccionamiento IP y las subredes. Puede empezar con este artículo que trata los aspectos básicos del direccionamiento y las subredes. Hay muchos más artículos y vídeos disponibles en línea.

Inicio de sesión en Azure Portal

Inicie sesión en Azure Portal.

Creación de una máquina virtual

El primer paso de este tutorial consiste en crear una nueva máquina virtual dentro de una red virtual. La máquina virtual se usará para acceder a la función una vez que se haya restringido el acceso para que solo esté disponible desde dentro de la red virtual.

  1. Seleccione el botón Crear un recurso.

  2. En el campo de búsqueda, escriba Windows Server y seleccione Windows Server en los resultados de la búsqueda.

  3. Seleccione Windows Server 2019 Datacenter en la lista de opciones de Windows Server y presione el botón Crear.

  4. En la pestaña Básico, utilice la configuración de máquina virtual que se especifica en la tabla debajo de la imagen:

    Basics tab for a new Windows VM

    Configuración Valor sugerido Descripción
    Suscripción Su suscripción Suscripción en la que se han creado los recursos.
    Grupo de recursos myResourceGroup Elija el grupo de recursos que contendrá todos los recursos de este tutorial. Usar el mismo grupo de recursos facilita la limpieza de los recursos cuando termine el tutorial.
    Nombre de la máquina virtual myVM El nombre de la máquina virtual debe ser único en el grupo de recursos
    Región (EE. UU.) Centro-norte de EE. UU. Elija una región cerca de usted o cerca de las funciones a las que se va a acceder.
    Puertos de entrada públicos None Seleccione Ninguno para asegurarse de que no hay conectividad de entrada a la máquina virtual desde Internet. El acceso remoto a la máquina virtual se configurará mediante el servicio Azure Bastion.
  5. Elija la pestaña Redes y seleccione Crear nueva para configurar una nueva red virtual.

    Screenshot that shows the

  6. En Crear red virtual, use la configuración de la tabla que aparece debajo de la imagen:

    Create a new virtual network for the new VM

    Configuración Valor sugerido Description
    Nombre myResourceGroup-vnet Puede usar el nombre predeterminado generado para la red virtual.
    Intervalo de direcciones 10.10.0.0/16 Use un rango de dirección único para la red virtual.
    Nombre de subred Tutorial Nombre de la subred.
    Rango de dirección (subred) 10.10.1.0/24 El tamaño de la subred define la cantidad de interfaces que se pueden agregar a la subred. La máquina virtual usa esta subred. Una subred de /24 proporciona 254 direcciones de host.
  7. Seleccione Aceptar para crear la red virtual.

  8. De vuelta en la pestaña Redes, asegúrese de que se ha seleccionado Ninguna para Dirección IP pública.

  9. Elija la pestaña Administración y, a continuación, en Cuenta de almacenamiento de diagnóstico, elija Crear nueva para crear una nueva cuenta de almacenamiento.

  10. Deje los valores predeterminados para las secciones Identidad, Apagado automático y Copia de seguridad.

  11. Seleccione Revisar + crear. Una vez completada la validación, seleccione Crear. El proceso de creación de la máquina virtual tarda unos minutos.

Configuración de Azure Bastion

Azure Bastion es un servicio de Azure totalmente administrado que proporciona acceso seguro mediante RDP y SSH a las máquinas virtuales directamente desde Azure Portal. El uso del servicio Azure Bastion elimina la necesidad de establecer la configuración de red relacionada con el acceso mediante RDP.

  1. En el portal, elija Agregar en la parte superior de la vista de grupo de recursos.

  2. En el campo de búsqueda, escriba Bastion.

  3. Seleccione Bastion en los resultados de la búsqueda.

  4. Seleccione Crear para iniciar el proceso de creación de un nuevo recurso de Azure Bastion. Verá un mensaje de error en la sección Red virtual, dado que todavía no existe una subred AzureBastionSubnet. La subred se crea en los pasos siguientes. Utilice la configuración de la tabla debajo de la imagen:

    Start of creating Azure Bastion

    Configuración Valor sugerido Description
    Nombre myBastion nombre del nuevo recurso de Bastion.
    Región Centro-Norte de EE. UU Elija una región cerca de usted o cerca de otros servicios a los que tendrán acceso las funciones.
    Red virtual myResourceGroup-vnet Red virtual en la que se creará el recurso de Bastion.
    Subred AzureBastionSubnet subred de la red virtual en la que se implementará el nuevo recurso de host de Bastion. Debe crear una subred con el valor de nombre AzureBastionSubnet. Este valor permite a Azure saber en qué subred se deben implementar los recursos de Bastion. Debe usar una subred de al menos /27 o mayor (/27,/26, etc.).

    Nota

    Para obtener una guía paso a paso detallada sobre la creación de un recurso de Azure Bastion, consulte el tutorial Creación de un host de Azure Bastion.

  5. Cree una subred en la que Azure pueda aprovisionar el host de Azure Bastion. Al elegir Administrar la configuración de subred, se abre un nuevo panel en el que puede definir una nueva subred. Elija + Subred para crear una nueva subred.

  6. La subred debe tener el nombre AzureBastionSubnet y el prefijo de subred debe ser al menos /27. Seleccione Aceptar para crear la subred.

    Create subnet for Azure Bastion host

  7. En la página Crear una instancia de Bastion, seleccione la que se acaba de crear, AzureBastionSubnet, en la lista de subredes disponibles.

    Create an Azure Bastion host with specific subnet

  8. Seleccione Revisar y crear. Una vez finalice la validación, seleccione Crear. Se tardará unos minutos en crear el recurso de Azure Bastion.

Creación de una aplicación de Azure Functions

El siguiente paso consiste en crear una aplicación de funciones en Azure con el Plan de consumo. El código de la función se implementará en este recurso más adelante en el tutorial.

  1. En el portal, elija Agregar en la parte superior de la vista de grupo de recursos.

  2. Seleccione Proceso > Aplicación de funciones

  3. En la sección Básico, utilice la configuración de la aplicación de funciones que se especifica en la tabla siguiente.

    Configuración Valor sugerido Descripción
    Grupo de recursos myResourceGroup Elija el grupo de recursos que contendrá todos los recursos de este tutorial. Usar el mismo grupo de recursos para la aplicación de funciones y la máquina virtual facilita la limpieza de los recursos cuando termine el tutorial.
    Nombre de la aplicación de función Nombre único globalmente Nombre que identifica la nueva Function App. Los caracteres válidos son a-z (no se distinguen mayúsculas de minúsculas), 0-9 y -.
    Publicar Código Opción para publicar archivos de código o un contenedor Docker.
    Pila en tiempo de ejecución Lenguaje preferido Elija un tiempo de ejecución que admita su lenguaje de programación de funciones preferido.
    Región Centro-Norte de EE. UU Elija una región cerca de usted o cerca de otros servicios a los que tendrán acceso las funciones.

    Seleccione el botón Siguiente: Hospedaje>.

  4. En la sección Hospedaje, seleccione los valores adecuados de Cuenta de almacenamiento, Sistema operativo y Plan, según se describe en la tabla siguiente.

    Configuración Valor sugerido Descripción
    Cuenta de almacenamiento Nombre único globalmente Cree una cuenta de almacenamiento que use la aplicación de función. Los nombres de las cuentas de almacenamiento deben tener entre 3 y 24 caracteres y solo pueden incluir números y letras en minúscula. También puede usar una cuenta existente que debe cumplir los requisitos de la cuenta de almacenamiento.
    Sistema operativo Sistema operativo preferido Se preselecciona un sistema operativo en función de la selección de pila en tiempo de ejecución, pero puede cambiar esta configuración si es necesario.
    Plan Consumo El Plan de hospedaje determina cómo se escala la aplicación de funciones y los recursos disponibles para cada instancia.
  5. Seleccione Revisar y crear para revisar las selecciones de configuración de la aplicación.

  6. Seleccione Crear para aprovisionar e implementar la aplicación de función.

Configuración de las restricciones de acceso

El siguiente paso consiste en configurar restricciones de acceso para asegurarse de que solo los recursos de la red virtual pueden invocar a la función.

El acceso a un sitio privado se habilita mediante la creación de un punto de conexión de servicio de red virtual de Azure entre la aplicación de funciones y la red virtual especificada. Las restricciones de acceso se implementan mediante puntos de conexión de servicio. Los puntos de conexión de servicio garantizan que solo el tráfico que se origina desde dentro de la red virtual especificada puede acceder al recurso designado. En este caso, el recurso designado es la función de Azure.

  1. Dentro de la aplicación de funciones, seleccione el vínculo Redes en el encabezado de la sección Configuración.

  2. La página Redes es el punto de partida para configurar Azure Front Door, Azure CDN y las restricciones de acceso.

  3. Seleccione Configurar restricciones de acceso para configurar el acceso al sitio privado.

  4. En la página Restricciones de acceso, solo verá la restricción predeterminada. El valor predeterminado no impone restricciones sobre el acceso a la aplicación de funciones. Seleccione Agregar regla para crear una configuración de restricción de acceso al sitio privado.

  5. En el panel Agregar restricción de acceso, proporcione los valores para Nombre, Prioridad y Descripción de la nueva regla.

  6. Seleccione Red virtual en el cuadro desplegable Tipo y, luego, elija la red virtual creada anteriormente y la subred Tutorial.

    Nota

    La habilitación del punto de conexión de servicio puede tardar varios minutos.

  7. La página Restricciones de acceso ahora muestra que hay una nueva restricción. Puede que transcurran algunos segundos antes de que el estado del punto de conexión cambie a Habilitado, tras pasar por Deshabilitado y Aprovisionando.

    Importante

    Cada aplicación de funciones tiene un sitio de Herramientas avanzadas (Kudu) que se usa para administrar las implementaciones de la aplicación de funciones. Al sitio se accede mediante una dirección URL como: <FUNCTION_APP_NAME>.scm.azurewebsites.net. Habilitar las restricciones de acceso en el sitio de Kudu impide la implementación del código de proyecto desde una estación de trabajo de desarrollador local, y se necesita entonces un agente dentro de la red virtual para realizar la implementación.

Acceso a la aplicación de funciones

  1. Vuelva a la aplicación de funciones creada anteriormente. En la sección Información general, copie la dirección URL.

    Get the Function app URL

    Si intenta acceder ahora a la aplicación de funciones desde el equipo que está fuera de la red virtual, recibirá una página HTTP 403 que indica que se prohíbe el acceso.

  2. Vuelva al grupo de recursos y seleccione la máquina virtual creada anteriormente. Para acceder al sitio desde la máquina virtual, necesitará conectarse a esta mediante el servicio Azure Bastion.

  3. Seleccione Conectar y, luego, elija Bastion.

  4. Proporcione el nombre de usuario y la contraseña necesarios para iniciar sesión en la máquina virtual.

  5. Seleccione Conectar. Aparecerá una nueva ventana del explorador para que pueda interactuar con la máquina virtual. Dado que esta máquina virtual tiene acceso al sitio mediante una red virtual, es posible acceder al sitio desde el explorador web de la máquina virtual. Aunque el sitio solo es accesible desde dentro de la red virtual designada, se mantiene una entrada de DNS pública.

Creación de una función

El siguiente paso de este tutorial consiste en crear una función de Azure desencadenada por HTTP. La invocación de la función mediante una solicitud HTTP GET o POST debe dar como resultado una respuesta "Hello, {nombre}".

  1. Siga una de estas guías de inicio rápido para crear e implementar la aplicación de Azure Functions.

  2. Al publicar el proyecto de Azure Functions, elija el recurso de la aplicación de funciones que creó anteriormente en este tutorial.

  3. Compruebe que la función está implementada.

    Deployed function in list of functions

Invocación directa de la función

  1. Para probar el acceso a la función, debe copiar la dirección URL de la función. Seleccione la función implementada y, luego, elija Obtener la dirección URL de la función. A continuación, haga clic en el botón Copiar para copiar la dirección URL en el Portapapeles.

    Copy the function URL

  2. Pegue la dirección URL en un explorador web. Si intenta acceder ahora a la aplicación de funciones desde un equipo que está fuera de la red virtual, recibirá una respuesta HTTP 403 que indica que el acceso a la aplicación está prohibido.

Invocación de la función desde la red virtual

El acceso a la función mediante un explorador web (mediante el servicio Azure Bastion) de la máquina virtual configurada en la red virtual da lugar a una respuesta correcta.

Access the Azure Function via Azure Bastion

Limpieza de recursos

En los pasos anteriores, creó recursos de Azure en un grupo de recursos. Si no cree que vaya a necesitar estos recursos en el futuro, puede eliminarlos mediante la eliminación del grupo de recursos.

En el menú de Azure Portal o la página Inicio, seleccione Grupos de recursos. En la página Grupos de recursos, seleccione myResourceGroup.

En la página myResourceGroup, asegúrese de que los recursos enumerados sean los que desea eliminar.

Seleccione Eliminar grupo de recursos, escriba myResourceGroup en el cuadro de texto para confirmar y, después, seleccione Eliminar.

Pasos siguientes