Inicio rápido: Configuración de Durable Functions con identidad administrada

En este inicio rápido se muestra cómo configurar una aplicación de Durable Functions mediante el proveedor predeterminado Azure Storage para usar conexiones basadas en identidades, de modo que la aplicación pueda acceder a su cuenta de almacenamiento sin administrar secretos. La plataforma Azure administra una identidad administrada de Microsoft Entra ID; no necesitas aprovisionar ni rotar ningún secreto.

En este artículo:

Nota:

La identidad administrada se admite en la extensión Durable Functions a partir de la versión 2.7.0 y posteriores.

Si no tiene una cuenta de Azure, cree una cuenta gratuita antes de comenzar.

Prerrequisitos

Para completar este inicio rápido necesita instalar:

  • Un proyecto de Durable Functions existente creado en el portal de Azure o en un proyecto de Durable Functions local implementado en Azure.
  • Familiaridad con la ejecución de una aplicación de Durable Functions en Azure.

Si no tiene un proyecto de Durable Functions existente implementado en Azure, se recomienda empezar con uno de los siguientes inicios rápidos:

Configuración del desarrollo local

Tiene dos opciones para el desarrollo local. Use Azurite para realizar pruebas locales rápidas sin credenciales de Azure. Si necesita probar las conexiones basadas en identidades en una cuenta de Azure Storage real, use sus credenciales de desarrollador en su lugar.

Opción 1: Uso del emulador de Azure Storage

Al desarrollar localmente, se recomienda usar Azurite, que es Azure Storage emulador local. Configure la aplicación en el emulador especificando "AzureWebJobsStorage": "UseDevelopmentStorage=true" en el local.settings.json.

Opción 2: Conexiones basadas en identidades para el desarrollo local

En términos estrictos, una identidad administrada solo está disponible para las aplicaciones al ejecutarse en Azure. Sin embargo, todavía puede configurar una aplicación en ejecución local para usar la conexión basada en identidades mediante las credenciales de desarrollador para autenticarse en recursos de Azure. A continuación, cuando se implementa en Azure, la aplicación usará la configuración de identidad administrada en su lugar.

Al usar credenciales de desarrollador, la conexión intenta obtener un token de las siguientes ubicaciones, en este orden:

  1. Una caché local compartida entre las aplicaciones de Microsoft
  2. Contexto de usuario actual en Visual Studio
  3. Contexto de usuario actual en Visual Studio Code
  4. Contexto de usuario actual en el CLI de Azure

Si ninguna de estas opciones se realiza correctamente, recibirá un error que indica que la aplicación no puede recuperar un token de autenticación. Compruebe que ha iniciado sesión en una de las herramientas enumeradas con una cuenta que tenga acceso a su cuenta de Azure Storage.

Configuración del entorno de ejecución para usar la identidad del desarrollador local

  1. Especifique el nombre de la cuenta de Azure Storage en local.settings.json, por ejemplo:

    {
       "IsEncrypted": false,
       "Values": {
          "AzureWebJobsStorage__accountName": "<<your Azure Storage account name>>",
          "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
       }
    }
    
  2. Vaya al recurso de la cuenta de almacenamiento de Azure en el portal de Azure.

  3. Seleccione la pestaña Access Control (IAM) y seleccione Agregar asignación de roles.

  4. Asigne cada uno de los siguientes roles a sí mismo. Para cada rol, seleccione "+ Seleccionar miembros" y busque el correo electrónico que usa para iniciar sesión en Visual Studio, Visual Studio Code o el CLI de Azure.

    • Colaborador de datos de cola de Storage
    • Colaborador de datos de Storage Blob
    • Colaborador de datos de tabla de almacenamiento

    Nota:

    Estos son los tres mismos roles necesarios para su identidad administrada al implementar en Azure. Consulte Asignación de roles de acceso a la identidad administrada.

    Captura de pantalla de asignar roles de Colaborador de Datos de Almacenamiento a un usuario en la página de control de acceso del portal de Azure.

Conexiones basadas en identidades para la aplicación implementada en Azure

Habilitación de un recurso de identidad administrada

Para empezar, habilite una identidad administrada para la aplicación. La aplicación de funciones debe tener una identidad administrada asignada por el sistema o una identidadadministrada asignada por el usuario. Para habilitar una identidad administrada para la aplicación de funciones y obtener más información sobre las diferencias entre los dos tipos de identidades, consulte la introducción a la identidad administrada.

Asignación de roles de acceso a la identidad administrada

Vaya al recurso de Azure Storage de la aplicación en Azure Portal y asigne tres roles de control de acceso basado en roles (RBAC) a su recurso de identidad administrada.

  • Colaborador de datos de cola de Storage
  • Colaborador de datos de Storage Blob
  • Colaborador de datos de tabla de almacenamiento

Para buscar el recurso de identidad, seleccione Asignar acceso a Identidad administrada y, a continuación, + Seleccionar miembros

Captura de pantalla de asignar roles de acceso de almacenamiento a una identidad administrada en el portal de Azure.

Adición de la configuración de identidad administrada a la aplicación

Para poder usar la identidad administrada de la aplicación, realice algunos cambios en la configuración de la aplicación:

  1. En el portal de Azure, en el menú de recursos de la aplicación de funciones en Settings, seleccione Variables de entorno.

  2. En la lista de configuraciones, busque AzureWebJobsStorage y seleccione el icono Eliminar. Captura de pantalla de la variable de entorno AzureWebJobsStorage en la configuración de la aplicación de funciones del portal de Azure.

  3. Agregue una configuración para vincular la cuenta de almacenamiento de Azure a la aplicación.

    Use uno de los métodos siguientes en función de la nube en la que se ejecuta la aplicación:

    • Azure cloud: si la aplicación se ejecuta en global Azure, agregue la configuración AzureWebJobsStorage__accountName que identifica un nombre de cuenta de almacenamiento de Azure. Valor de ejemplo: mystorageaccount123

    • Non-Azure cloud: si la aplicación se ejecuta en una nube fuera de Azure, debe agregar las tres opciones siguientes para proporcionar URI de servicio específicos (o endpoints) de la cuenta de almacenamiento en lugar de un nombre de cuenta.

      • Nombre de configuración: AzureWebJobsStorage__blobServiceUri

        Valor de ejemplo: https://mystorageaccount123.blob.core.windows.net/

      • Nombre de configuración: AzureWebJobsStorage__queueServiceUri

        Valor de ejemplo: https://mystorageaccount123.queue.core.windows.net/

      • Nombre de configuración: AzureWebJobsStorage__tableServiceUri

        Valor de ejemplo: https://mystorageaccount123.table.core.windows.net/

    Puede obtener los valores de estas variables de URI en la información de la cuenta de almacenamiento en la pestaña Puntos de conexión.

    Captura de pantalla de la pestaña puntos de conexión de la cuenta de almacenamiento en la que se muestran los URI del servicio de blobs, el servicio de colas y el servicio de tablas.

    Nota:

    Si usa Azure Government o cualquier otra nube independiente de la Azure global, debe usar la opción que proporciona URI de servicio específicos en lugar del nombre de la cuenta de almacenamiento. Para obtener más información sobre el uso de Azure Storage con Azure Government, consulte el Develop mediante la API de almacenamiento en Azure Government.

  4. Finalice la configuración de la identidad administrada (recuerde hacer clic en "Aplicar" después de realizar los cambios en la configuración):

    • Si usa una identidad asignada por el sistema, no realice ningún otro cambio.

    • Si usa una identidad asignada por el usuario, agregue las siguientes configuraciones a la configuración de la aplicación:

      • AzureWebJobsStorage__credential, introduzca managedidentity

      • AzureWebJobsStorage__clientId, obtenga este valor GUID del recurso de identidad administrada

    Captura de pantalla del recurso de identidad administrada asignada por el usuario que muestra el valor del identificador de cliente.

    Nota:

    Durable Functions no admite managedIdentityResourceId cuando se usa identidad asignada por el usuario. Use clientId en su lugar.

Comprobación de la configuración

Para confirmar que la configuración de identidad administrada funciona:

  1. En el portal de Azure, dirígete a tu aplicación de funciones y activa la orquestación de Durable Functions (por ejemplo, mediante una función activada por HTTP).
  2. Compruebe que la orquestación se complete correctamente consultando el punto final de estado o comprobando la pestaña Supervisión.
  3. Si ve errores de autenticación, compruebe que:
    • Los tres roles de Contribuyente de Datos de Almacenamiento están asignados a la identidad correcta.
    • Se elimina la configuración de la cadena de conexión AzureWebJobsStorage.
    • La AzureWebJobsStorage__accountName configuración (o URI del servicio) es correcta.

Pasos siguientes