Share via


Tutorial: Usar conexões baseadas em identidade em vez de segredos com gatilhos e associações

Este tutorial mostra como configurar o Azure Functions para conectar-se a filas do Azure Barramento de Serviço usando identidades gerenciadas em vez de segredos armazenados nas configurações do aplicativo de funções. O tutorial é uma continuação do tutorial Criar um aplicativo de funções sem segredos de armazenamento padrão na própria definição. Para saber mais sobre conexões baseadas em identidade, confira Configurar uma conexão baseada em identidade.

Embora os procedimentos mostrados funcionem em geral para todas as linguagens, este tutorial atualmente dá suporte a funções de biblioteca de classes C# no Windows, especificamente.

Neste tutorial, você aprenderá como:

  • Criar um namespace do Barramento de Serviço e da fila.
  • Configurar seu aplicativo de funções com a identidade gerenciada
  • Criar uma atribuição de função concedendo a essa identidade permissão para ler da fila Barramento de Serviço
  • Crie e implante um aplicativo de funções com um gatilho do Barramento de Serviço.
  • Verificar sua conexão baseada em identidade com o Barramento de Serviço

Pré-requisito

Conclua o tutorial anterior: Criar um aplicativo de funções com conexões baseadas em identidade.

Criar um barramento de serviço e uma fila

  1. No portal do Azure, escolha Criar um recurso (+) .

  2. Na página Criar um recurso, selecione Integração>Barramento de Serviço.

  3. Na página Básico, use a tabela a seguir para definir as configurações de namespace do Barramento de Serviço. Use os valores padrão para as opções restantes.

    Opção Valor sugerido Descrição
    Assinatura Sua assinatura A assinatura na qual os recursos são criados.
    Grupo de recursos myResourceGroup O grupo de recursos que você criou com seu aplicativo de funções.
    Nome do namespace Nome globalmente exclusivo O namespace de sua instância da qual disparar sua função. Como o namespace é acessível publicamente, você precisa usar um nome globalmente exclusivo no Azure. O nome também precisa ter entre 6 e 50 caracteres, conter apenas caracteres alfanuméricos e traços e não pode começar com um número.
    Local myFunctionRegion A região em que você criou seu aplicativo de funções.
    Tipo de preços Basic A camada Barramento de Serviço básica.
  4. Selecione Examinar + criar. Depois da validação, selecione Criar.

  5. Após a implantação ser concluída, selecione Ir para o recurso.

  6. Crie um namespace de Barramento de Serviço e selecione + Fila para adicionar uma fila.

  7. Digite myinputqueue como o nome da nova fila e selecione Criar.

Agora que você tem uma fila, você adicionará uma atribuição de função à identidade gerenciada do aplicativo de funções.

Configurar seu gatilho de Barramento de Serviço com uma identidade gerenciada

Para usar gatilhos do Barramento de Serviço com conexões baseadas em identidade, você precisará adicionar a atribuição de função do Receptor de Dados do Barramento de Serviço do Azure à identidade gerenciada em seu aplicativo de funções. Essa função é necessária ao usar identidades gerenciadas para disparar fora do namespace do barramento de serviço. Você também pode adicionar uma conta própria a essa função, o que possibilita a conexão ao namespace do barramento de serviço durante o teste local.

Observação

Os requisitos de função para usar conexões baseadas em identidade variam dependendo do serviço e de como você está se conectando a ele. As necessidades variam entre gatilhos, associações de entrada e associações de saída. Para obter mais detalhes sobre requisitos de função específicos, confira a documentação sobre gatilhos e associações para o serviço.

  1. No namespace do barramento de serviço que você acabou de criar, selecione Controle de Acesso (IAM) . É aqui que você pode exibir e configurar quem tem acesso ao recurso.

  2. Clique em Adicionar e selecione Adicionar atribuição de função.

  3. Pesquise Receptor de Dados do Barramento de Serviço do Azure, selecione-o e selecione Avançar.

  4. Na guia Membros, em Atribuir acesso a, escolha Identidade Gerenciada

  5. Clique em Selecionar membros para abrir o painel Selecionar identidades gerenciadas.

  6. Confirme se a Assinatura é aquela na qual você criou os recursos anteriormente.

  7. No seletor Identidade gerenciada, escolha Aplicativo de Funções da categoria Identidade gerenciada atribuída pelo sistema. O rótulo "Aplicativo de Funções" pode ter um número entre parênteses ao lado dele, indicando o número de aplicativos na assinatura com identidades atribuídas pelo sistema.

  8. Seu aplicativo deve aparecer em uma lista abaixo dos campos de entrada. Se você não a vir, poderá usar a caixa Selecionar para filtrar os resultados com o nome do aplicativo.

  9. Clique no aplicativo. Ele deve ser movido para baixo na seção Membros selecionados. Clique em Selecionar.

  10. De volta à tela Adicionar atribuição de função, clique em Revisar + atribuir. Revise a configuração e clique em Revisar + atribuir.

Usando identidades gerenciadas, você concedeu ao aplicativo de funções acesso ao namespace do barramento de serviço.

Conectar-se ao Barramento de Serviço em seu aplicativo de funções

  1. No portal, pesquise o aplicativo de funções que você criou no tutorial anterior ou navegue até ele na página Aplicativo de Funções.

  2. No aplicativo de funções, selecione Configuração em Configurações.

  3. Em Configurações de aplicativo, selecione + Nova configuração de aplicativo para criar a configuração na tabela a seguir.

    Nome Valor Descrição
    ServiceBusConnection__fullyQualifiedNamespace <SERVICE_BUS_NAMESPACE>.servicebus.windows.net Essa configuração conecta seu aplicativo de funções com o Barramento de Serviço usando uma conexão baseada em identidade, em vez de segredos.
  4. Depois de criar as duas configurações, selecione Salvar>Confirmar.

