Compartir vía


Información general sobre las sesiones dinámicas de Azure Container Apps

Las sesiones dinámicas de Azure Container Apps proporcionan acceso rápido a entornos de espacio aislado seguros que son ideales para ejecutar código o aplicaciones que requieren un aislamiento seguro de otras cargas de trabajo.

Las sesiones tienen los atributos siguientes:

  • Aislamiento sólido: las sesiones están aisladas entre sí y del entorno del host. Cada sesión se ejecuta en su propio espacio aislado de Hyper-V, lo que proporciona seguridad y aislamiento de nivel empresarial. Opcionalmente, puedes habilitar el aislamiento de red para mejorar aún más la seguridad.

  • Acceso sencillo: se accede a las sesiones mediante una API REST. Un identificador único marca cada sesión. Si no existe una sesión con un identificador determinado, se asigna automáticamente una nueva sesión.

  • Totalmente administrado: la plataforma administra completamente el ciclo de vida de una sesión. Las sesiones se limpian automáticamente cuando ya no están en uso.

  • Inicio rápido: una nueva sesión tarda milisegundos en asignarse. Los inicios rápidos se logran manteniendo automáticamente un grupo de sesiones listas pero sin asignar.

  • Escalable: las sesiones se pueden ejecutar a gran escala. Puedes ejecutar cientos o miles de sesiones simultáneamente.

Nota:

Las sesiones dinámicas de Azure Container Apps se encuentran actualmente en versión preliminar.

Tipos de sesión

Azure Container Apps admite dos tipos de sesiones:

Tipo Descripción Modelo de facturación
Intérprete de código Intérprete de código totalmente administrado Por sesión (consumo)
Contenedor personalizado Traiga su propio contenedor Plan dedicado de Container Apps

Intérprete de código

Las sesiones de intérprete de código permiten ejecutar código en un espacio aislado preinstalado con bibliotecas populares. Son ideales para ejecutar código que no es de confianza, como el código que proporcionan los usuarios de la aplicación o el código que genera un modelo de lenguaje grande (LLM). Obtén más información sobre las sesiones de intérprete de código.

Contenedor personalizado

Las sesiones de contenedor personalizadas permiten ejecutar tus propias imágenes de contenedor en espacios aislados y seguros. Puedes usarlas a fin de ejecutar un intérprete de código personalizado para un lenguaje que no se admite de manera predeterminada o para ejecutar cargas de trabajo que requieren un aislamiento seguro. Obtén más información sobre las sesiones de contenedor personalizadas

Conceptos

Los conceptos clave de las sesiones dinámicas de Azure Container Apps son grupos de sesiones y sesiones.

Grupos de sesiones

Para proporcionar tiempos de asignación de sesiones secundarias, Azure Container Apps mantiene un grupo de sesiones listas pero sin asignar. Al enviar una solicitud a una nueva sesión, la plataforma te asigna una sesión del grupo. A medida que se asignan las sesiones, la plataforma reabastece automáticamente el grupo para mantener un número constante de sesiones listas.

Puedes configurar grupos para establecer el número máximo de sesiones que se pueden asignar simultáneamente mediante la propiedad maxConcurrentSessions. Puedes establecer la duración de espera de la última solicitud antes de que se elimine la propiedad cooldownPeriodInSeconds. En el caso de las sesiones de contenedor personalizadas, también puedes especificar la imagen de contenedor y la configuración que se usarán para las sesiones del grupo, incluido el número de sesiones de destino que se mantendrán listas en el grupo mediante readySessionInstances.

Sesiones

Una sesión es un entorno de espacio aislado que ejecuta el código o la aplicación. Cada sesión está aislada de otras sesiones y del entorno de host con un espacio aislado de Hyper-V. Opcionalmente, puedes habilitar el aislamiento de red para mejorar aún más la seguridad.

Identificadores de sesión

Al interactuar con las sesiones de un grupo, debes definir un identificador de sesión para administrar cada sesión. El identificador de sesión es una cadena de forma libre, lo que significa que puedes definirlo de cualquier manera que se adapte a las necesidades de la aplicación. Este identificador es un elemento clave para determinar el comportamiento de la sesión:

  • Reutilización de sesiones existentes: esta sesión se reutiliza si ya hay una sesión en ejecución que coincida con el identificador.
  • Asignación de nuevas sesiones: si ninguna sesión en ejecución coincide con el identificador, se asigna automáticamente una nueva sesión desde el grupo.

El identificador de sesión es una cadena que defines que es única dentro del grupo de sesiones. Si vas a compilar una aplicación web, puedes usar el identificador de usuario. Si vas a crear un bot de chat, puedes usar el identificador de conversación.

El identificador debe ser una cadena de 4 a 128 caracteres de longitud y solo puede contener caracteres alfanuméricos y caracteres especiales de esta lista: |, -, &, ^, %, $, #, (, ), {, }, [, ], ;, < y >.

El identificador de sesión se pasa en un parámetro de consulta denominado identifier en la dirección URL al realizar una solicitud a una sesión.

En el caso de las sesiones de intérprete de código, también puedes usar una integración con un marco de LLM. El marco controla automáticamente la generación y administración de tokens. Asegúrate de que la aplicación está configurada con una identidad administrada que tiene las asignaciones de roles necesarias en el grupo de sesiones.

