Zonas de disponibilidad de Azure: Permiten tener alta disponibilidad
Centros de Datos de Azure
Puntos de presencia de Azure (PoP)
https://datacenters.microsoft.com/globe/explore/
Regiones
Imagina configurar centros de datos en diferentes regiones de todo el mundo.
¿Sería fácil? NO
(Solución) Azure ofrece más de 60 regiones en todo el mundo
Expandiéndose cada año
Una región es una ubicación geográfica específica para alojar tus recursos.
Las ventajas que aportan las regiones son:
Alta disponibilidad
Baja latencia
Cumplimiento de las regulaciones gubernamentales
¿Cómo elegir una región de Azure?
Cumplimiento de los requisitos legales y de gobernanza de datos: los datos nunca salen de una región sin tu permiso explícito
Proximidad a los clientes: latencia reducida
Servicios disponibles en una región: los nuevos servicios y las nuevas funciones no están disponibles en todas las regiones
Precios: los precios varían de una región a otra y son transparentes en la página de precios del servicio.
Regiones emparejadas
Cada región está emparejada con otra región en el mismo límite geopolítico para proporcionar resistencia si se produce un error catastrófico en la región
Los objetivos de las regiones emparejadas son:
Mejorar la resiliencia y disponibilidad
Asegurar la continuidad del negocio y la recuperación ante desastres
Y sus características destacables son:
Separación geográfica para resistir fallos en una amplia región
Actualizaciones secuenciales para minimizar interrupciones
Opción para replicar datos entre regiones emparejadas
Las regiones soberanas de Azure son centros de datos específicamente diseñados para cumplir con los requisitos reglamentarios y de cumplimiento de una jurisdicción o nación particular.
Microsoft no las administra necesariamente y podrían estar restringidas a determinados tipos de clientes.
Los objetivos de las regiones soberanas son:
Garantizar la soberanía de los datos y la privacidad.
Satisfacer necesidades reglamentarias locales.
Y sus características destacables son:
Operación y residencia de datos dentro de fronteras específicas
Conexiones de red más aisladas y específicas de la región
Ejemplos: Azure China 21Vianet, Azure Alemania, Azure Government: EE. UU.
Zonas de disponibilidad
¿Cómo lograr una alta disponibilidad en la misma región (o ubicación geográfica)?
Mediante zonas de disponibilidad (AZ)
Cada zona de disponibilidad (AZ) es uno o varios centros de datos discretos con alimentación, red y conectividad redundantes.
Las zonas de disponibilidad de una región están conectadas mediante un enlace de baja latencia.
Están separadas unas de otras, de modo que están aisladas de las catástrofes.
NOTA: No todas las regiones de Azure tienen zonas de disponibilidad.
Puntos de Presencia (PoP)
Un punto de presencia (PoP) se refiere a un punto físico de interconexión entre diferentes redes que facilita la entrega rápida y confiable de contenido y servicios a los usuarios finales.
Las ventajas del uso de puntos de presencia (PoPs) son:
Rendimiento mejorado: Reducción de la latencia y optimización de la velocidad de conexión.
Expansión global: Azure tiene PoPs en varias localidades alrededor del mundo, facilitando la entrega local a usuarios globales.
Si una empresa en América Latina tiene usuarios en China, mediante los PoPs, Azure puede entregar el contenido desde un punto más cercano en China, reduciendo la latencia y mejorando la experiencia del usuario.
Infraestructura de Azure: Desafío + Soluciones
Imagina que tu aplicación está desplegada en un centro de datos en Londres.
¿Cuáles serían los desafíos?
Desafío 1: Acceso lento para usuarios de otras partes del mundo (alta latencia)
Desafío 2: ¿Qué sucede si el centro de datos falla?
Tu aplicación se cae (baja disponibilidad).
Múltiples centros de datos
Agreguemos otro centro de datos en Londres. Con esto resolvemos el reto de la baja disponibilidad.
¿Cuáles son los retos?
Desafío 1: el acceso de los usuarios en otras partes del mundo es lento.
Desafío 2 (resuelto): ¿Qué sucede si uno de los centros de datos falla?
Tus aplicaciones aún están disponibles desde otros centros de datos.
Desafío 3: ¿Qué pasa si toda el área de Londres no está disponible?
La aplicación se bloquea.
Múltiples regiones
Agreguemos una nueva región: Mumbai. ¿Cuáles son los retos?
Desafío 1 (parcialmente resuelto): Acceso lento para usuarios de otras partes del mundo.
Esto se puede resolver agregando implementaciones para su aplicación en otras regiones.
Desafío 2 (resuelto): ¿Qué sucede si el centro de datos falla?
La aplicación todavía está en línea en otros centros de datos.
Desafío 3 (resuelto): ¿Qué pasa si toda el área de Londres no está disponible?
La aplicación es proporcionada por Mumbai.
Recursos y grupos de Recursos
Un recurso es un elemento administrable que está disponible a través de Azure. Algunos ejemplos de recursos son:
Máquinas virtuales
Aplicaciones web
Bases de datos
Redes virtuales
Los grupos de recursos, las suscripciones, los grupos de administración y las etiquetas también son ejemplos de recursos.
Un grupo de recursos es un contenedor que almacena los recursos relacionados con una solución de Azure. Puede incluir todos los recursos de la solución o solo aquellos que se desean administrar como grupo. Se recomienda agregar recursos que compartan el mismo ciclo de vida al mismo grupo de recursos para que los pueda implementar, actualizar y eliminar con facilidad como un grupo.
NOTA: Los grupos de recursos almacenan metadatos acerca de los recursos.
Suscripciones
Las suscripciones permiten organizar y controlar el acceso, costos y facturación.
Son muy útiles para separar diferentes unidades de trabajo, proyectos o entornos
prod, dev, test
Cada suscripción tiene límites en la cantidad y tipo de recursos que puedes crear
Se factura por suscripción, permitiendo un seguimiento detallado de los costos
Mediante el control de acceso se define quién tiene acceso y qué pueden hacer con los recursos dentro de la suscripción
NOTA: Es posible tener múltiples suscripciones bajo una sola cuenta de Azure
Grupos de Administración
Un grupo de administración es una estructura jerárquica que permite organizar y administrar múltiples suscripciones de Azure.
Las características clave de los grupos de administración son:
Organiza suscripciones en una estructura jerárquica (en árbol)
Aplica políticas y iniciativas consistentemente a todas las suscripciones dentro de un grupo
Establece roles y permisos a nivel de grupo para administrar el acceso a las suscripciones y recursos de manera unificada.
Casos de uso:
Diferentes departamentos en una organización
Distintos entornos (prod, dev, test)
Servicio Globales y Regionales
Azure cuenta con servicios globales: Disponible en todas las regiones de Azure o múltiples regiones. Ofrecen una experiencia uniforme sin importar la ubicación del usuario. No está enlazada a ninguna ubicación.
Azure Active Directory (Gestión de identidad y acceso)
Azure Traffic Manager (Balanceador de tráfico DNS)
La mayoría de los servicios de Azure son de ámbito regional: Ubicado en una ubicación geográfica específica.
Vista general de las Insfraestructuras tradicionales
Infraestructuras tradicionales
Infraestructura física
Centro de datos en la oficina (Datacenter)
Problemas con el enfoque tradicional de las IT
Pagar el alquiler del centro de datos
Pagar el suministro eléctrico, la refrigeración y el mantenimiento
Añadir y sustituir el hardware lleva tiempo
El escalado es limitado
Contratar un equipo 24/7 para supervisar la infraestructura
¿Cómo hacer frente a las cátástrofes (terremoto, apagón, incendio,...)?
¿Podemos externalizar todo esto? Llevar la infraestructura tradicional a algo más para resolver estos problemas.
Cloud Computing es la solución a todo estos problemas.
¿Qué es Cloud Computing?
El Cloud Computing (Computación en la nube) es el suministro bajo demanda de potencia de cálculo, almacenamiento en bases de datos, aplicaciones y otros recursos informáticos.
A través de una plataforma de servicios en el cloud con precios de pago por uso.
Puedes aprovisionar exactamente el tipo y el tamaño de los recursos informáticos que necesitas.
Puedes acceder a tantos recursos como necesites, casi al instante.
Forma sencilla de acceder a servidores, almacenamiento, bases de datos y un conjunto de servicios de aplicaciones.
Microsoft Azure posee y mantiene el hardware conectado a la red necesario para estos servicios de aplicaciones, mientras que aprovisionas y utilizas lo que necesitas a través de una aplicación web.
Modelos de despliegue en el Cloud
Cloud privado: Servicios en el cloud utilizados por una sola organización, no expuestos al público.
Control total
Seguridad para aplicaciones sensibles
Satisfacer necesidades empresariales específicas
Cloud público: Recursos en el cloud que son propiedad de un proveedor de servicios en el
cloud y son operados por él, y que se suministran a través de Internet.
Seis ventajas de la computación en el cloud
Cloud híbrido: Mantener algunos servidores en las instalaciones y extiende algunas capacidades al cloud.
Control de los activos sensibles en tu infraestructura privada
Flexibilidad y rentabilidad del cloud público
5 Características del Cloud Computing
Autoservicio bajo demanda (on-demand):
Los usuarios pueden aprovisionar recursos y utilizarlos sin interacción humana del proveedor de servicios.
Amplio acceso a la red:
Los recursos están disponibles a través de la red, y pueden ser accedidos por diversas plataformas de clientes.
Alquiler múltiple y agrupación de recursos:
Varios clientes pueden compartir la misma infraestructura y aplicaciones con seguridad y privacidad
Múltiples clientes reciben servicio desde los mismos recursos físicos
Rápida elasticidad y escalabilidad:
Adquirir y disponer de recursos de forma automática y rápida cuando sea necesario
Escala rápida y fácilmente en función de la demanda
Servicio medido:
El uso se mide, los usuarios pagan correctamente por lo que han utilizado
6 Ventajas del Cloud Computing
Cambia el gasto de capital (CAPEX) por el gasto operativo (OPEX)
Pagar bajo demanda: no poseer el hardware
Reducción del coste total de propiedad (TCO) y de los gastos operativos (OPEX)
Te beneficias de economías de escala masivas
Los precios se reducen ya que Azure es más eficiente debido a la gran escala
Deja de adivinar la capacidad
Escala basada en el uso real medido
Aumentar la velocidad y la agilidad
Centros de datos más cerca de mis clientes
Respuestas más rápidas
Deja de gastar dinero en el funcionamiento y el mantenimiento de los centros
de datos
Se global en minutos: aprovecha la infraestructura global de Azure
Problemas resueltos por el Cloud Computing
Flexibilidad: cambia los tipos de recursos cuando sea necesario
Rentabilidad: paga por lo que utilizas
Escalabilidad: permite acomodar mayores cargas reforzando el hardware o añadiendo nodos adicionales.
Elasticidad: capacidad de reducir y aumentar la escala cuando sea necesario
Alta disponibilidad y tolerancia a los fallos: construye a través de los centros de datos (data centers).
Agilidad: desarrollar, testear y lanzar rápidamente aplicaciones de software
Diferentes tipos de Cloud Computing
Infraestructura como servicio (IaaS)
Proporciona bloques de construcción para la IT en el cloud
Proporciona redes, ordenadores y espacio de almacenamiento de datos
Máximo nivel de flexibilidad
Fácil paralelismo con la IT tradicional en las instalaciones
Ejemplos:
Azure Virtual Machines (en Azure)
Amazon EC2 (AWS), GCP, Rackspace, Digital Ocean, Linode
Plataforma como servicio (PaaS)
Elimina la necesidad de que tu organización gestione la infraestructura subyacente
Se centra en el despliegue y la gestión de tus aplicaciones
Ejemplos:
Azure App Service (en Azure)
Elastic Beanstalk (AWS), Heroku, Google App Engine (GCP)
Software como servicio (SaaS)
Producto completo que es ejecutado y gestionado por el proveedor de servicios
Ejemplos:
Varios servicios de Azure, como Azure Cognitive Services para Machine Learning.
Google Workspace (Gmail), Dropbox, Zoom
Visión general de los precios del Cloud
Azure tiene 3 fundamentos de precios, siguiendo el modelo de precios de pago por uso:
Computación:
Pagar por el tiempo de computación
Funciones, maquinas virtuales, contenedores
Almacenamiento:
Paga por los datos almacenados en el Cloud
Transferencia de datos FUERA del Cloud:
La transferencia de datos hacia adentro es gratuita
Resuelve el costoso problema de las IT tradicionales
Te proporcionan servidores y servicios que puedes utilizar bajo demanda y escalar fácilmente
Azure ha revolucionado la IT a lo largo del tiempo
Azure impulsa algunos de los mayores sitios web del mundo: HP, Starbucks, LinkedIn, Walmart, Adobe, etc.
Números de Azure
En 2024, Azure ha tenido 245.122 millones de dólares en ingresos
Azure en 2024 ha crecido un 15.67% (en un año)
Azure ha tenido el mayor crecimiento los últimos 5 años
Amazon Web Services (AWS) sigue liderando el mercado
Casos de uso del Cloud de Azure
Azure permite crear aplicaciones sofisticadas y escalables
Aplicable a un conjunto diverso de industrias
Los casos de uso incluyen
IT para empresas
Copias de seguridad y almacenamiento
Alojamiento de sitios web, aplicaciones móviles y sociales
Inteligencia Artificial y Machine Learning
Pilares fundamentales del Cloud
Gobernanza: Herramientas y prácticas que permiten a las organizaciones gestionar y supervisar sus recursos en la nube, asegurando el cumplimiento de políticas y estándares
Confiabilidad: Garantiza un funcionamiento estable y constante del servicio, reduciendo fallos y maximizando el tiempo de actividad de las aplicaciones y datos
Previsibilidad (Predicción): Capacidades analíticas que permiten anticipar el comportamiento de los recursos y cargas de trabajo, facilitando la planificación y optimización de recursos
Manejabilidad: Facilita el monitoreo, la gestión y la administración de recursos en la nube, proporcionando herramientas intuitivas para un control simplificado
Seguridad: Protección integral de datos, aplicaciones y redes con soluciones avanzadas que detectan y responden a amenazas, asegurando la integridad y privacidad de la información
Aprobar la certificación Microsoft Azure AZ-900 antes del 31 de mayo de 2025, completando al menos el 90% del material de estudio disponible y logrando una puntuación mínima de 700 puntos en el examen.
Hoy en dia las organizaciones usan proveedores de identidad.
Una vez que el proveedor de identidad te redirecciona a tu aplicación puedes seguir trabajando sin hacer uso del usuario y password sino con los tokens de acceso e identificación que entregó el proveedor de identidad.
Hay varios proveedores de identidad:
Azure AD
Google
Facebook
IdentiyServe 4
WCO2 Identiy Server
Keycloak
Estos tres últimos puedes instalar de manera standalone.
ASP.NET Identity Core te provee un gestor de identidad (no tan robusto).
Keycloak
Es un servidor de autenticación y gestión de identidad de código abierto que proporciona autenticación de usuarios con gran variedad de características.
Fue desarrollado por Red Hat y es ampliamente utilizado para la autenticación en aplicaciones modernas.
Soporta protocolos estándar de la industria como OpenID Connect, OAuth 2.0, JWT, SAML entre otros. Esto significa que puede integrarse con una gran cantidad de aplicaciones y servicvios sin necesidad de implementar su propia solución de autenticación.
Carecterísticas de Keycloak
Instalación y Configuración
Sesión 4: 3h51m30s
Agregar archivo de configuración Configuration.txt en la siguiente ruta: app/Backend/Infrastructure/Security/keycloak y seguir los pasos definidos en dicho archivo.
Crear base de datos llamada "keycloak" en SQL Server
Instalar la última version de keycloak: https://www.keycloak.org. Lo agregamos en "docker-compose.yml".
Levantamos servidor de keycloak: docker compose up -d keycloak
Acceder al servidor keycload "http://localhost:8081" con user/pass definido (admin/Password1234)
Crear un "realm" sería como un entorno de la aplicación. Real name: "fullstack"
Crear un cliente para que consuma nuestro library.service.
...
Test keycloak
POST http://localhost:8081/realms/fullstack/protocol/openid-connect/token
Para implementar los proceso de autenticación y autorización vamos a utilizar Oauth2, OpenID Connect y JWT.
OAuth 2.0 (Token de acceso)
OAuth 2.0 (Open Authorization) es un protocolo de autorización que permite a una aplicación obtener acceso limitado a los recursos de un usuario en otro servicio web.
Protocolo que permite a los usuarios compartir su información almacenada en un sitio web con otro sitio web sin necesidad de proporcionar sus credenciales de inicio de sesion.
En lugar de compartir contraseñas, las aplicaciones obtienen tokens de acceso que se pueden ser utilizados para acceder a ciertos recursos en nombre del usuario. Estos tokens de acceso son emitidos por un servidor de autorización después de que el usuario ha proporcionado su consentimiento.
OAuth 2.0 es ampliamente utilizado en la web por servicios como Google, Facebook, Twitter y Microsoft para permitir el uso de funcionalidades de sus plataformas en otras aplicaciones. Por ejemplo, una aplicación puede utilizar OAuth 2.0 para obtener permiso para acceder a los datos de tu calendario en Google, o para publicar actualizaciones de estado en tu nombre en Twitter.
Es importante destacar que OAuth 2.0 es un protocolo de autorización, no de autenticación. Aunque a menudo se utiliza en combinación con protocolos de autenticación como OpenID Connect, OAuth 2.0 por sí solo no proporciona formas de autenticar la identidad de los usuarios. La autenticación la hace un proveedor.
Flujos de concesión Oauth2
Authorization Code Grant: Este es flujo más común y se utiliza para aplicaciones que se ejecutan en un servidor web. El proceso implica redirigir al usuario a un servidor de autorización, que luego redirige de vuelta a la aplicación con un código de autorización. Este código se intercambia por un token de acceso. Se usa en aplicaciones web o mobile.
Implicit Grant: Este flujo fue diseñado para aplicaciones basadas en JavaScript que se ejecutan en el navegador del usuario. En lugar de recibir un código de autorización que debe ser intercambiado por un token de acceso, la aplicación recibe directamente el token de acceso. Este flujo se considera menos seguro y ya no se recomienda su uso.
Resource Owner Password Credentials: Este flujo permiete a la aplicación recoger las credenciales del usaurio (nombre de uusario y contraseña) y usarlas para obtener un token de acceso directamente. Este flujo solo recomienda para aplicaciones de confianza, como las creadas por el mismo servicio que proporciona la API. Cuando quieres implementar tu propio Login (usualmente para aplicaciones antiguas).
Client Credentials Grant: Este flujo es aplicaciones que acceden a su propio servicio, no en nombre de un usuario. La aplicación utiliza sus propias credenciales para obtener un token de acceso. Se usa para que una aplicación acceda a otra aplicación.
OpenID Connect (Token de identificación)
OpenID Connect es un estándar de autenticación que se construye sobre el protocolo OAuth 2.0. Mientras que OAuth 2.0 se utiliza para la autorización, OpenID Connect introduce el concepto de un ID token, que permite a la aplicación cliente verificar la identidad del usuario.
El ID token contiene información sobre el usuario. Esta información puede incluir el nombre de usuario, la dirección de correo electrónico, la imagen de perfil y otros datos que el usuario ha acordado compartir.
OpenID Connect genera un token de identificación. No hay nada de permisos, solo me identifico.
En vez de estar usando mis credenciales para realizar una operación, OpenID me entrega una llave (un token) que va a representar mi usuario y contraseña. La particularidad de este token es que tiene un tiempo de vida.
OpenID Connect también introduce un nuevo endpoint, el endpoint de userinfo, que la aplicación cliente puede utilizar para obener más información sobre el usuario una vez que ha obtenido un token de acceso.
OpenID Connect se utiliza para autenticar al usuario y proporcionar información sobre su identidad a la aplicación. Esto lo convierte en una solución ideal para el inicio de sesión único (SSO), donde un usuario puede iniciar sesión en varias aplicaciones con una sola cuenta.
OpenID Connect utiliza OAuth para la generación del token de acceso.
Authorization Code Flow. Este el flujo que tenemos que usar para autenticar todas nuestras aplicaciones.
Implicit Flow. Este flujo se considera menos seguro para la autenticación y ya no se recomienda su uso.
Hybrid Flow.
Tokens
Un token es una cadena de caracteres generada por un servidor en respuesta a una solicitud válidad de autenticación. Este token representa la identidad del usuario (token de identificación) y los permisos de acceso (token de acceso), y se utiliza para acceder a recursos protegidos.
Un token es como un pase de acceso digital que permite al usuario acceder a ciertos recursos y realizar ciertas operaciones. Es una parte esencial de los sistemas de autenticación y autorización modernos.
Características de un token
Identificación del usuario: Un token representa a un usuario específico. Contiene información (llamada "claims" o afirmaciones) que identifica al usuario ante el servidor. Esta información puede incluir el ID del usuario, el nombre de usuario, el correo electrónico y otros datos.
Autorización: Además de identificar al usuario, un token también puede contener información sobre los permisos del usuario. Esto permite al servidor determinar qué recursos puede acceder el usuario y qué operaciones puede realizar.
Seguridad: Son emitidos por un servidor de autorización después de que el usuario se ha autenticado correctamente. Los tokens pueden ser firmados digitalmente para garantizar su integridad y autenticidad, y también pueden ser cifrados para proteger la información que contienen.
Formato: Los tokens pueden estar en varios formatos, como JWT (JSON Web Tokens), SAML (Security Assertion Markup Language), tokens opacos y PASETO (Platform-Agnostic Security Tokens). Cada formato tiene sus propias características y usos.
Vida útil: Los tokens tienen una vida limitada. Una vez que un token ha expirado, ya no puede ser utilizado para acceder a recursos, y el usuario debe autenticarse de nuevo para obtener un nuevo token.
Formatos de un token
¿Qué es un JWT?
JSON Web Token es un estándar abierto de la industria que se usa para compartir información entre dos entidades, generalmente un cliente (como el front-end de su aplicación) y un servidor (el backend de su aplicación).
Contiene objetos JSON que tiene la información que necesita ser compartida. Cada JWT se firma mediante criptografía (hashing) para garantizar qaue el contenido JSON (también conocido como notificaciones JWT) no pueda ser alterado por el cliente o una parte malintencionada.
Estructura de un JWT
Un JWT contiene tres partes:
Cabecera: Consta de dos partes:
El algoritmo de firma que se está utilizando.
El tipo de token, que, en este caso, es principalmente "JWT".
Carga útil: la carga contiene las notificaciones o el objeto JSON.
Firma: Una cadena que se genera a través de un algoritmo criptográfico que se puede utilizar para verificar la integridad de la carga útil JSON.
Cuando hablamos de seguridad implica que tendremos datos reservados en el que no todos tengan acceso. Habrán servicios (o componentes) que necesitarán acceder a dichos datos además de comunicarse entre sí de manera segura.