Configurar o Durable Functions com o Microsoft Entra ID

O Microsoft Entra ID é um serviço de gerenciamento de identidade e acesso baseado em nuvem da Microsoft. As conexões baseadas em identidade permitem que o Durable Functions faça solicitações autorizadas referentes a recursos protegidos do Microsoft Entra, como uma conta de Armazenamento do Microsoft Azure, sem a necessidade de gerenciar segredos manualmente. Usando o provedor de armazenamento padrão do Azure, o Durable Functions precisa se autenticar em uma conta de armazenamento do Azure. Neste artigo, mostramos como configurar um aplicativo Durable Functions para utilizar dois tipos de conexões baseadas em identidade: credenciais de identidade gerenciada e credenciais de segredo do cliente.

Uma identidade gerenciada permite que o aplicativo acesse facilmente outros recursos protegidos pelo Microsoft Entra, como o Azure Key Vault. A identidade gerenciada tem suporte na extensão Durable Functions versão 2.7.0 e superiores.

Observação

Estritamente falando, uma identidade gerenciada só está disponível para aplicativos durante a execução no Azure. Quando configurado para usar conexões baseadas em identidade, um aplicativo em execução local utilizará suas credenciais de desenvolvedor para autenticar com recursos do Azure. Em seguida, quando implantado no Azure, ele utilizará sua configuração de identidade gerenciada.

Pré-requisitos

As etapas a seguir pressupõem que você esteja iniciando com um aplicativo Durable Functions existente e tenha conhecimento sobre como operá-lo. Em particular, este início rápido considera que você já:

  • Criou um projeto do Durable Functions no portal do Azure ou implantou um Durable Functions local no Azure.

Se esse não for o caso, é aconselhável que você inicie com um dos seguintes artigos, pois eles fornecem instruções detalhadas sobre como atingir todos os requisitos acima:

Habilitar a identidade gerenciada

Apenas uma identidade é necessária para sua função, seja uma identidade gerenciada atribuída pelo sistema ou uma identidade gerenciada atribuída pelo usuário. Para habilitar uma identidade gerenciada para sua função e saber mais sobre as diferenças entre as duas identidades, leia as instruções detalhadas aqui.

Atribuir RBAC (Controles de Acesso Baseados em Função) à identidade gerenciada

Navegue até o recurso de armazenamento do aplicativo no portal do Azure. Siga estas instruções para atribuir as seguintes funções ao recurso de identidade gerenciada.

  • Colaborador de Dados da Fila de Armazenamento
  • Colaborador de dados de blob de armazenamento
  • Colaborador de dados da tabela de armazenamento

Adicionar uma configuração de identidade gerenciada no portal do Azure

Navegue até a página Configuração do aplicativo de funções do Azure e execute as seguintes alterações:

  1. Remova o valor padrão “AzureWebJobsStorage”.

Screenshot of default storage setting.

  1. Vincule sua conta de armazenamento do Azure adicionando uma das seguintes configurações de valor:

    • AzureWebJobsStorage__accountName: Por exemplo: mystorageaccount123

    • AzureWebJobsStorage__blobServiceUri: Exemplo: https://mystorageaccount123.blob.core.windows.net/

      AzureWebJobsStorage__queueServiceUri: Exemplo: https://mystorageaccount123.queue.core.windows.net/

      AzureWebJobsStorage__tableServiceUri: Exemplo: https://mystorageaccount123.table.core.windows.net/

      Observação

      Se você estiver usando o Azure Governamental ou qualquer outra nuvem separada do Azure global, precisará usar essa segunda opção para fornecer URLs de serviço específicas. Os valores dessas configurações podem ser encontrados na conta de armazenamento na guia Pontos de extremidade. Para obter mais informações sobre como usar o Armazenamento do Microsoft Azure com o Azure Governamental, leia a documentação Desenvolver com a API de Armazenamento no Azure Governamental.

    Screenshot of endpoint sample.

  2. Finalize sua configuração de identidade gerenciada:

    • Se a identidade atribuída pelo sistema tiver de ser usada, não especifique mais nada.

    • Se a identidade atribuída pelo usuário tiver de ser usada, adicione os seguintes valores de configurações de aplicativo na configuração do aplicativo:

      • AzureWebJobsStorage__credential: managedidentity

      • AzureWebJobsStorage__clientId: (esse é um valor de GUID obtido junto ao centro de administração do Microsoft Entra)

      Screenshot of user identity client id.