Protección de Identificadores de sesión

El identificador de sesión es información confidencial que requiere un proceso seguro al crear y administrar su valor. Para proteger este valor, la aplicación debe asegurarse de que cada usuario o inquilino solo tiene acceso a sus propias sesiones.

Las estrategias específicas que impiden el uso incorrecto de los identificadores de sesión difieren en función del diseño y la arquitectura de la aplicación. Sin embargo, la aplicación siempre debe tener un control completo sobre la creación y el uso de identificadores de sesión para que un usuario malintencionado no pueda acceder a la sesión de otro usuario.

Entre las estrategias de ejemplo se incluyen:

  • Una sesión por usuario: si la aplicación usa una sesión por usuario, cada usuario debe autenticarse de forma segura y la aplicación debe usar un identificador de sesión único para cada usuario que haya iniciado sesión.
  • Una sesión por conversación de agente: si la aplicación usa una sesión por conversación del agente de IA, asegúrese de que la aplicación usa un identificador de sesión único para cada conversación que el usuario final no pueda modificar.

Importante

Si no se protege el acceso a las sesiones, se puede producir un acceso incorrecto o no autorizado a los datos almacenados en las sesiones de los usuarios.

Autenticación

Autenticación mediante tokens de Microsoft Entra (anteriormente Azure Active Directory) Los tokens válidos de Microsoft Entra se generan mediante una identidad que pertenece a los roles ejecutor y colaborador de sesión de Azure ContainerApps en el grupo de sesiones.

Para asignar los roles a una identidad, usa los siguientes comandos de la CLI de Azure:

az role assignment create \
    --role "Azure ContainerApps Session Executor" \
    --assignee <PRINCIPAL_ID> \
    --scope <SESSION_POOL_RESOURCE_ID>

az role assignment create \
    --role "Contributor" \
    --assignee <PRINCIPAL_ID> \
    --scope <SESSION_POOL_RESOURCE_ID>

Si usas una integración del marco de LLM, el marco controla automáticamente la generación y administración de tokens. Asegúrate de que la aplicación está configurada con una identidad administrada con las asignaciones de roles necesarias en el grupo de sesiones.

Si usas directamente los puntos de conexión de la API de administración del grupo, debes generar un token e incluirlo en el encabezado Authorization de las solicitudes HTTP. Además de las asignaciones de roles mencionadas anteriormente, el token debe contener una notificación de audiencia (aud) con el valor https://dynamicsessions.io.

Para generar un token mediante la CLI de Azure, ejecuta el siguiente comando:

az account get-access-token --resource https://dynamicsessions.io

Importante

Se puede usar un token válido para crear y acceder a cualquier sesión del grupo. Mantén los tokens seguros y no los compartas con partes que no sean de confianza. Los usuarios finales deben acceder a las sesiones mediante la aplicación, no directamente.

Ciclo de vida

El runtime de Container Apps administra automáticamente el ciclo de vida de cada sesión de un grupo de sesiones.

  • Pendiente: cuando se inicia una sesión, se encuentra en estado pendiente. El periodo de tiempo que una sesión pasa en estado pendiente depende de la imagen de contenedor y la configuración que especifiques para el grupo de sesiones. No se agrega una sesión pendiente al grupo de sesiones listas.

  • Lista: cuando una sesión termina de iniciarse y está lista, se agrega al grupo. La sesión está disponible en este estado para la asignación. En el caso de las sesiones de contenedor personalizadas, puedes especificar el número objetivo de sesiones listas para mantenerse en el grupo. Aumenta este número si las sesiones se asignan más rápido de lo que el grupo se reabastece.

  • Asignada: cuando se envía una solicitud a una sesión que no se ejecuta, el grupo proporciona una nueva sesión y la coloca en un estado asignado. Las solicitudes posteriores con el mismo identificador de sesión se enrutan a la misma sesión.

  • Eliminando: cuando una sesión deja de recibir solicitudes durante el tiempo que define la configuración de cooldownPeriodInSeconds, la sesión y su espacio aislado de Hyper-V se eliminan completamente y de forma segura.

Seguridad

Las sesiones dinámicas de Azure Container Apps se crean para ejecutar aplicaciones y código que no son de confianza en un entorno seguro y aislado. Aunque las sesiones están aisladas entre sí, los usuarios de la sesión pueden acceder a todo en una sola sesión, incluidos los archivos y las variables de entorno. Solo debes configurar o cargar datos confidenciales en una sesión si confías en los usuarios de la sesión.

Limitaciones de vista previa

Las sesiones dinámicas de Azure Container Apps se encuentran actualmente en versión preliminar. Se presentan las siguientes limitaciones:

  • Actualmente solo está disponible en las siguientes regiones:

    Region Intérprete de código Contenedor personalizado
    Este de Asia
    Este de EE. UU.
    Oeste de EE. UU. 2
    Centro-Norte de EE. UU -
    Norte de Europa -
  • No se admite el registro. La aplicación puede registrar solicitudes en la API de administración del grupo de sesiones y sus respuestas.

Pasos siguientes