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 se conectar às filas do Barramento de Serviço do Azure 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á a:
- Criar um namespace do Barramento de Serviço e da fila.
- Configure seu aplicativo de funções com uma identidade gerenciada.
- Crie uma atribuição de função concedendo a essa permissão de identidade para ler da fila do Barramento de Serviço.
- Crie e implante um aplicativo de funções com um gatilho do Barramento de Serviço.
- Verifique 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 namespace do Barramento de Serviço e da fila
No portal do Azure, escolha Criar um recurso (+) .
Na página Criar um recurso, pesquise e selecione Barramento de Serviço do Azure e selecione Criar.
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. Selecione Examinar + criar. Depois da validação, selecione Criar.
Após a implantação ser concluída, selecione Ir para o recurso.
Crie um namespace de Barramento de Serviço e selecione + Fila para adicionar uma fila.
Insira myinputqueue como o nome da nova fila e selecione Criar.
Agora que você tem uma fila, pode 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ê precisa adicionar a atribuição de função 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 o namespace do Barramento de Serviço. Você também pode adicionar sua própria conta a essa função, o que possibilita a conexão com o 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 informações sobre requisitos de função específicos, consulte a documentação de gatilho e associação para o serviço.
No namespace do Barramento de Serviço que você criou, selecione Controle de acesso (IAM). Esta página é onde você pode exibir e configurar quem tem acesso ao recurso.
Selecione + Adicionar e selecione Adicionar atribuição de função.
Pesquise o Receptor de Dados do Barramento de Serviço do Azure, selecione-o e selecione Avançar.
Na guia Membros, em Atribuir acesso a, escolha Identidade Gerenciada
Selecione Selecionar membros para abrir o painel Selecionar identidades gerenciadas.
Confirme se a Assinatura é aquela na qual você criou os recursos anteriormente.
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.
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.
Selecione seu aplicativo. Ele deve ser movido para baixo na seção Membros selecionados. Escolha Selecionar.
De volta à tela Adicionar atribuição de função, selecione Examinar + atribuir. Examine a configuração e selecione Examinar + atribuir.
Você concedeu ao aplicativo de funções acesso ao namespace do Barramento de Serviço usando identidades gerenciadas.
Conectar-se ao Barramento de Serviço em seu aplicativo de funções
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.
Em seu aplicativo de funções, expanda Configurações e selecione Variáveis de ambiente.
Na guia Configurações do aplicativo, selecione + Adicionar para criar uma configuração. Use as informações na tabela a seguir para inserir o Nome e o Valor para a nova configuração:
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. Selecione Aplicar e selecione Aplicar e Confirmar para salvar suas alterações e reiniciar a função de aplicativo.
Observação
Quando você usa a Configuração de Aplicativos do Azure ou 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 do __
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 seu projeto local.
Adicionar uma função disparada pelo Barramento de Serviço
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
Navegue até a pasta do projeto:
cd LocalFunctionProj
Na pasta raiz do projeto, execute o seguinte comando:
dotnet add package Microsoft.Azure.WebJobs.Extensions.ServiceBus --version 5.2.0
Esse comando substitui a versão padrão do pacote de extensão do Barramento de Serviço por uma versão que dá suporte a identidades gerenciadas.
Execute o seguinte comando para adicionar uma função disparada pelo Barramento de Serviço ao projeto:
func new --name ServiceBusTrigger --template ServiceBusQueueTrigger
Esse comando 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.
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 paraServiceBusConnection
. Esse nome é o namespace do Barramento de Serviço usado pela conexão baseada em identidadeServiceBusConnection__fullyQualifiedNamespace
que você configurou 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](#connect-to-the-service-bus-in-your-function-app). Além disso, você precisa atribuir a função à identidade do desenvolvedor. Para obter mais informações, consulte 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
Execute o seguinte comando para gerar localmente os arquivos necessários para o pacote de implantação:
dotnet publish --configuration Release
Navegue até a subpasta
\bin\Release\netcoreapp3.1\publish
e crie um arquivo .zip com base no conteúdo dela.Publique o arquivo de .zip executando o seguinte comando, substituindo os parâmetros
FUNCTION_APP_NAME
,RESOURCE_GROUP_NAME
ePATH_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
No portal, pesquise por
Application Insights
e selecione Application Insights em Serviços.Em Application Insights, procure ou pesquise por sua instância nomeada.
Em sua instância, selecione Métricas em Tempo Real em Investigar.
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 no menu à esquerda.
Selecione sua fila chamada
myinputqueue
.Selecione Service Bus Explorer no menu à esquerda.
Envie uma mensagem de teste.
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 o 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.
Avance para o próximo artigo para saber como gerenciar a identidade.