Configurar seu aplicativo para usar credenciais de segredo do cliente

Registrar um aplicativo cliente no Microsoft Entra ID é uma outra maneira de configurar o acesso a um serviço do Azure. Nas etapas a seguir, você aprenderá a usar credenciais de segredo do cliente para autenticação em sua conta de Armazenamento do Microsoft Azure. Esse método pode ser usado por aplicativos de funções localmente e no Azure. No entanto, a credencial de segredo do cliente é menos recomendada do que a identidade gerenciada, pois é mais complicado configurar e gerenciar e requer o compartilhamento de uma credencial secreta com o serviço Azure Functions.

Pré-requisitos

As etapas a seguir pressupõem que você esteja iniciando com um aplicativo Durable Functions existente e tenha conhecimento sobre como operá-lo. Em particular, este início rápido considera que você já:

  • Criou um projeto do Durable Functions no computador local ou no portal do Azure.

Registrar um aplicativo cliente no Microsoft Entra ID

  1. Registre um aplicativo cliente no Microsoft Entra ID no portal do Azure de acordo com essas instruções.

  2. Crie um segredo do cliente para seu aplicativo cliente. Em seu aplicativo registrado:

    1. Selecione Certificados & Segredos e selecione Novo segredo do cliente.

    2. Preencha uma Descrição e escolha a hora válida do segredo no campo Expira.

    3. Copie e salve o valor do segredo com cuidado porque ele não aparecerá novamente depois que você sair da página.

    Screenshot of client secret page.

Atribuir RBAC (Controles de Acesso Baseados em Função) ao aplicativo cliente

Atribua essas três funções ao aplicativo cliente com as etapas a seguir.

  • Colaborador de Dados da Fila de Armazenamento
  • Colaborador de dados de blob de armazenamento
  • Colaborador de dados da tabela de armazenamento
  1. Navegue até a página de Controle de Acesso (IAM) da conta de armazenamento da sua função e adicione uma nova atribuição de função.

    Screenshot of access control page.

  2. Escolha a função necessária, clique em avançar, pesquise seu aplicativo, examine e adicione.

    Screenshot of role assignment page.

Adicionar uma configuração de segredo do cliente

Para executar e testar no Azure, especifique o seguinte na página Configuração do aplicativo de funções do Azure no portal do Azure. Para executar e testar localmente, especifique o seguinte no arquivo local.settings.json da função.

  1. Remova o valor padrão “AzureWebJobsStorage”.

  2. Vincule a conta de armazenamento do Azure adicionando uma das seguintes configurações de valor:

    • AzureWebJobsStorage__accountName: Por exemplo: mystorageaccount123

    • AzureWebJobsStorage__blobServiceUri: Exemplo: https://mystorageaccount123.blob.core.windows.net/

      AzureWebJobsStorage__queueServiceUri: Exemplo: https://mystorageaccount123.queue.core.windows.net/

      AzureWebJobsStorage__tableServiceUri: Exemplo: https://mystorageaccount123.table.core.windows.net/

    Os valores dessas variáveis de URI podem ser encontrados na conta de armazenamento na guia Pontos de extremidade.

    Screenshot of endpoint sample.

  3. Adicione uma credencial de segredo do cliente especificando os seguintes valores:

    • AzureWebJobsStorage__clientId: (esse é um valor de GUID encontrado na página do aplicativo do Microsoft Entra)

    • AzureWebJobsStorage__ClientSecret: (esse é o valor secreto gerado no centro de administração do Microsoft Entra em uma etapa anterior)

    • AzureWebJobsStorage__tenantId: (essa é a ID do locatário no qual o aplicativo do Microsoft Entra está registrado)

    Os valores de ID do cliente e ID de locatário podem ser encontrados na página de visão geral do aplicativo cliente. O valor do segredo do cliente é aquele que foi cuidadosamente salvo na etapa anterior. Ele não estará disponível depois que a página for atualizada.

    Screenshot of application's overview page.