Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este quickstart mostra como configurar uma aplicação Durable Functions para usar ligações baseadas em identidade tanto para o backend do Durable Task Scheduler quer para o fornecedor do Armazenamento do Azure. A plataforma Azure gere uma identidade gerida a partir do Microsoft Entra ID – não precisa de provisionar ou rodar segredos.
Este caminho assume que a sua aplicação já está configurada para usar o backend do Durable Task Scheduler. Se a sua aplicação ainda utiliza o fornecedor Armazenamento do Azure, escolha o caminho Armazenamento do Azure neste artigo.
Neste artigo:
- Configuração de desenvolvimento local — Use o Azurite ou as credenciais do seu programador para testes locais
- Ligações baseadas em identidade para aplicação implementada em Azure — Ative uma identidade gerida e configure a sua Função Aplicação
Note
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:
- Crie sua primeira função durável - C#
- Crie sua primeira função durável - JavaScript
- Crie a sua primeira função durável - Python
- Crie sua primeira função durável - PowerShell
- Crie a sua primeira função durável - Java
Estrutura de desenvolvimento local
Tem duas opções para o desenvolvimento local. Use o emulador local Durable Task Scheduler para testes rápidos sem credenciais do Azure. Se precisares de testar ligações baseadas em identidade contra um recurso de agendador ao vivo, usa as tuas credenciais de programador em vez disso.
Opção 1: Usar o emulador local Durable Task Scheduler
Ao desenvolver localmente, use o emulador Durable Task Scheduler para poder testar a sua aplicação sem credenciais do Azure. Configura as definições da tua app para apontar para o emulador e usa o hub de tarefas predefinido.
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"DTS_CONNECTION_STRING": "Endpoint=http://localhost:8080;TaskHub=default;Authentication=None",
"TASKHUB_NAME": "default"
}
}
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 ligações baseadas em identidade, usando as suas credenciais de programador para autenticar com o seu recurso de agendamento. Depois, quando implementada no Azure, a aplicação utiliza a configuração da identidade gerida.
Quando usa credenciais de programador, a ligação tenta obter um token dos seguintes locais, por esta ordem:
- Um cache local compartilhado entre aplicativos da Microsoft
- O contexto atual do utilizador no Visual Studio
- O contexto atual do utilizador no Visual Studio Code
- 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 ao teu recurso de agendamento.
Configurar o tempo de execução para usar a identidade do desenvolvedor local
Nas definições locais, define o endpoint do escalonador e usa
Authentication=DefaultAzurepara que a aplicação use as tuas credenciais de programador.{ "IsEncrypted": false, "Values": { "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "AzureWebJobsStorage": "UseDevelopmentStorage=true", "DTS_CONNECTION_STRING": "Endpoint=https://<your-scheduler-name>.<region>.durabletask.io;TaskHub=<your-task-hub>;Authentication=DefaultAzure", "TASKHUB_NAME": "<your-task-hub>" } }Atribua a função
Durable Task Data Contributorà sua identidade de programador no recurso do agendador ou no âmbito específico do hub de tarefas.
Ligações baseadas em identidade para aplicação implementada no Azure
Ativar um recurso de identidade gerido
Ative uma identidade gerida para a sua aplicação de funções. 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 até ao seu recurso de agendamento no portal Azure e atribua a Durable Task Data Contributor função à sua identidade gerida. Para acesso de privilégio mínimo, atribua a função ao nível do hub de tarefas em vez de a atribuir ao agendador inteiro. Se usar uma identidade atribuída pelo utilizador, selecione Identidade Gerida e depois + Selecionar membros.
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:
No portal Azure, no menu de recursos da tua aplicação de funções, em Definições, seleciona Variáveis de Ambiente.
Adicione ou atualize a
DTS_CONNECTION_STRINGdefinição para que a aplicação se ligue ao seu agendador usando a identidade gerida da aplicação.Endpoint=https://<your-scheduler-name>.<region>.durabletask.io;TaskHub=<your-task-hub>;Authentication=ManagedIdentitySe usar uma identidade gerida atribuída pelo utilizador, inclua o ID do cliente na cadeia de ligação:
Endpoint=https://<your-scheduler-name>.<region>.durabletask.io;TaskHub=<your-task-hub>;Authentication=ManagedIdentity;ClientID=<your-user-assigned-identity-client-id>Adicione ou atualize a
TASKHUB_NAMEdefinição para o mesmo nome do hub de tarefas.Se o seu host de funções precisar de Armazenamento do Azure para operações ao nível do anfitrião, configure
AzureWebJobsStorageseparadamente. A infraestrutura de back-end do agendador utiliza a cadeia de ligação DTS, em vez deAzureWebJobsStorage, para o estado durável.
Verifica a tua configuração
Para confirmar que a sua configuração de identidade gerida funciona:
- No portal do Azure, navegue até à sua aplicação de funções e ative a orquestração do Durable Functions.
- Verifique se a orquestração termina com sucesso consultando o endpoint de estado ou verificando o separador Monitor .
- Se detetar erros de autenticação, verifique que:
- A identidade gerida tem a função
Durable Task Data Contributorao nível do recurso do agendador ou do centro de tarefas. - As
DTS_CONNECTION_STRINGdefinições eTASKHUB_NAMEestão corretas. - A aplicação está a usar a identidade esperada quando está a correr no Azure.
- A identidade gerida tem a função
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:
- Um cache local compartilhado entre aplicativos da Microsoft
- O contexto atual do utilizador no Visual Studio
- O contexto atual do utilizador no Visual Studio Code
- 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
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" } }Navegue até ao recurso da sua conta Armazenamento do Azure no portal Azure.
Selecione o separador Controlo de Acesso (IAM) e depois selecione Adicionar atribuição de funções.
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
Note
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.
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.
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:
No portal Azure, no menu de recursos da tua aplicação de funções, em Definições, seleciona Variáveis de Ambiente.
Na lista de configurações, localize AzureWebJobsStorage e selecione o ícone Excluir .
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__accountNameque identifica um nome de conta de armazenamento Azure. Valor de exemplo:mystorageaccount123Nuvem 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__blobServiceUriValor de exemplo:
https://mystorageaccount123.blob.core.windows.net/Nome da configuração:
AzureWebJobsStorage__queueServiceUriValor de exemplo:
https://mystorageaccount123.queue.core.windows.net/Nome da configuração:
AzureWebJobsStorage__tableServiceUriValor 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.
Note
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.
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
Note
Durable Functions não suporta
managedIdentityResourceIdquando se usa uma identidade atribuída pelo utilizador. UtilizeclientIdem substituição.
Verifica a tua configuração
Para confirmar que a sua configuração de identidade gerida funciona:
- 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).
- Verifique se a orquestração foi concluída com sucesso consultando o endpoint de estado ou a aba Monitor.
- 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
AzureWebJobsStoragecadeia de ligação foi removida. - As
AzureWebJobsStorage__accountNamedefinições (ou URI do serviço) estão corretas.