Observação

Ao usar a Configuração de Aplicativos do Azure ou o Key Vault para fornecer configurações para conexões de Identidade Gerenciada, os nomes de configuração devem usar um separador de chave válido, como : ou / no lugar de __ para garantir que os nomes sejam resolvidos corretamente.

Por exemplo, ServiceBusConnection:fullyQualifiedNamespace.

Agora que você preparou o aplicativo de funções para se conectar ao namespace do barramento de serviço usando uma identidade gerenciada, você pode adicionar uma nova função que usa um gatilho do Barramento de Serviço ao projeto local.

Adicionar uma função disparada pelo Barramento de Serviço

  1. Execute o comando func init da seguinte maneira para criar um projeto de funções em uma pasta chamada LocalFunctionProj com o runtime especificado:

    func init LocalFunctionProj --dotnet
    
  2. Navegue até a pasta do projeto:

    cd LocalFunctionProj
    
  3. Na pasta raiz do projeto, execute os seguintes comandos:

    dotnet add package Microsoft.Azure.WebJobs.Extensions.ServiceBus --version 5.2.0
    

    Isso substitui a versão padrão do pacote de extensões do Barramento de Serviço por uma versão que dá suporte a identidades gerenciadas.

  4. Execute o seguinte comando para adicionar uma função disparada pelo Barramento de Serviço ao projeto:

    func new --name ServiceBusTrigger --template ServiceBusQueueTrigger 
    

    Isso adiciona o código para um novo gatilho do Barramento de Serviço e uma referência ao pacote de extensão. Você precisa adicionar uma configuração de conexão de namespace do barramento de serviço para esse gatilho.

  5. Abra o novo arquivo de projeto ServiceBusTrigger.cs e substitua a classe ServiceBusTrigger pelo seguinte código:

    public static class ServiceBusTrigger
    {
        [FunctionName("ServiceBusTrigger")]
        public static void Run([ServiceBusTrigger("myinputqueue", 
            Connection = "ServiceBusConnection")]string myQueueItem, ILogger log)
        {
            log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
        }
    }
    

    Este exemplo de código atualiza o nome da fila para myinputqueue, que é o mesmo nome que você criou anteriormente. Ele também define o nome da conexão Barramento de Serviço para ServiceBusConnection. Esse é o namespace do Barramento de Serviço usado pela conexão baseada em identidade ServiceBusConnection__fullyQualifiedNamespace configurada no portal.

Observação

Se você tentar executar suas funções agora usando func start, receberá um erro. Isso é porque você não tem uma conexão baseada em identidade definida localmente. Se você quiser executar sua função localmente, defina a configuração do aplicativo ServiceBusConnection__fullyQualifiedNamespace em local.settings.json como fez na seção anterior. Além disso, você precisará atribuir a função à sua identidade de desenvolvedor. Para obter mais detalhes, confira a documentação desenvolvimento local com conexões baseadas em identidade.

Observação

Ao usar a Configuração de Aplicativos do Azure ou o Key Vault para fornecer configurações para conexões de Identidade Gerenciada, os nomes de configuração devem usar um separador de chave válido, como : ou / no lugar de __ para garantir que os nomes sejam resolvidos corretamente.

Por exemplo, ServiceBusConnection:fullyQualifiedNamespace.

Publicar o projeto atualizado

  1. Execute o seguinte comando para gerar localmente os arquivos necessários para o pacote de implantação:

    dotnet publish --configuration Release
    
  2. Navegue até a subpasta \bin\Release\netcoreapp3.1\publish e crie um arquivo .zip com base no conteúdo dela.

  3. Publique o arquivo de .zip executando o seguinte comando, substituindo os parâmetros FUNCTION_APP_NAME, RESOURCE_GROUP_NAME e PATH_TO_ZIP conforme apropriado:

    az functionapp deploy -n FUNCTION_APP_NAME -g RESOURCE_GROUP_NAME --src-path PATH_TO_ZIP
    

Agora que você atualizou o aplicativo de funções com o novo gatilho, você pode verificar se ele funciona usando a identidade.

Validar suas alterações

  1. No portal, pesquise por Application Insights e selecione Application Insights em Serviços.

  2. Em Application Insights, procure ou pesquise por sua instância nomeada.

  3. Em sua instância, selecione Métricas em Tempo Real em Investigar.

  4. Mantenha a guia anterior aberta e abra o portal do Azure em uma nova guia. Na nova guia, navegue até o namespace do Barramento de Serviço, selecione Filas na folha à esquerda.

  5. Selecione sua fila chamada myinputqueue.

  6. Na folha à esquerda, selecione Service Bus Explorer.

  7. Envie uma mensagem de teste.

  8. Selecione a guia Métricas em Tempo Real e veja a execução da fila do Barramento de Serviço.

Parabéns! Você configurou com êxito seu gatilho de fila do Barramento de Serviço com uma identidade gerenciada.

Limpar os recursos

Nas etapas anteriores, você criou os recursos do Azure em um grupo de recursos. Se você não espera precisar desses recursos no futuro, poderá excluí-los ao excluir o grupo de recursos.

No menu do portal do Azure ou na Página inicial, selecione Grupos de recursos. Em seguida, na página Grupos de recursos, selecione myResourceGroup.

Na página myResourceGroup, certifique-se de que os recursos listados são aqueles que deseja excluir.

Selecione Excluir grupo de recursos, digite myResourceGroup na caixa de texto para confirmar e selecione Excluir.

Próximas etapas

Neste tutorial, você criou um aplicativo de funções com conexões baseadas em identidade.

Use os seguintes links para saber mais sobre conexões baseadas em identidade no Azure Functions: