Identidades administradas en Azure Container Apps

Una identidad administrada de Microsoft Entra ID permite que la aplicación contenedora acceda a otros recursos protegidos de Microsoft Entra. Para más información sobre las identidades administradas en Microsoft Entra ID, consulte Identidades administradas para recursos de Azure.

La aplicación de contenedor puede tener dos tipos de identidades:

  • Una identidad asignada por el sistema está asociada a la aplicación de contenedor y esta se elimina si a su vez se elimina la aplicación. Una aplicación solo puede tener una identidad asignada por el sistema.
  • Una identidad asignada por el usuario es un recurso de Azure independiente que se puede asignar a la aplicación de contenedor y a otros recursos. Una aplicación de contenedor puede tener varias identidades asignadas por el usuario. La identidad existe hasta que se elimina.

¿Por qué usar una identidad administrada?

Puede usar una identidad administrada en una aplicación contenedora en ejecución para autenticarse en cualquier servicio que admita la autenticación de Microsoft Entra.

Con identidades administradas:

Casos de uso comunes

Las identidades asignadas por el sistema son las mejores para las cargas de trabajo que:

  • están contenidas en un solo recurso.
  • necesitan identidades independientes.

Las identidades asignadas por el usuario son ideales para cargas de trabajo que:

  • se ejecutan en varios recursos y pueden compartir una única identidad.
  • necesitan autorización previa para un recurso seguro.

Limitaciones

No se admite el uso de identidades administradas en reglas de escalado. Necesita incluir de todos modos la cadena de conexión o la clave en secretRef en la cadena de escalado.

Los contenedores de inicialización no pueden acceder a identidades administradas.

Configuración de identidades administradas

Puede configurar las identidades administradas mediante:

  • Azure Portal
  • La CLI de Azure
  • la plantilla de Azure Resource Manager (ARM)

Cuando se agrega, elimina o modifica una identidad administrada en una aplicación de contenedor en ejecución, la aplicación no se reinicia automáticamente y no se crea una nueva revisión.

Nota:

Al agregar una identidad administrada a una aplicación de contenedor implementada antes del 11 de abril de 2022, debe crear una nueva revisión.

Adición de una identidad asignada por el sistema

  1. En el panel de navegación izquierdo de la página de la aplicación de contenedor, desplácese hacia abajo hasta el grupo Configuración.

  2. Seleccione Identidad.

  3. En la pestaña Asignado por el sistema, cambie Estado a Activado. Seleccione Guardar.

Screenshot of system-assigned identities.

Adición de una identidad asignada por el usuario

La configuración de una aplicación de contenedor con una identidad asignada por el usuario requiere que primero cree la identidad; a continuación, debe agregar su identificador de recurso a la configuración de la aplicación de contenedor. Puede crear identidades asignadas por el usuario a través de Azure Portal o la CLI de Azure. Para obtener información sobre cómo crear y administrar identidades asignadas por el usuario, consulte Administración de identidades administradas asignadas por el usuario.

En primer lugar, tendrá que crear un recurso de identidad asignada por el usuario.

  1. Cree un recurso de identidad administrada asignada por el usuario siguiendo los pasos descritos en Administración de identidades administradas asignadas por el usuario.

  2. En el panel de navegación izquierdo de la página de la aplicación de contenedor, desplácese hacia abajo hasta el grupo Configuración.

  3. Seleccione Identidad.

  4. Dentro de la pestaña Usuario asignado, seleccione Agregar.

  5. Busque la identidad que creó anteriormente y selecciónela. Seleccione Agregar.

Screenshot of user-assigned identities.

Configuración de un recurso de destino

En el caso de algunos recursos, deberá configurar las asignaciones de roles para que la identidad administrada de la aplicación le conceda acceso. De lo contrario, las llamadas de la aplicación a los servicios, como Azure Key Vault y Azure SQL Database, se rechazarán incluso si usa un token válido para esa identidad. Para obtener más información acerca del control de acceso basado en roles (Azure RBAC), consulte ¿Qué es RBAC? Para obtener más información sobre los recursos que admiten tokens de Microsoft Entra, consulte Servicios de Azure que admiten autenticación de Microsoft Entra.

Importante

Los servicios de back-end para identidades administradas mantienen una memoria caché por URI de recurso durante unas veinticuatro horas. Si actualiza la directiva de acceso de un recurso de destino determinado y recupera inmediatamente un token para ese recurso, es posible que siga obteniendo un token en caché con permisos obsoletos hasta la expiración del token. Actualmente no existe ninguna forma de forzar la actualización de un token.

Conectar a los servicios de Azure en el código de la aplicación

Con las identidades administradas, una aplicación puede obtener tokens para acceder a los recursos de Azure que usan el identificador de Microsoft Entra, como Azure SQL Database, Azure Key Vault y Azure Storage. Estos tokens representan a la aplicación que accede al recurso, y no a un usuario específico de la aplicación.

Container Apps proporciona un punto de conexión de REST accesible internamente para recuperar tokens. Se puede acceder al punto de conexión REST desde dentro de la aplicación con un HTTP GET estándar, que se puede implementar con un cliente HTTP genérico en todos los lenguajes. Para .NET, JavaScript, Java y Python, la biblioteca cliente de identidad de Azure proporciona una abstracción sobre este punto de conexión de REST. Conectarse a otros servicios de Azure es tan sencillo como agregar un objeto de credencial al cliente específico del servicio.

Nota:

Al usar la biblioteca cliente de Identidad de Azure, se debe especificar el identificador de cliente de identidad administrada asignada por el usuario.

Nota:

Al conectarse a orígenes de datos de Azure SQL con Entity Framework Core, considere la posibilidad de usar Microsoft.Data.SqlClient, que proporciona cadenas de conexión especiales para la conectividad de identidad administrada.

Para las aplicaciones de .NET, la manera más sencilla de trabajar con una identidad administrada es mediante la biblioteca cliente de identidad de Azure para .NET. Consulte los encabezados de documentación correspondientes de la biblioteca cliente para obtener información:

Los ejemplos vinculados usan DefaultAzureCredential. Resulta útil para la mayoría de los escenarios, porque el mismo patrón funciona en Azure (con identidades administradas) y en la máquina local (sin identidades administradas).

Visualización de identidades administradas

Puede mostrar las identidades administradas asignadas por el sistema y asignadas por el usuario mediante el siguiente comando de la CLI de Azure. La salida muestra el tipo de identidad administrada, los identificadores de inquilino y los identificadores de entidad de seguridad de todas las identidades administradas asignadas a la aplicación contenedora.

az containerapp identity show --name <APP_NAME> --resource-group <GROUP_NAME>

Eliminación de una entidad administrada

Cuando se quita una identidad asignada por el sistema, se elimina de Microsoft Entra ID. Las identidades asignadas por el sistema también se quitan automáticamente del identificador de Entra de Microsoft al eliminar el propio recurso de la aplicación contenedora. La eliminación de identidades administradas asignadas por el usuario de la aplicación contenedora no las quita del identificador de Microsoft Entra.

  1. En el panel de navegación izquierdo de la página de la aplicación, desplácese hacia abajo hasta el grupo Configuración.

  2. Seleccione Identidad. A continuación, siga los pasos según el tipo de identidad:

    • Identidad asignada por el sistema: en la pestaña Asignado por el sistema, cambie Estado a Desactivado. Seleccione Guardar.
    • Identidad asignada por el usuario: seleccione la pestaña Asignado por el usuario, active la casilla de la identidad y seleccione Quitar. Seleccione para confirmar la acción.

Pasos siguientes