Compartilhar via


Configurar a identidade gerenciada para o Agendador de Tarefas Duráveis

O Agendador de Tarefas Duráveis dá suporte à autenticação de identidade gerenciada atribuída pelo usuário ou atribuída pelo 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 reutilizados depois que o aplicativo é desprovisionado.

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

Função Descrição
Colaborador de Dados de Tarefa Durável Função para todas as operações de acesso a dados. Essa função é um superconjunto de todas as outras funções.
Trabalho de Tarefa Durável Função usada por aplicativos de trabalho para interagir com o Agendador de Tarefas Duráveis. Atribua essa função se seu aplicativo for usado apenas para processar orquestrações, atividades e entidades.
Leitor de dados de tarefa durável Função para ler todos os dados do Agendador de Tarefas Duráveis. Atribua essa função se você precisar apenas de uma lista de orquestrações e conteúdos de entidades.

Observação

A maioria dos aplicativos do Durable Functions exige a função Colaborador de Dados do Durable Functions.

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 RBAC (controle de acesso baseado em função) a um recurso de identidade gerenciada

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

    az identity create -g RESOURCE_GROUP_NAME -n IDENTITY_NAME
    
  2. Definir o atribuídor 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 confere 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. Conceda acesso. Execute o comando a seguir para criar a atribuição de função e conceder acesso.

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

    Saída esperada

    O exemplo de saída a seguir mostra uma identidade de desenvolvedor atribuída com a função de Colaborador de Dados da 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 com escopo para 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. Criar uma identidade gerenciada atribuída pelo usuário.

  2. Navegue até o recurso de agendador de tarefas durável no portal.

  3. Clique em um nome de 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 da Tarefa Durável. Clique em Próximo.

    Captura de tela da seleção da atribuição de função Colaborador de Dados da Tarefa Durável no portal.

  7. Na guia Membros , para atribuir acesso, selecione Identidade gerenciada.

  8. Para Membros, clique em + Selecionar membros.

  9. No painel Selecionar identidades gerenciadas, expanda o menu suspenso identidade gerenciada e selecione identidade gerenciada atribuída ao usuário.

    Captura de tela da seleção do tipo de identidade gerenciada atribuído pelo usuário que você usará no portal.

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

  11. Clique em Examinar + atribuir para concluir a atribuição da função.

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. Obter ID do recurso da identidade de gerenciamento.

    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 aplicativo 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 tela da adição da identidade gerenciada atribuída pelo usuário ao aplicativo 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}", em que Endpoint é o ponto de extremidade do agendador e client id é a 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 ponto de extremidade do agendador.

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

    Para obter a 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 ao 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 ponto de extremidade do agendador, navegue atá a guia Visão Geral do recurso do agendador e localize “Ponto de extremidade” na seção superior Essentials.

    Para obter a ID do cliente de identidade gerenciada, navegue até a guia Visão geral do seu recurso e localize "ID do cliente" na seção superior do Essentials.

  2. Navegue até seu aplicativo no portal.

  3. No menu à esquerda, clique emVariáveis de Ambiente de >.

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

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

  6. Clique em Aplicar e confirme para adicionar as variáveis.

Observação

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

Próximas etapas