Configurar funções duráveis com o Microsoft Entra ID

O Microsoft Entra ID (Microsoft Entra ID ) é um serviço de gerenciamento de identidade e acesso baseado em nuvem. As conexões baseadas em identidade permitem que as Funções Duráveis façam solicitações autorizadas contra recursos protegidos do Microsoft Entra, como uma conta de Armazenamento do Azure, sem a necessidade de gerenciar segredos manualmente. Usando o provedor de armazenamento padrão do Azure, o Durable Functions precisa ser autenticado 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 gerenciadas e credenciais secretas do cliente.

Uma identidade gerenciada permite que seu aplicativo acesse facilmente outros recursos protegidos pelo Microsoft Entra, como o Azure Key Vault. A identidade gerenciada é suportada nas versões de extensão Durable Functions 2.7.0e superiores.

Nota

Estritamente falando, uma identidade gerenciada só está disponível para aplicativos ao executar 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ê está começando com um aplicativo Durable Functions existente e está familiarizado com como operá-lo. Em particular, este guia de início rápido pressupõe que você já:

  • Criou um projeto de Funções Duráveis no portal do Azure ou implantou um Durable Functions local no Azure.

Se este não for o caso, sugerimos que você comece com um dos seguintes artigos, que fornece instruções detalhadas sobre como alcançar todos os requisitos acima:

Ativar a identidade gerida

Apenas uma identidade é necessária para sua função, seja uma identidade gerenciada atribuída ao sistema ou uma identidade gerenciada atribuída ao 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 controles de acesso baseados em função (RBAC) à identidade gerenciada

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

  • Contribuidor de dados da fila de armazenamento
  • Contribuinte de Dados do Armazenamento de Blobs
  • Contribuidor de Dados de Tabela de Armazenamento

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

Navegue até a página Configuração do seu aplicativo de função 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/

      Nota

      Se estiver a utilizar o Azure Government ou qualquer outra nuvem separada do Azure global, terá de utilizar esta segunda opção para fornecer URLs de serviço específicas. Os valores para essas 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 Azure com o Azure Government, consulte a documentação Desenvolver com a API de Armazenamento no Azure Government .

    Screenshot of endpoint sample.

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

    • Se a identidade atribuída ao sistema deve ser usada, não especifique mais nada.

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

      • AzureWebJobsStorage__credential: ManagedIdentity

      • AzureWebJobsStorage__clientId: (Este é um valor GUID que você obtém do centro de administração do Microsoft Entra)

      Screenshot of user identity client id.

Configurar seu aplicativo para usar credenciais secretas do cliente

Registrar um aplicativo cliente no Microsoft Entra ID é outra maneira de configurar o acesso a um serviço do Azure. Nas etapas a seguir, você aprenderá a usar credenciais secretas do cliente para autenticação em sua conta de Armazenamento do Azure. Esse método pode ser usado por aplicativos de função localmente e no Azure. No entanto, a credencial de segredo do cliente é menos recomendada do que a identidade gerenciada, pois é mais complicada de 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ê está começando com um aplicativo Durable Functions existente e está familiarizado com como operá-lo. Em particular, este guia de início rápido pressupõe que você já:

  • Criou um projeto de Funções Duráveis em sua máquina local ou no portal do Azure.

Registrar um aplicativo cliente no Microsoft Entra ID

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

  2. Crie um segredo de cliente para seu aplicativo cliente. Na sua candidatura registada:

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

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

    3. Copie e salve o valor secreto com cuidado, pois ele não aparecerá novamente depois que você sair da página.

    Screenshot of client secret page.

Atribuir controles de acesso baseados em função (RBAC) ao aplicativo cliente

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

  • Contribuidor de dados da fila de armazenamento
  • Contribuinte de Dados do Armazenamento de Blobs
  • Contribuidor de Dados de Tabela de Armazenamento
  1. Navegue até a página 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 e, em seguida, procure seu aplicativo, revise e adicione.

    Screenshot of role assignment page.

Adicionar configuração de segredo do cliente

Para executar e testar no Azure, especifique o seguinte na página Configuração do seu aplicativo de função 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 para essas 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: (este é um valor GUID encontrado na página do aplicativo Microsoft Entra)

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

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

    Os valores de ID do cliente e ID do locatário podem ser encontrados na página de visão geral do aplicativo cliente. O valor secreto 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.