Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las sesiones dinámicas de Azure Container Apps ofrecen contextos aislados y seguros cuando necesita ejecutar código o aplicaciones por separado de otras cargas de trabajo. Las sesiones se ejecutan dentro de un grupo de sesiones que proporciona acceso inmediato a las sesiones nuevas y existentes. Estas sesiones son ideales para escenarios en los que la entrada generada por el usuario debe procesarse de forma controlada o cuando se integran servicios de terceros que requieren ejecutar código en un entorno aislado.
En este artículo se muestra cómo administrar e interactuar con sesiones dinámicas.
Acceso a sesión
La aplicación interactúa con una sesión mediante la API de administración del grupo de sesiones.
Un punto de conexión de administración del grupo sigue este formato:
https://<SESSION_POOL_NAME>.<ENVIRONMENT_ID>.<REGION>.azurecontainerapps.io
Para obtener más información sobre la administración de grupos de sesiones, consulte el endpoint de administración de grupos de sesiones.
Reenvío de solicitudes al contenedor de una sesión
Para enviar una solicitud al contenedor de una sesión, use el punto de conexión de administración como raíz de la solicitud. Todo lo que se encuentra en la ruta de acceso que sigue al punto de conexión de administración del grupo base se reenvía al contenedor de la sesión.
Por ejemplo, si realiza una llamada a : <POOL_MANAGEMENT_ENDPOINT>/api/uploadfile, la solicitud se enruta al contenedor de la sesión en 0.0.0.0:<TARGET_PORT>/api/uploadfile.
Interacción continua
A medida que continúa realizando llamadas a la misma sesión, la sesión permanece asignada en el grupo. Una vez que no haya ninguna solicitud a la sesión después de que haya transcurrido el período de enfriamiento, la sesión se destruye automáticamente.
Solicitud de ejemplo
En el ejemplo siguiente se muestra cómo enviar una solicitud a una sesión mediante el identificador de un usuario como identificador único de sesión.
Antes de enviar la solicitud, reemplace los marcadores de posición entre corchetes <> por valores específicos de la solicitud.
POST <POOL_MANAGEMENT_ENDPOINT>/<API_PATH_EXPOSED_BY_CONTAINER>?identifier=<USER_ID>
Authorization: Bearer <TOKEN>
{
"command": "echo 'Hello, world!'"
}
Esta solicitud se reenvía al contenedor de la sesión con el identificador del usuario.
Si la sesión aún no se está ejecutando, Azure Container Apps asigna automáticamente una sesión del grupo antes de reenviar la solicitud.
En este ejemplo, el contenedor de la sesión recibe la solicitud en http://0.0.0.0:<INGRESS_PORT>/<API_PATH_EXPOSED_BY_CONTAINER>.
Identificadores
Para enviar una solicitud HTTP a una sesión, debe proporcionar un identificador de sesión en la solicitud. El identificador de sesión se pasa en un parámetro de cadena de consulta denominado identifier en la dirección URL al realizar una solicitud a una sesión.
Si ya existe una sesión con el identificador, la solicitud se envía a la sesión existente.
Si no existe una sesión con el identificador, se asigna automáticamente una nueva sesión antes de que se le envíe la solicitud.
Formato del identificador
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.
El identificador de sesión es una cadena que defines que es única dentro del grupo de sesiones. Si va a crear una aplicación web, puede usar el identificador del usuario como identificador de sesión. Si va a crear un bot de chat, puede 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 >.
Seguridad
Las sesiones dinámicas 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.
Configure o cargue solo datos confidenciales en una sesión si confía en los usuarios de la sesión.
De manera predeterminada, se impide que las sesiones realicen solicitudes de red salientes. Puede controlar el acceso de red mediante la configuración del estado de red en el grupo de sesiones.
Use identificadores de sesión seguros y únicos: genere siempre identificadores de sesión largos y complejos para evitar ataques por fuerza bruta. Use algoritmos criptográficos para crear identificadores difíciles de adivinar.
Limitar la visibilidad de la sesión: establezca controles de acceso estrictos para asegurarse de que los identificadores de sesión solo son visibles para el grupo de sesiones. Evite exponer identificadores de sesión en direcciones URL o registros.
Implementar tiempos de expiración cortos: configure los identificadores de sesión para que expiren después de un breve período de inactividad. Este enfoque minimiza el riesgo de que las sesiones se secuestren después de que un usuario haya terminado de interactuar con la aplicación.
Rotar periódicamente las credenciales de sesión: revise y actualice periódicamente las credenciales asociadas a las sesiones. La rotación reduce el riesgo de acceso no autorizado.
Usar protocolos de transmisión seguros: use siempre HTTPS para cifrar los datos en tránsito, incluidos los identificadores de sesión. Este enfoque protege contra ataques de intermediario.
Supervisar la actividad de sesión: implemente el registro y la supervisión para realizar un seguimiento de las actividades de sesión. Use estos registros para identificar patrones inusuales o posibles infracciones de seguridad.
Validar la entrada del usuario: trate toda la entrada del usuario como peligrosa. Use técnicas de validación de entrada y saneamiento para protegerse frente a ataques por inyección y asegurarse de que solo se procesen los datos de confianza.
Para proteger completamente las sesiones, puede hacer lo siguiente:
- Uso de la autenticación y autorización de Microsoft Entra ID
- Protección de identificadores de sesión
Autenticación y autorización
Al enviar solicitudes a una sesión mediante la API de administración del grupo, la autenticación se controla mediante tokens de Microsoft Entra. Solo los tokens de Microsoft Entra de una identidad que pertenezca al rol Ejecutor de sesión de Azure ContainerApps en el grupo de sesiones están autorizados para llamar a la API de administración del grupo.
Para asignar el rol a una identidad, use el siguiente comando de la CLI de Azure:
az role assignment create \
--role "Azure ContainerApps Session Executor" \
--assignee <PRINCIPAL_ID> \
--scope <SESSION_POOL_RESOURCE_ID>
Si usa una integración de marcos de modelo de lenguaje grande (LLM), el marco controla 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 usa 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 nunca deben tener acceso directo a los tokens. Solo haga que los tokens estén disponibles para la aplicación y nunca para los usuarios finales.
Protección de identificadores de sesión
El identificador de sesión es información confidencial que debe administrar de forma segura. La aplicación debe asegurarse de que cada usuario o inquilino solo tenga 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 podría producir un acceso incorrecto o no autorizado a los datos almacenados en las sesiones de los usuarios.
Uso de identidad administrada
Una identidad administrada de Microsoft Entra ID permite que los grupos de sesiones de contenedor y sus sesiones accedan a otros recursos protegidos de Microsoft Entra. Tanto las identidades administradas asignadas por el sistema como las asignadas por el usuario se admiten en un grupo de sesiones.
Para obtener más información sobre las identidades administradas en Microsoft Entra ID, consulte Identidades administradas para recursos de Azure.
Hay dos maneras de usar identidades administradas con grupos de sesiones de contenedor personalizados:
Autenticación de extracción de imágenes: use la identidad administrada para autenticarse con el registro de contenedor para extraer la imagen de contenedor.
Acceso a recursos: use la identidad administrada del grupo de sesiones en una sesión para acceder a otros recursos protegidos de Microsoft Entra. Debido a sus implicaciones de seguridad, esta funcionalidad está deshabilitada de manera predeterminada.
Importante
Si habilita el acceso a la identidad administrada en una sesión, cualquier código o programa que se ejecute en la sesión puede crear tokens de Microsoft Entra para la identidad administrada del grupo. Dado que las sesiones normalmente ejecutan código que no es de confianza, use esta característica con extrema precaución.
A fin de habilitar la identidad administrada para un grupo de sesiones de contenedor personalizado, use Azure Resource Manager.
Registro
Los registros de consola de los contenedores que se ejecutan en una sesión están disponibles en el área de trabajo de Azure Log Analytics asociada al entorno de Azure Container Apps en una tabla denominada AppEnvSessionConsoleLogs_CL.
Contenido relacionado
Tipos de sesión: Obtenga información sobre los diferentes tipos de sesiones dinámicas:
Tutoriales: Trabajar directamente con la API REST o a través de un agente de LLM:
- Usa un agente LLM:
- Uso de la API de REST