Início Rápido: Configurar Durable Functions com identidade gerenciada

Este início rápido mostra como configurar um aplicativo Durable Functions usando o provedor padrão Armazenamento do Azure para usar conexões baseadas em identidade, para que seu aplicativo possa acessar sua conta de armazenamento sem gerenciar segredos. Uma identidade gerenciada do Microsoft Entra ID é administrada pela plataforma Azure — você não precisa provisionar nem alternar nenhum segredo.

Neste artigo:

  • Configuração de desenvolvimento local – use o Azurite ou suas credenciais de desenvolvedor para testes locais
  • Conexões baseadas em identidade para o aplicativo implantado no Azure — Habilite uma identidade gerenciada e configure seu aplicativo de função

Observação

A identidade gerenciada tem suporte nas versões Durable Functions extension2.7.0 e maiores.

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

Pré-requisitos

Para concluir este guia de início rápido, você precisa:

  • Um projeto existente de Durable Functions criado no portal do Azure ou um projeto de Durable Functions local implantado no Azure.
  • Familiaridade ao executar um aplicativo Durable Functions no Azure.

Se você não tiver um projeto de Durable Functions existente implantado no Azure, recomendamos que você comece com um dos seguintes guias de início rápido:

Configuração de desenvolvimento local

Você tem duas opções para desenvolvimento local. Use o Azurite para testes locais rápidos sem credenciais de Azure. Se você precisar testar conexões baseadas em identidade em uma conta de Armazenamento do Azure real, use suas credenciais de desenvolvedor.

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

Ao desenvolver localmente, é recomendável que você use o Azurite, que é o emulador local do Armazenamento do Azure. Configure seu aplicativo para o emulador especificando "AzureWebJobsStorage": "UseDevelopmentStorage=true" em local.settings.json.

Opção 2: conexões baseadas em identidade para desenvolvimento local

Estritamente falando, uma identidade gerenciada só está disponível para aplicativos ao executar em Azure. No entanto, você ainda pode configurar um aplicativo que esteja sendo executado localmente para usar uma conexão baseada em identidade, utilizando suas credenciais de desenvolvedor para autenticar-se nos recursos do Azure. Em seguida, quando implantado em Azure, o aplicativo utilizará sua configuração de identidade gerenciada.

Ao usar credenciais de desenvolvedor, a conexão tenta obter um token dos seguintes locais, nesta ordem:

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

Se nenhuma dessas opções for bem-sucedida, você receberá um erro indicando que o aplicativo não pode recuperar um token de autenticação. Verifique se você está conectado a uma das ferramentas listadas com uma conta que tem acesso à sua conta Armazenamento do Azure.

Configurar o runtime para usar a identidade do desenvolvedor local

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

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

  3. Selecione a guia Controle de Acesso (IAM) e, em seguida, selecione Adicionar atribuição de função.

  4. Atribua cada uma das funções a seguir a si mesmo. Para cada função, selecione "+ Selecionar membros" e pesquise o email que você usa para entrar no Visual Studio, Visual Studio Code ou no CLI do Azure.

    • Colaborador de Dados da Fila de Armazenamento
    • Colaborador de dados de blob do Storage
    • Colaborador de dados da Tabela de Armazenamento

    Observação

    Essas são as mesmas três funções necessárias para sua identidade gerenciada ao implantar em Azure. Consulte Atribuir funções de acesso à identidade gerenciada.

    Captura de tela de atribuir funções de Colaborador de Dados de Armazenamento a um usuário na página de Controle de Acesso do portal Azure.

Conexões baseadas em identidade para o aplicativo implantado no Azure

Habilitar um recurso de identidade gerenciada

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

Atribuir funções de acesso à identidade gerenciada

Navegue até o recurso de Armazenamento do Azure do seu aplicativo no portal do Azure e atribua três funções de RBAC (controle de acesso baseado em função) ao recurso de identidade gerenciada:

  • Colaborador de Dados da Fila de Armazenamento
  • Colaborador de dados de blob do Storage
  • Colaborador de dados da Tabela de Armazenamento

Para localizar o recurso de identidade, selecione Atribuir acesso à identidade gerenciada e, em seguida, + Selecionar membros

Captura de tela da atribuição de funções de acesso de armazenamento a uma identidade gerenciada no portal do Azure.

Adicionar a configuração de identidade gerenciada ao seu aplicativo

Para usar a identidade gerenciada do seu aplicativo, faça algumas alterações nas configurações do aplicativo:

  1. No portal do Azure, no menu de recursos do aplicativo de funções em Settings, selecione Environment variables.

  2. Na lista de configurações, selecione AzureWebJobsStorage e escolha o ícone Excluir. Screenshot da variável de ambiente AzureWebJobsStorage nas configurações do aplicativo de funções do portal Azure.

  3. Adicione uma configuração para vincular sua conta de armazenamento Azure ao aplicativo.

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

    • Azure cloud: se o aplicativo for executado em global Azure, adicione a configuração AzureWebJobsStorage__accountName que identifica um nome de conta de armazenamento Azure. Valor de exemplo: mystorageaccount123

    • Nuvem não-Azure: Se o aplicativo for executado em uma nuvem fora do Azure, você deve adicionar as três configurações a seguir para fornecer URIs de serviço específicas (ou pontos de extremidade) 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/

    Você pode obter os valores dessas variáveis de URI nas informações da conta de armazenamento, na guia Pontos de extremidade.

    Captura de tela da guia Pontos de extremidade da conta de armazenamento mostrando os URIs dos serviços de blob, fila e tabela.

    Observação

    Se você estiver usando Azure Governamental ou qualquer outra nuvem separada da Azure global, deverá usar a opção que fornece URIs de serviço específicas em vez de apenas o nome da conta de armazenamento. Para obter mais informações sobre como usar Armazenamento do Azure com Azure Governamental, consulte o Develop usando a API de Armazenamento em Azure Governamental.

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

    • Se você usar uma identidade atribuída pelo sistema, não faça nenhuma outra alteração.

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

      • AzureWebJobsStorage__credential, enter managedidentity

      • AzureWebJobsStorage__clientId, obtenha esse valor de GUID no recurso de identidade gerenciada

    Captura de tela do recurso de identidade gerenciada atribuído pelo usuário mostrando o valor da ID do cliente.

    Observação

    Durable Functions não dá suporte managedIdentityResourceId quando usamos a identidade atribuída pelo usuário. Use clientId em seu lugar.

Verifique sua configuração

Para confirmar se a configuração de identidade gerenciada funciona:

  1. No portal do Azure, navegue até seu aplicativo de funções e inicie a orquestração de funções duráveis (por exemplo, usando uma função de gatilho HTTP).
  2. Verifique se a orquestração foi concluída com sucesso consultando o ponto de extremidade de status ou verificando a guia Monitorar.
  3. Se você vir erros de autenticação, verifique se:
    • Todas as três funções de Colaborador de Dados de Armazenamento são atribuídas à identidade correta.
    • A configuração da cadeia de caracteres de conexão AzureWebJobsStorage foi removida.
    • As AzureWebJobsStorage__accountName configurações (ou URI de serviço) estão corretas.

Próximas Etapas