Partilhar via


Configurar identidade gerida para o Durable Task Scheduler

O Agendador de Tarefas Durável suporta apenas a autenticação de identidade gerida atribuída ao utilizador ou ao sistema. As identidades atribuídas pelo usuário são recomendadas, pois não estão vinculadas ao ciclo de vida do aplicativo e podem ser reutilizadas depois que o aplicativo for desprovisionado.

Você pode conceder as seguintes funções relacionadas ao Agendador de Tarefas Duráveis a uma identidade:

Funções Descrição
Colaborador para Dados de Tarefas Duráveis Função para todas as operações de acesso a dados. Este papel é um superconjunto de todos os outros papéis.
Trabalhador de tarefa durável Função usada por aplicativos de trabalho para interagir com o Agendador de Tarefas Duráveis. Atribua esta função se a sua aplicação for usada apenas para processar orquestrações, atividades e entidades.
Leitor de Dados de Tarefas Duráveis Função para ler todos os dados do Agendador de Tarefas Duráveis. Atribua esta função se precisar apenas de uma lista de orquestrações e dados de entidades.

Observação

A maioria dos aplicativos de Funções Duráveis requer a função de Colaborador de Dados de Tarefa Durável .

Neste artigo, você aprenderá a conceder permissões a um recurso de identidade e configurar seu aplicativo de computação para usar a identidade para acesso a agendadores e hubs de tarefas.

Atribuir controle de acesso baseado em função (RBAC) a um recurso de identidade gerenciado

  1. Criar uma identidade gerenciada atribuída pelo usuário

    az identity create -g RESOURCE_GROUP_NAME -n IDENTITY_NAME
    
  2. Defina o cessionário para o recurso de identidade criado

    assignee=$(az identity show --name IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv) 
    
  3. Defina o escopo. A concessão de acesso no escopo do agendador dá acesso a todos os hubs de tarefas nesse agendador.

    Hub de Tarefas

    scope="/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.DurableTask/schedulers/SCHEDULER_NAME/taskHubs/TASKHUB_NAME"
    

    Agendador

    scope="/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.DurableTask/schedulers/SCHEDULER_NAME"
    
  4. Conceder acesso. Execute o seguinte comando para criar a atribuição de função e conceder acesso.

    az role assignment create \
      --assignee "$assignee" \
      --role "Durable Task Data Contributor" \
      --scope "$scope"
    

    Resultados esperados

    O exemplo de saída a seguir mostra uma identidade de desenvolvedor atribuída com a função de Colaborador de Dados de Tarefa Durável no nível do agendador :

    {
      "condition": null,
      "conditionVersion": null,
      "createdBy": "YOUR_DEVELOPER_CREDENTIAL_ID",
      "createdOn": "2024-12-20T01:36:45.022356+00:00",
      "delegatedManagedIdentityResourceId": null,
      "description": null,
      "id": "/subscriptions/YOUR_SUBSCRIPTION_ID/resourceGroups/YOUR_RESOURCE_GROUP/providers/Microsoft.DurableTask/schedulers/YOUR_DTS_NAME/providers/Microsoft.Authorization/roleAssignments/ROLE_ASSIGNMENT_ID",
      "name": "ROLE_ASSIGNMENT_ID",
      "principalId": "YOUR_DEVELOPER_CREDENTIAL_ID",
      "principalName": "YOUR_EMAIL",
      "principalType": "User",
      "resourceGroup": "YOUR_RESOURCE_GROUP",
      "roleDefinitionId": "/subscriptions/YOUR_SUBSCRIPTION/providers/Microsoft.Authorization/roleDefinitions/ROLE_DEFINITION_ID",
      "roleDefinitionName": "Durable Task Data Contributor",
      "scope": "/subscriptions/YOUR_SUBSCRIPTION/resourceGroups/YOUR_RESOURCE_GROUP/providers/Microsoft.DurableTask/schedulers/YOUR_DTS_NAME",
      "type": "Microsoft.Authorization/roleAssignments",
      "updatedBy": "YOUR_DEVELOPER_CREDENTIAL_ID",
      "updatedOn": "2024-12-20T01:36:45.022356+00:00"
    }
    

Observação

