Despliegue de un sitio seguro y resistente con Custom Domain utilizando Azure Application Gateway y autenticación en una Web App

Introducción:

En la era digital actual, garantizar la seguridad y la resiliencia de los sitios web es fundamental. Cuando desplegamos una aplicación en la nube, como en Azure, debemos prestar especial atención a la configuración de autenticación de nuestra Web App para asegurarnos de que esté protegida contra posibles amenazas y pueda mantenerse operativa incluso en condiciones adversas.

En este artículo, exploraremos cómo modificar la configuración de autenticación en una Web App utilizando Azure CLI. Nos centraremos en ajustar la configuración para optimizar la seguridad y la resiliencia de nuestro sitio web, preparándolo para un despliegue seguro y resistente con un dominio personalizado en Azure.

Configuración Application Gateway:

En esta guía, no profundizaremos en la configuración detallada de un Application Gateway. Sin embargo, si deseas explorar más a fondo esta configuración, te recomendamos visitar el siguiente enlace para acceder a recursos adicionales: https://learn.microsoft.com/es-es/azure/application-gateway/configuration-overview

Backend Pool:

El Backend Pool define los servidores o destinos a los que el Application Gateway enviará el tráfico recibido. Para configurarlo:

  • name: Asigna un nombre descriptivo para identificar el grupo de servidores.
  • Target type: configuramos IP address or FQDN y la webapp 

Backend Settings:

La configuración del servidor de respaldo define cómo se comunica el Application Gateway con los servidores de destino. Incluye opciones como el protocolo, el puerto y la sonda de salud.

  • Protocolo: HTTP o HTTPS, dependiendo de cómo esté configurada la Web App.
  • Puerto: El puerto en el que escucha la Web App.
  • Probe: Una URL que el Application Gateway utilizará para verificar el estado de salud de los servidores. Si la sonda de salud falla, el servidor se marca como no disponible.

Listener:

El Listener define cómo el Application Gateway escucha el tráfico entrante. Especifica los detalles del puerto y del protocolo.

  • Nombre del Listener: Proporciona un nombre descriptivo para el oyente.
  • Protocolo y Puerto: Especifica si el tráfico entrante es HTTP o HTTPS, y en qué puerto debe escuchar el Application Gateway.
  • Certificado: Configuramos el certificado

Rules:

Las reglas definen cómo el Application Gateway redirige el tráfico entrante a los destinos específicos basados en ciertos criterios, como la URL o el encabezado del host.

  • Nombre de la Regla: Asigna un nombre descriptivo para identificar la regla.
  • Condiciones: Define las condiciones que deben cumplirse para que se aplique la regla, como la ruta URL o el host.
  • Acción: Especifica la acción que se debe tomar cuando se cumple una condición, como redirigir el tráfico al Backend Pool correspondiente.

Health Probes:

Las sondas de salud se utilizan para verificar el estado de los servidores en el Backend Pool y garantizar que el tráfico se dirija solo a los servidores sanos.

  • Nombre de la Sonda de Salud: Proporciona un nombre descriptivo para identificar la sonda de salud.
  • Protocolo, Puerto y Ruta: Especifica el protocolo, el puerto y la ruta de la URL a la que se enviarán las solicitudes de sondeo.
  • Intervalo de Sondeo: Define con qué frecuencia se deben enviar las solicitudes de sondeo.
  • Criterios de Éxito: Especifica qué respuesta de los servidores se considera como un estado de salud «sano».

Configurar la Autenticación en la Web App

  1. Seleccionar la Web App:
  2. Configurar la autenticación:
    • En el menú de la Web App, busca y haz clic en «Authentication / Autorización».
    • Haz clic en «Agregar identidad proveída».
    • Selecciona «Azure Active Directory» como proveedor.

  1. Configurar el proveedor de Azure AD:
    • Completa los campos requeridos con la información de Azure AD que obtuviste anteriormente:
      • ID de Cliente (Cliente)
      • ID de Inquilino de Azure AD
      • URL de inicio de sesión (puede ser la URL de tu aplicación)
      • URL de redirección posterior al inicio de sesión (generalmente, la URL de tu aplicación más «/signin-oidc»)

La configuración queda de la siguiente forma:

Una vez configurado el proveedor, procedemos a acceder al Service Principal. En la sección de «Redirect URIs», añadimos la URL correspondiente.

Modificar la Configuración de Autenticación en una Web App con Azure CLI

Al desplegar un sitio seguro y resiliente con un custom domain en Azure, es esencial ajustar la configuración de autenticación de la Web App para garantizar la seguridad y el rendimiento óptimo dado que si realizará un redirect al FQDN: *.azurewebsites.net

Guardando la Configuración Actual

Esto nos servirá como referencia y nos permitirá realizar cambios específicos según nuestras necesidades. Podemos hacerlo fácilmente utilizando el comando az rest de Azure CLI:

az rest --uri /subscriptions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/resourceGroups/dev-RG-01/providers/Microsoft.Web/sites/dev-redorbita-app-front-01/config/authsettingsV2?api-version=2020-09-01 --method get > resultado.json

Modificando la Configuración de Autenticación

Una vez que hayamos guardado el archivo de configuración de la Webapp, abrimos el archivo y nos dirigimos a las secciones de configuración httpSettings y azureActiveDirectory. Verificamos que estén configuradas de la siguiente manera. Si no encontramos esta configuración, es crucial realizarla:

"httpSettings": {
  "forwardProxy": {
    "convention": "Custom",
    "customHostHeaderName": "X-Original-Host"
  }
},
"azureActiveDirectory": {
  "enabled": true,
  "isAutoProvisioned": true,
  "login": {
    "disableWWWAuthenticate": false
  }
}

Aplicando los Cambios

Una vez que hayamos realizado las modificaciones necesarias en la configuración, podemos aplicarlas a nuestra Web App utilizando nuevamente el comando az rest, esta vez especificando el método put para actualizar la configuración:

az rest --uri /subscriptions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/resourceGroups/dev-RG-01/providers/Microsoft.Web/sites/dev-redorbita-app-front-01/config/authsettingsV2?api-version=2020-09-01 --method put --body @resultado.json

Con estos cambios aplicados, nuestra Web App estará lista para un despliegue seguro y resistente con un dominio personalizado en Azure.

Más información: https://azure.github.io/AppService/2021/03/26/Secure-resilient-site-with-custom-domain.html

En caso de que no lo queramos hacer mediante linea de comandos, esta configuración la podemos cambiar mediante: https://resources.azure.com/

Si nuestra infraestructura está gestionada mediante Terraform y queremos configurar el proxy forwarder, podemos integrarlo utilizando el módulo auth_settings_v2. A continuación, se muestra un ejemplo:

resource "azurerm_linux_web_app" "app" {
  name                      = local.app_name
  resource_group_name       = data.terraform_remote_state.rg.outputs.name
  location                  = var.region
  service_plan_id           = data.terraform_remote_state.appServicePlan.outputs.app_service_plan_id
  virtual_network_subnet_id = data.terraform_remote_state.sbnInt.outputs.sbn_vint_id

  auth_settings_v2 {
    forward_proxy_convention              = "Custom"
    forward_proxy_custom_host_header_name = "X-Original-Host"
  }
}
:wq!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *