Quickstart: Configurar Durable Functions com identidade gerida

Este quickstart mostra como configurar uma aplicação de Durable Functions usando o fornecedor predefinido Armazenamento do Azure para usar ligações baseadas em identidade, para que a sua aplicação possa aceder à sua conta de armazenamento sem gerir segredos. Uma identidade gerida a partir de Microsoft Entra ID é gerida pela plataforma Azure — não precisa de provisionar ou rodar segredos.

Neste artigo:

Observação

A identidade gerida é suportada na extensão Durable Functions nas versões 2.7.0 e superiores.

Se não tiver uma conta do Azure, crie uma conta gratuita antes de começar.

Pré-requisitos

Para concluir este arranque rápido, necessita de:

  • Um projeto Durable Functions existente criado no portal Azure ou um projeto local Durable Functions implementado no Azure.
  • Familiaridade em executar uma aplicação de Durable Functions no Azure.

Se não tem um projeto Durable Functions implementado no Azure, recomendamos que comece com um dos seguintes quickstarts:

Estrutura de desenvolvimento local

Tem duas opções para o desenvolvimento local. Use o Azurite para testes locais rápidos sem credenciais do Azure. Se precisar de testar ligações baseadas em identidade contra uma conta real do Armazenamento do Azure, use antes as suas credenciais de programador.

Opção 1: Usar o emulador Armazenamento do Azure

Ao desenvolver localmente, recomenda-se usar o Azurite, que é o emulador local do Armazenamento do Azure. Configure seu aplicativo para o emulador especificando "AzureWebJobsStorage": "UseDevelopmentStorage=true" no local.settings.json.

Opção 2: Ligações baseadas na identidade para o desenvolvimento local

Estritamente falando, uma identidade gerida só está disponível para aplicações quando executadas no Azure. No entanto, ainda pode configurar uma aplicação a correr localmente para usar uma ligação baseada em identidade, usando as suas credenciais de programador para autenticar com recursos do Azure. Depois, quando implementada na Azure, a aplicação utilizará a sua configuração de identidade gerida.

Ao usar credenciais de programador, a ligação tenta obter um token das seguintes localizações, por esta ordem:

  1. Um cache local compartilhado entre aplicativos da Microsoft
  2. O contexto atual do utilizador no Visual Studio
  3. O contexto atual do utilizador no Visual Studio Code
  4. O contexto atual do utilizador na CLI do Azure

Se nenhuma destas opções for bem-sucedida, recebe um erro a indicar que a aplicação não consegue recuperar um token de autenticação. Verifica se estás ligado a uma das ferramentas listadas com uma conta que tenha acesso à tua conta Armazenamento do Azure.

Configurar o tempo de execução para usar a identidade do desenvolvedor local

  1. Especifique o nome da sua conta Armazenamento do Azure no local.settings.json, por exemplo:

    {
       "IsEncrypted": false,
       "Values": {
          "AzureWebJobsStorage__accountName": "<<your Azure Storage account name>>",
          "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
       }
    }
    
  2. Navegue até ao recurso da sua conta Armazenamento do Azure no portal Azure.

  3. Selecione o separador Controlo de Acesso (IAM) e depois selecione Adicionar atribuição de funções.

  4. Atribui cada um dos seguintes papéis a ti próprio. Para cada função, selecione "+ Selecione membros" e procure o email que usa para iniciar sessão no Visual Studio, Visual Studio Code ou no CLI do Azure.

    • Contribuidor de Dados da Fila de Armazenamento
    • Contribuidor de Dados de Storage Blob
    • Contribuidor de dados de tabelas de armazenamento

    Observação

    Estas são as mesmas três funções necessárias para a sua identidade gerida ao implementar no Azure. Veja Atribuir papéis de acesso à identidade gerida.

    Captura de ecrã da atribuição de papéis de Contribuidor de Dados de Armazenamento a um utilizador na página Controlo de Acesso portal Azure.

Ligações baseadas em identidade para aplicação implementada no Azure

Ativar um recurso de identidade gerido

Para começar, habilite uma identidade gerenciada para seu aplicativo. Seu aplicativo de função deve ter uma identidade gerenciada atribuída ao sistema ou uma identidade gerenciada atribuída pelo usuário. Para habilitar uma identidade gerenciada para seu aplicativo de função e saber mais sobre as diferenças entre os dois tipos de identidades, consulte a visão geral da identidade gerenciada.

Atribuir funções de acesso à identidade gerenciada

Navegue para o recurso Armazenamento do Azure da sua aplicação no portal Azure e atribua três funções de controlo de acesso baseado em papéis ao seu recurso de identidade gerida.

  • Contribuidor de Dados da Fila de Armazenamento
  • Contribuidor de Dados de Storage Blob
  • Contribuidor de dados de tabelas de armazenamento

Para encontrar o seu recurso de identidade, selecione Atribuir acesso à Identidade Gerida e, em seguida, + Selecionar membros.

Captura de ecrã da atribuição de funções de acesso ao armazenamento a uma identidade gerida no portal Azure.

Adicione a configuração de identidade gerida à sua aplicação

Antes de poder usar a identidade gerenciada do aplicativo, faça algumas alterações nas configurações do aplicativo:

  1. No portal Azure, no menu de recursos da tua aplicação de funções, em Definições, seleciona Variáveis de Ambiente.

  2. Na lista de configurações, localize AzureWebJobsStorage e selecione o ícone Excluir . Captura de ecrã da variável de ambiente AzureWebJobsStorage nas definições da aplicação de funções do portal Azure.

  3. Adicione uma definição para ligar a sua conta de armazenamento Azure à aplicação.

    Use um dos seguintes métodos , dependendo da nuvem em que seu aplicativo é executado:

    • Azure cloud: Se a sua aplicação correr em global Azure, adicione a definição AzureWebJobsStorage__accountName que identifica um nome de conta de armazenamento Azure. Valor de exemplo: mystorageaccount123

    • Nuvem não-Azure: Se a sua aplicação correr numa nuvem fora do Azure, deve adicionar as seguintes três configurações para especificar URIs de serviço específicos (ou endpoints) da conta de armazenamento em vez de um nome de conta.

      • Nome da configuração: AzureWebJobsStorage__blobServiceUri

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

      • Nome da configuração: AzureWebJobsStorage__queueServiceUri

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

      • Nome da configuração: AzureWebJobsStorage__tableServiceUri

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

    Pode obter os valores dessas variáveis URI na informação da conta de armazenamento, na guia Pontos de extremidade.

    Captura de ecrã do separador endpoints da conta de armazenamento mostrando os URIs de blob, fila e serviço de tabelas.

    Observação

    Se estiveres a usar Azure Government ou qualquer outra cloud separada da Azure global, deves usar a opção que fornece URIs de serviço específicos em vez de apenas o nome da conta de armazenamento. Para mais informações sobre como usar Armazenamento do Azure com Azure Government, consulte o Develop usando a API de Armazenamento em Azure Government.

  4. Conclua sua configuração de identidade gerenciada (lembre-se de clicar em "Aplicar" depois de fazer as alterações de configuração):

    • Se você usar uma identidade atribuída ao sistema, não faça outras alterações.

    • Se você usar uma identidade atribuída pelo usuário, adicione as seguintes configurações na configuração do aplicativo:

      • AzureWebJobsStorage__credential, insira managedidentity

      • AzureWebJobsStorage__clientId, obtenha esse valor GUID do seu recurso de identidade gerenciado

    Captura de ecrã do recurso de identidade gerida atribuído pelo utilizador mostrando o valor do ID do cliente.

    Observação

    Durable Functions não suporta managedIdentityResourceId quando se usa uma identidade atribuída pelo utilizador. Utilize clientId em substituição.

Verificar a configuração

Para confirmar que a sua configuração de identidade gerida funciona:

  1. No portal do Azure, navegue até à sua aplicação de funções e ative a orquestração das Durable Functions (por exemplo, usando uma função trigger HTTP).
  2. Verifique se a orquestração foi concluída com sucesso consultando o endpoint de estado ou a aba Monitor.
  3. Se detetar erros de autenticação, verifique que:
    • As três funções de Contribuidor de Dados de Armazenamento estão atribuídas à identidade correta.
    • A definição AzureWebJobsStorage cadeia de ligação foi removida.
    • As AzureWebJobsStorage__accountName definições (ou URI do serviço) estão corretas.

Passos seguintes