Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:Banco de Dados SQL do Azure
Este quickstart descreve como conectar uma aplicação a um banco de dados no Banco de Dados SQL do Azure e realizar consultas usando .NET e Entity Framework Core. Este início rápido segue a abordagem sem senha recomendada para se conectar ao banco de dados. Para saber mais sobre conexões sem senha, veja o hub sem senha.
Pré-requisitos
- Uma assinatura do Azure.
- Um banco de dados SQL configurado para autenticação com o Microsoft Entra ID (anteriormente Azure Active Directory). Você pode criar um usando o Quickstart: Crie um único banco de dados - Banco de Dados SQL do Azure.
- .NET 10.0 ou posterior.
- Visual Studio ou posterior com a carga de trabalho Desenvolvimento Web e ASP.NET.
- A versão mais recente da CLI do Azure.
- A versão mais recente das ferramentas do Entity Framework Core:
- Os usuários do Visual Studio devem instalar as ferramentas do Console do Gerenciador de Pacotes para o Entity Framework Core.
- Os usuários da CLI do .NET devem instalar as ferramentas da CLI do .NET para o Entity Framework Core.
Configurar o servidor de banco de dados
Conexões seguras e sem senha para o Banco de Dados SQL do Azure exigem determinadas configurações do banco de dados. Verifique as seguintes configurações no seu servidor lógico do Azure para se conectar corretamente ao Banco de Dados SQL do Azure em ambientes locais e hospedados:
Para conexões de desenvolvimento local, verifique se o servidor lógico do SQL do Azure está configurado para permitir que o endereço IP do computador local e outros serviços do Azure se conectem:
No portal do Azure, no menu de recursos, em Segurança, selecione Rede.
Selecione o botão Redes selecionadas para mostrar opções de configuração adicionais.
Selecione Adicionar o endereço IPv4 do cliente(xx.xx.xx.xx) para adicionar uma regra de firewall que habilitará as conexões do endereço IPv4 do computador local. Como alternativa, você também pode selecionar + Adicionar uma regra de firewall para inserir um endereço IP específico de sua escolha.
Verifique se a caixa de seleção Permitir que serviços e recursos do Azure acessem este servidor está marcada.
Aviso
Habilitar a configuração Permitir que serviços e recursos do Azure acessem esse servidor não é uma prática de segurança recomendada para cenários de produção. Os aplicativos reais devem implementar abordagens mais seguras, como restrições de firewall mais fortes ou configurações de rede virtual.
Você pode ler mais sobre configurações de segurança de banco de dados nos seguintes recursos:
O servidor também deve ter a autenticação do Microsoft Entra habilitada e ter uma conta do administrador do Microsoft Entra atribuída. Para conexões de desenvolvimento local, a conta do administrador do Microsoft Entra deve ser uma conta com a qual você também pode fazer logon no Visual Studio ou na CLI do Azure localmente. Você pode verificar se o servidor tem a autenticação do Microsoft Entra habilitada na página Microsoft Entra ID do servidor lógico.
Se você estiver usando uma conta pessoal do Azure, verifique se tem a instalação e configuração do Microsoft Entra para o Banco de Dados SQL do Azure para atribuir sua conta à administração do servidor. Se você estiver usando uma conta corporativa, o Microsoft Entra ID provavelmente já estará configurado.
Criar o projeto
Nesta seção, crie uma API Web Mínima .NET usando a CLI do .NET ou o Visual Studio 2022.
Na barra de menu do Visual Studio, vá em File>NewProject>.
Na janela de diálogo, entre
ASP.NETna caixa de busca de modelos de projeto e selecione o resultado da API Web ASP.NET Core. Escolha Avançar na parte inferior do diálogo.Para o nome do Project, insira
DotNetSQL. Mantenha os valores padrão para o restante dos campos e selecione Avançar.Para o Framework, selecione .NET 10.0 e desmarque Usar controladores. Este início rápido usa um modelo de API Mínima para simplificar a criação e configuração do ponto de extremidade.
Escolha Criar. O novo projeto será aberto no ambiente do Visual Studio.
Adicionar o Entity Framework Core ao projeto
Para se conectar ao Banco de Dados SQL do Azure usando .NET e Entity Framework Core, adicione os seguintes pacotes NuGet ao seu projeto, usando um dos seguintes métodos:
Na janela Gerenciador de Soluções, clique com o botão direito do mouse no nó Dependências do projeto e selecione Gerenciar Pacotes NuGet.
Na janela resultante, pesquise por EntityFrameworkCore. Localize e instale os seguintes pacotes:
-
Microsoft.EntityFrameworkCore: fornece funcionalidade essencial do Entity Framework Core -
Microsoft.EntityFrameworkCore.SqlServer: fornece componentes extras para se conectar ao servidor lógico -
Microsoft.EntityFrameworkCore.Design: fornece suporte para a execução de migrações do Entity Framework -
Microsoft.EntityFrameworkCore.Tools: fornece suporte para ferramentas do Console do Gerenciador de Pacotes do Visual Studio (somente PowerShell) -
Microsoft.AspNetCore.OpenApi: Opcional - oferece suporte para geração de documentação OpenAPI -
Swashbuckle.AspNetCore.SwaggerUI: Opcional - fornece interação da interface OpenAPI com os endpoints do app
Adicionar o código para se conectar a um Banco de Dados SQL do Azure
As bibliotecas do Entity Framework Core dependem das bibliotecas Microsoft.Data.SqlClient e Azure.Identity para implementar conexões sem senha para o Banco de Dados SQL do Azure. A biblioteca Azure.Identity fornece uma classe chamada DefaultAzureCredential que manipula a autenticação sem senha no Azure.
O DefaultAzureCredential dá suporte a vários métodos de autenticação e determina qual usar no runtime. Essa abordagem permite que seu aplicativo use diferentes métodos de autenticação em ambientes diferentes (local versus produção) sem implementar código específico do ambiente. A Visão geral da biblioteca de Identidade do Azure explica a ordem e os locais nos quais o DefaultAzureCredential procura por credenciais.
Conclua as seguintes etapas para se conectar ao Banco de Dados SQL do Azure usando o Entity Framework Core e a classe subjacenteDefaultAzureCredential:
Adicione uma seção
ConnectionStringsao arquivoappsettings.Development.jsonpara que ele corresponda ao código a seguir. Substitua<server>.database.windows.netpelo nome do servidor de banco de dados sem senha ao qual você deseja se conectar e<database>pelo nome do banco de dados.{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "ConnectionStrings": { "AZURE_SQL_CONNECTIONSTRING": "Data Source=<server>.database.windows.net;Initial Catalog=<database>;Authentication=Active Directory Default;Encrypt=True;" } }Observação
Lembre-se de atualizar os espaços reservados
<your database-server-name>e<your-database-name>na cadeia de conexão do banco de dados. Cadeias de conexão sem senha são seguras para confirmar o controle do código-fonte, pois elas não contêm segredos, como nomes de usuário, senhas ou chaves de acesso.A cadeia de conexão sem senha inclui um valor de configuração de
Authentication=Active Directory Default, que instrui o Entity Framework Core a usarDefaultAzureCredentialpara se conectar aos serviços do Azure. Quando o aplicativo é executado localmente, ele é autenticado com o usuário com o qual você está conectado ao Visual Studio. Depois que o aplicativo é implantado no Azure, o mesmo código descobre e aplica a identidade gerenciada associada ao aplicativo hospedado, que você configura posteriormente.Substitua o conteúdo do
Program.csarquivo pelo seguinte código:using Microsoft.EntityFrameworkCore; var builder = WebApplication.CreateBuilder(); builder.Services.AddOpenApi(); var connection = string.Empty; if (builder.Environment.IsDevelopment()) { builder.Configuration.AddEnvironmentVariables().AddJsonFile("appsettings.Development.json"); connection = builder.Configuration.GetConnectionString("AZURE_SQL_CONNECTIONSTRING"); } else { connection = Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING"); } builder.Services.AddDbContext<PersonDbContext>(options => options.UseSqlServer(connection)); var app = builder.Build(); if (app.Environment.IsDevelopment()) { app.MapOpenApi(); app.UseSwaggerUI(options => { options.SwaggerEndpoint("/openapi/v1.json", "v1"); }); } app.MapGet("/", () => "Hello world!"); app.MapGet("/Person", (PersonDbContext context) => context.Person.ToList()); app.MapPost("/Person", (Person person, PersonDbContext context) => { context.Add(person); context.SaveChanges(); }); app.Run(); public class Person { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } } public class PersonDbContext(DbContextOptions<PersonDbContext> options) : DbContext(options) { public DbSet<Person> Person { get; set; } }O código anterior manipula as seguintes etapas:
- Recupera a cadeia de conexão de banco de dados sem senha do arquivo
appsettings.Development.jsonpara desenvolvimento local ou das variáveis de ambiente para cenários de produção hospedados. - Registra a classe
DbContextdo Entity Framework Core com o contêiner de injeção de dependência do .NET. Você pode ler mais sobreDbContextna documentação Introdução do Entity Framework Core. - Configura suporte ao OpenAPI .NET 10.0 com SwaggerUI para fornecer uma interface que você pode usar para interagir com os endpoints do aplicativo e banco de dados.
- Adiciona pontos de extremidade para recuperar e adicionar entidades no banco de dados.
- Define uma classe
Personpara representar um único registro na tabela de banco de dadosPersonse a classePersonDbContextque foi registrada com o contêiner de injeção de dependência do .NET.
- Recupera a cadeia de conexão de banco de dados sem senha do arquivo
Executar as migrações para criar o banco de dados
Para atualizar o esquema do banco de dados para corresponder ao seu modelo de dados usando o Entity Framework Core, utilize uma migração. As migrações podem criar e atualizar incrementalmente um esquema de banco de dados para mantê-lo em sincronia com o modelo de dados do aplicativo. Para saber mais sobre esse padrão, veja a visão geral das migrações.
Abra uma janela de terminal na raiz do seu projeto.
Execute o seguinte comando para gerar uma migração inicial que pode criar o banco de dados:
Add-Migration InitialCreateUma pasta
Migrationsdeve aparecer no diretório do projeto, juntamente com um arquivo chamadoInitialCreatecom números exclusivos anexados. Execute a migração para criar o banco de dados usando o comando a seguir e as ferramentas do Entity Framework Core criam o esquema de banco de dados no Azure definido pelaPersonDbContextclasse.Update-Database
Testar o aplicativo localmente
O aplicativo está pronto para ser testado localmente. Certifique-se de estar logado no Visual Studio ou na linha de comando do CLI do Azure com a mesma conta que você configurou como administrador do seu banco de dados.
Selecione o botão de execução no topo do Visual Studio para iniciar o projeto da API.
Na página da interface do Swagger (por exemplo,
https://localhost:<port>/swagger), expanda oPOSTmétodo e selecione Tentar.Modifique o JSON de exemplo para incluir valores para o primeiro nome e o sobrenome. Selecione Executar para adicionar um novo registro ao banco de dados. A API retorna uma resposta bem-sucedida.
Expanda o
GETmétodo na página da interface do usuário do Swagger e selecione Experimentar. Selecione Executar e a pessoa que você acabou de criar será retornada.
Implantar no Serviço de Aplicativo do Azure
O aplicativo está pronto para ser implantado no Azure. O Visual Studio pode criar um Serviço de Aplicativo do Azure e implantar seu aplicativo em um único fluxo de trabalho.
Garanta que o app seja parado e que seja construído com sucesso.
Na janela Gerenciador de Soluções do Visual Studio, clique com o botão direito do mouse no nó de projeto de nível superior e selecione Publicar.
Na caixa de diálogo de publicação, selecione Azure como destino da implantação e selecione Avançar.
Para o destino específico, selecione Serviço de Aplicativo do Azure (Windows) e selecione Avançar.
Selecione o ícone + verde para criar um novo Serviço de Aplicativo para implantar e insira os seguintes valores:
- Nome: deixe o valor padrão.
- Nome da assinatura: selecione a assinatura na qual implantar.
- Grupo de recursos: selecione Novo e crie um grupo de recursos chamado msdocs-dotnet-sql.
- Plano de Hospedagem: selecione Novo para abrir a caixa de diálogo do plano de hospedagem. Mantenha os valores padrão e selecione OK.
- Selecione Criar para fechar a caixa de diálogo original. O Visual Studio cria o recurso Serviço de Aplicativo no Azure.
Depois que o recurso for criado, certifique-se de selecioná-lo na lista de serviços do aplicativo e então selecione Próximo.
Na etapa Gerenciamento de API, marque a caixa de seleção Ignorar esta etapa na parte inferior e selecione Concluir.
Selecione Publicar na parte superior direita do resumo do perfil de publicação para implantar o aplicativo no Azure.
Quando a implantação for concluída, o Visual Studio iniciará o navegador para exibir o aplicativo hospedado. Você vê a mensagem Hello world do endpoint padrão. No entanto, neste momento, os endpoints do banco de dados não funcionam corretamente no Azure. Você ainda precisa configurar a conexão segura entre o Serviço de Aplicativo e o banco de dados SQL para recuperar seus dados.
Conectar o Serviço de Aplicativo ao Banco de Dados SQL do Azure
Para conectar a instância do App Service ao Banco de Dados SQL do Azure, complete os seguintes passos:
Crie uma identidade gerenciada para o Serviço de Aplicativo. A
Microsoft.Data.SqlClientbiblioteca incluída em seu aplicativo descobre automaticamente a identidade gerenciada, assim como descobriu o usuário local do Visual Studio.Crie um usuário do banco de dados SQL e associe-o à identidade gerenciada do Serviço de Aplicativo.
Atribua funções SQL ao usuário do banco de dados que permitem leitura, gravação e, potencialmente, outras permissões.
Você pode usar várias ferramentas para implementar estas etapas:
O Conector de Serviço é uma ferramenta que simplifica as conexões autenticadas entre diferentes serviços no Azure. Atualmente, o Service Connector suporta a conexão de um App Service a um banco de dados SQL usando a extensão sem senha do CLI do Azure.
Instale ou atualize a extensão sem senha do Conector de Serviço:
az extension add --name serviceconnector-passwordless --upgradeExecute o
az webapp connection create sqlcomando para conectar seu aplicativo web ao banco de dados usando uma identidade gerenciada atribuída pelo sistema. Substitua os espaços reservados por valores apropriados:az webapp connection create sql -g <your-resource-group> -n <your-app-service-name> --tg <your-database-server-resource-group> --server <your-database-server-name> --database <your-database-name> --system-identity
Você pode verificar as alterações feitas pelo Conector de Serviço nas configurações do Serviço de Aplicativo.
Vá para a página de Identidade do seu App Service. Na guia Sistema atribuído, o Status deve ser definido como Ativado. Esse valor significa que uma identidade gerenciada atribuída pelo sistema foi habilitada para seu aplicativo.
Vá para a página de Configuração do seu App Service. Na guia Cadeias de conexão , você deverá ver uma cadeia de conexão chamada
AZURE_SQL_CONNECTIONSTRING. Selecione o texto Clique para mostrar o valor para exibir a cadeia de conexão sem senha gerada. O nome dessa cadeia de conexão se alinha ao que você configurou em seu aplicativo, portanto, ele é descoberto automaticamente ao ser executado no Azure.
Importante
Embora essa solução forneça uma abordagem básica para começar, não é uma boa prática para ambientes de produção corporativos. Nesses cenários, o app não deve realizar todas as operações com uma identidade única e elevada. Implemente o princípio do privilégio mínimo configurando múltiplas identidades com permissões específicas para tarefas específicas. Para obter mais informações sobre como configurar funções de banco de dados e segurança, consulte:
Testar o aplicativo implantado
Navegue até a URL do aplicativo para testar se a conexão com o Banco de Dados SQL do Azure está funcionando. Você pode localizar a URL do aplicativo na página de visão geral do Serviço de Aplicativo. Acrescente o caminho /person ao final da URL para navegar até o mesmo ponto de extremidade que você testou localmente.
A pessoa que você criou localmente deve ser exibida no navegador. Parabéns, seu aplicativo agora está conectado ao Banco de Dados SQL do Azure em ambientes locais e hospedados.
Limpar os recursos
Quando terminar de trabalhar com o Banco de Dados SQL do Azure, exclua o recurso para evitar custos não intencionais.
Na barra de pesquisa portal do Azure, pesquise SQL do Azure e selecione o resultado correspondente.
Localize e selecione seu banco de dados na lista de bancos de dados.
Na página Visão geral do Banco de Dados SQL do Azure, selecione Excluir.
Na página Azure você tem certeza de que deseja excluir... que aparece, digite o nome do seu banco de dados para confirmar e selecione Excluir.
Observação
Se você implantou o aplicativo de exemplo no Azure, certifique-se de também buscar e excluir o recurso do Serviço de Aplicativos para evitar custos não intencionais.
Conteúdo relacionado
- Tutorial: Proteger um banco de dados no Banco de Dados SQL do Azure
- Autorizar o acesso ao banco de dados ao Banco de Dados SQL do Azure
- Uma visão geral das funcionalidades de segurança do Banco de Dados SQL do Azure e da Instância Gerenciada de SQL
- Guia estratégico para atender aos requisitos comuns de segurança com o Banco de Dados SQL do Azure e a Instância Gerenciada de SQL do Azure