A instrução a seguir mostra uma atribuição de função limitada a um hub de tarefas específico. Se você precisar de acesso a todos os hubs de tarefas em um agendador, execute a atribuição no nível do agendador.

  1. Crie uma identidade gerenciada atribuída pelo usuário.

  2. Navegue até o recurso de planeador de tarefas persistente no portal.

  3. Clique no nome de um hub de tarefas.

  4. No menu à esquerda, selecione Controle de acesso (IAM).

  5. Clique em Adicionar para adicionar uma atribuição de função.

    Captura de tela da adição da atribuição de função no painel Controle de Acesso no portal.

  6. Pesquise e selecione Colaborador de Dados de Tarefa Durável. Clique em Next.

    Captura de ecrã a mostrar a seleção da atribuição da função Colaborador de Dados de Tarefas Duráveis no portal.

  7. Na guia Membros , para Atribuir acesso a, selecione Identidade gerenciada.

  8. Para Membros, clique em + Selecionar membros.

  9. No painel Selecionar identidades gerenciadas , expanda a lista suspensa Identidade gerenciada e selecione Identidade gerenciada atribuída pelo usuário.

    Captura de ecrã a mostrar a seleção do tipo de identidade gerida atribuída pelo utilizador que vai utilizar no portal.

  10. Escolha a identidade gerenciada pelo usuário criada anteriormente e clique no botão Selecionar .

  11. Clique em Rever e atribuir para concluir a atribuição do papel.

Atribuir identidade gerenciada ao seu aplicativo

Agora que a identidade tem o RBAC necessário para acessar o Agendador de Tarefas Duráveis, você precisa atribuí-la ao seu aplicativo.

  1. Obtenha o ID do recurso de gerenciar identidade.

    resource_id=$(az resource show --resource-group RESOURCE_GROUP --name MANAGED_IDENTITY_NAME --resource-type Microsoft.ManagedIdentity/userAssignedIdentities --query id --output tsv)
    
  2. Atribua a identidade ao aplicativo.

    az functionapp identity assign --resource-group RESOURCE_GROUP_NAME --name FUNCTION_APP_NAME --identities "$resource_id"
    
  1. No seu aplicação no portal, selecione Configurações>Identidade.

  2. Clique na guia Usuário atribuído .

  3. Clique em + Adicionar e escolha a identidade criada na última seção. Clique no botão Adicionar.

    Captura de ecrã a mostrar a adição da identidade gerida atribuída pelo utilizador à sua aplicação de funções no portal.

Adicionar variáveis de ambiente ao aplicativo

Adicione estas duas variáveis de ambiente à configuração do aplicativo:

  • TASKHUB_NAME: nome do hub de tarefas
  • DURABLE_TASK_SCHEDULER_CONNECTION_STRING: o formato da cadeia de caracteres é "Endpoint={scheduler point};Authentication=ManagedIdentity;ClientID={client id}", onde Endpoint é o ponto de extremidade do agendador e client id é o ID do cliente da identidade.
  1. Obtenha as informações necessárias para a cadeia de conexão do Agendador de Tarefas Duráveis.

    Para obter o endpoint do agendador.

    az durabletask scheduler show --resource-group RESOURCE_GROUP_NAME --name DTS_NAME --query 'properties.endpoint' --output tsv
    

    Para obter o ID do cliente da identidade gerenciada.

    az identity show --name MANAGED_IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv
    
  2. Use o comando a seguir para adicionar a variável de ambiente para a cadeia de conexão do agendador ao aplicativo.

    az functionapp config appsettings set --resource-group RESOURCE_GROUP_NAME --name FUNCTION_APP_NAME --settings KEY_NAME=KEY_VALUE
    
  3. Repita a etapa anterior para adicionar a variável de ambiente para o nome do hub de tarefas.

  1. Obtenha as informações necessárias para a cadeia de conexão do Agendador de Tarefas Duráveis.

    Para obter o endpoint do agendador, navegue até ao separador Resumo do recurso do agendador e encontre "Endpoint" na seção superior de Informações Essenciais.

    Para obter a sua ID de cliente de identidade gerida, navegue até ao separador Resumo do seu recurso e encontre "ID do cliente" na parte superior da seção Essentials.

  2. Navegue até a sua aplicação no portal.

  3. No menu à esquerda, clique em Configurações>Variáveis de ambiente.

  4. Adicione a variável de ambiente para a cadeia de conexão do Agendador de Tarefas Durável.

  5. Adicione a variável de ambiente para o nome do hub de tarefas.

  6. Clique em Aplicar e, em seguida, em Confirmar para adicionar as variáveis.

Observação

Se você usar a identidade atribuída pelo sistema, sua cadeia de conexão não precisará da ID do cliente do recurso de identidade: "Endpoint={scheduler endpoint};Authentication=ManagedIdentity".

Próximos passos