Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:Azure SQL Database
Tento rychlý start popisuje, jak připojit aplikaci k databázi ve službě Azure SQL Database a provádět dotazy pomocí .NET a Entity Framework Core. Tento rychlý start se řídí doporučeným přístupem bez hesla pro připojení k databázi. Další informace o připojeních bez hesel najdete v centru bez hesel.
Požadavky
- Předplatné Azure
- Databáze SQL nakonfigurovaná pro ověřování pomocí Microsoft Entra ID (dříve Azure Active Directory). Můžete ji vytvořit pomocí rychlého startu: Vytvoření izolované databáze – Azure SQL Database.
- .NET 9.0 nebo novější.
- Visual Studio nebo novější s pracovním prostředím vývoj pro ASP.NET a web.
- Nejnovější verze Azure CLI.
- Nejnovější verze nástrojů Entity Framework Core:
- Uživatelé sady Visual Studio by měli nainstalovat nástroje konzoly Správce balíčků pro Entity Framework Core.
- Uživatelé .NET CLI by měli nainstalovat nástroje .NET CLI pro Entity Framework Core.
Konfigurace databázového serveru
Zabezpečená bez hesla připojení ke službě Azure SQL Database vyžadují určité konfigurace databáze. Ověřte na logickém serveru v Azure následující nastavení, abyste se mohli správně připojit ke službě Azure SQL Database v místním i hostovaným prostředí:
V případě místních vývojových připojení se ujistěte, že je váš logický server nakonfigurovaný tak, aby umožňoval připojení IP adresy místního počítače a dalších služeb Azure:
Přejděte na stránku Sítě vašeho serveru.
Přepněte přepínač Vybrané sítě, aby se zobrazily další možnosti konfigurace.
Vyberte Přidat adresu IPv4 klienta (xx.xx.xx.xx) a přidejte pravidlo brány firewall, které povolí připojení z adresy IPv4 místního počítače. Případně můžete také vybrat + Přidat pravidlo firewallu a zadat konkrétní IP adresu, kterou si vyberete.
Ujistěte se, že je zaškrtnuté políčko Povolit službám a prostředkům Azure přístup k tomuto serveru .
Varování
Povolení přístupu ke službám a prostředkům Azure pro přístup k tomuto nastavení serveru není doporučeným postupem zabezpečení pro produkční scénáře. Skutečné aplikace by měly implementovat bezpečnější přístupy, jako jsou silnější omezení brány firewall nebo konfigurace virtuální sítě.
Další informace o konfiguracích zabezpečení databáze najdete v následujících zdrojích informací:
- Konfigurujte pravidla brány firewall služby Azure SQL Database
- Nakonfigurujte virtuální síť s koncovými body v privátním režimu.
Server musí mít také povolené ověřování Microsoft Entra a musí mít přiřazený účet správce Microsoft Entra. Pro místní vývojová připojení by měl být účet správce Microsoft Entra účtem, ke kterým se můžete také přihlásit do sady Visual Studio nebo Azure CLI místně. Můžete ověřit, zda má váš server povolené ověřování Microsoft Entra na stránce Microsoft Entra ID vašeho logického serveru.
Pokud používáte osobní účet Azure, ujistěte se, že máte Microsoft Entra nastavené a nakonfigurované pro Azure SQL Database, abyste mohli účet přiřadit jako správce serveru. Pokud používáte podnikový účet, ID Microsoft Entra bude pravděpodobně již nakonfigurované pro vás.
Vytvoření projektu
Kroky v této části vytvoří webové rozhraní API .NET Minimal pomocí rozhraní příkazového řádku .NET nebo sady Visual Studio 2022.
V řádku nabídek sady Visual Studio přejděte na Soubor>>
V dialogovém okně zadejte ASP.NET do vyhledávacího pole šablony projektu a vyberte výsledek webového rozhraní API ASP.NET Core. V dolní části dialogového okna zvolte Další .
Jako název projektu zadejte DotNetSQL. Ponechte výchozí hodnoty pro zbývající pole a vyberte Další.
V rozhraní vyberte .NET 9.0 a zrušte zaškrtnutí políčka Použít kontrolery. Tento rychlý start používá šablonu minimálního rozhraní API ke zjednodušení vytváření a konfigurace koncových bodů.
Zvolte Vytvořit. Nový projekt se otevře v prostředí sady Visual Studio.
Přidání Entity Framework Core do projektu
Pokud se chcete připojit ke službě Azure SQL Database pomocí .NET a Entity Framework Core, musíte do projektu přidat tři balíčky NuGet pomocí jedné z následujících metod:
V okně Průzkumník řešení klikněte pravým tlačítkem na uzel Závislosti projektu a vyberte Spravovat balíčky NuGet.
Ve výsledném okně vyhledejte EntityFrameworkCore. Vyhledejte a nainstalujte následující balíčky:
-
Microsoft.EntityFrameworkCore: Poskytuje základní funkce Entity Framework Core. -
Microsoft.EntityFrameworkCore.SqlServer: Poskytuje další komponenty pro připojení k logickému serveru. -
Microsoft.EntityFrameworkCore.Design: Poskytuje podporu pro spouštění migrací entity Framework. -
Microsoft.EntityFrameworkCore.Tools: Poskytuje podporu pro nástroje konzoly Správce balíčků sady Visual Studio (jenom PowerShell) -
Swashbuckle.AspNetCore: Volitelné – poskytuje podporu pro interakci SwaggerUI s koncovými body aplikace.
Přidání kódu pro připojení ke službě Azure SQL Database
Knihovny Entity Framework Core využívají Microsoft.Data.SqlClient knihovny a Azure.Identity knihovny k implementaci připojení bez hesel ke službě Azure SQL Database. Knihovna Azure.Identity poskytuje třídu s názvem DefaultAzureCredential , která zpracovává ověřování bez hesla do Azure.
DefaultAzureCredential podporuje více metod ověřování a určuje, které se mají použít za běhu. Tento přístup umožňuje vaší aplikaci používat různé metody ověřování v různých prostředích (místní a produkční) bez implementace kódu specifického pro prostředí. Přehled knihovny Azure Identity vysvětluje pořadí a umístění, ve kterých se hledají přihlašovací údaje.
Pokud se chcete připojit ke službě Azure SQL Database pomocí Entity Framework Core a základní DefaultAzureCredential třídy, proveďte následující kroky:
Do souboru
ConnectionStringspřidejte oddílappsettings.Development.jsontak, aby odpovídal následujícímu kódu. Nahraďte<server>.database.windows.netnázvem databázového serveru bez hesla, ke kterému se chcete připojit, a<database>názvem databáze.{ "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;" } }Poznámka:
Nezapomeňte aktualizovat zástupné symboly
<your database-server-name>a<your-database-name>v řetězci pro připojení k databázi. Připojovací řetězce bez hesla se dají bezpečně potvrdit do správy zdrojového kódu, protože neobsahují žádné tajné kódy, jako jsou uživatelská jména, hesla nebo přístupové klíče.Připojovací řetězec bez hesla obsahuje hodnotu konfigurace
Authentication=Active Directory Default, která umožňuje, aby Entity Framework Core používaloDefaultAzureCredentialpro připojení ke službám Azure. Když se aplikace spustí místně, přihlásí se pomocí uživatele, kterého jste použili pro přihlášení k sadě Visual Studio. Jakmile se aplikace nasadí do Azure, stejný kód zjistí a použije spravovanou identitu přidruženou k hostované aplikaci, kterou nakonfigurujete později.Obsah souboru
Program.csnahraďte následujícím kódem:using Microsoft.AspNetCore.Mvc; 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) => { return 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 : DbContext { public PersonDbContext(DbContextOptions<PersonDbContext> options) : base(options) { } public DbSet<Person> Person { get; set; } }Předchozí kód zpracovává následující kroky:
- Načte bezheslový připojovací řetězec databáze ze souboru
appsettings.Development.jsonpro místní vývoj nebo z proměnných prostředí pro hostované produkční scénáře. - Zaregistruje třídu Entity Framework Core
DbContextv kontejneru injektáže závislostí .NET. Další informace najdeteDbContextv dokumentaci Začínáme pro Entity Framework Core. - Konfiguruje podporu Rozhraní OpenAPI pro .NET 9.0 pomocí SwaggerUI, aby poskytovalo uživatelské rozhraní, které můžete použít k interakci s koncovými body aplikace a databází.
- Přidá koncové body pro načtení a přidání entit do databáze.
-
PersonDefinuje třídu, která bude představovat jeden záznam vPersonstabulce databáze aPersonDbContexttřídu zaregistrovanou v kontejneru injektáže závislostí .NET.
- Načte bezheslový připojovací řetězec databáze ze souboru
Proveďte migrace k vytvoření databáze.
Pokud chcete aktualizovat schéma databáze tak, aby odpovídalo datovému modelu pomocí Entity Framework Core, musíte použít migraci. Migrace můžou vytvořit a přírůstkově aktualizovat schéma databáze, aby bylo synchronizované s datovým modelem vaší aplikace. Další informace o tomto modelu najdete v přehledu migrací.
Otevřete okno terminálu v kořenovém adresáři projektu.
Spuštěním následujícího příkazu vygenerujte počáteční migraci, která může vytvořit databázi:
Add-Migration InitialCreate
V adresáři projektu by se měla zobrazit složka
Migrationsspolu se souboremInitialCreate, ke kterému jsou připojena jedinečná čísla. Spuštěním migrace vytvořte databázi pomocí následujícího příkazu a nástroje Entity Framework Core vytvoří schéma databáze v Azure definovanéPersonDbContexttřídou.Update-Database
Místní testování aplikace
Aplikace je připravená k místnímu otestování. Ujistěte se, že jste přihlášení k sadě Visual Studio nebo Azure CLI pomocí stejného účtu, který jste nastavili jako správce vaší databáze.
Stisknutím tlačítka Spustit v horní části sady Visual Studio spusťte projekt rozhraní API.
Na stránce s uživatelským rozhraním Swagger rozbalte metodu POST a vyberte Vyzkoušet.
Upravte ukázkový KÓD JSON tak, aby zahrnoval hodnoty pro jméno a jméno rodiny. Vyberte Spustit a přidejte do databáze nový záznam. Rozhraní API vrátí úspěšnou odpověď.
Rozbalte metodu
GETna stránce Swagger UI a vyberte Vyzkoušet. Vyberte Spustit a vrátí se osoba, kterou jste právě vytvořili.
Nasadit do služby Azure App Service
Aplikace je připravená k nasazení do Azure. Visual Studio může vytvořit službu Aplikace Azure a nasadit aplikaci v jednom pracovním postupu.
Ujistěte se, že je aplikace zastavená a úspěšně se sestavuje.
V okně Průzkumník řešení sady Visual Studio klikněte pravým tlačítkem myši na uzel projektu nejvyšší úrovně a vyberte Publikovat.
V dialogovém okně publikování vyberte Azure jako cíl nasazení a pak vyberte Další.
Pro konkrétní cíl vyberte Aplikace Azure Service (Windows) a pak vyberte Další.
Výběrem zelené + ikony vytvořte novou službu App Service, do které se nasadí, a zadejte následující hodnoty:
- Název: Ponechte výchozí hodnotu.
- Název předplatného: Vyberte předplatné, do které se má nasadit.
- Skupina prostředků: Vyberte Nový a vytvořte novou skupinu prostředků s názvem msdocs-dotnet-sql.
- Plán hostování: Výběrem možnosti Nový otevřete dialogové okno plán hostování. Ponechte výchozí hodnoty a vyberte OK.
- Výběrem možnosti Vytvořit zavřete původní dialogové okno. Visual Studio vytvoří prostředek služby App Service v Azure.
Po vytvoření prostředku se ujistěte, že jste vybrali v seznamu aplikačních služeb a pak vyberte Další.
V kroku API Management zaškrtněte políčko Přeskočit tento krok v dolní části a pak vyberte Dokončit.
Výběrem možnosti Publikovat v pravém horním rohu souhrnu profilu publikování nasadíte aplikaci do Azure.
Po dokončení nasazení visual Studio spustí prohlížeč, aby se zobrazila hostovaná aplikace. Měli byste vidět Hello world zprávu z výchozího koncového bodu. V tomto okamžiku ale koncové body databáze v Azure nefungují správně. Stále potřebujete nakonfigurovat zabezpečené připojení mezi službou App Service a databází SQL pro načtení dat.
Připojení služby App Service ke službě Azure SQL Database
Pro připojení instance služby App Service ke službě Azure SQL Database jsou potřeba následující kroky:
- Vytvořte spravovanou identitu pro službu App Service. Knihovna
Microsoft.Data.SqlClient, která je součástí vaší aplikace, automaticky zjistí spravovanou identitu stejně jako místní uživatel sady Visual Studio. - Vytvořte uživatele databáze SQL a přidružte ho ke spravované identitě služby App Service.
- Přiřaďte databázovému uživateli role SQL, které umožňují čtení, zápis a potenciálně další oprávnění.
K dispozici je několik nástrojů pro implementaci těchto kroků:
Service Connector je nástroj, který zjednodušuje ověřená připojení mezi různými službami v Azure. Service Connector v současné době podporuje připojení služby App Service k databázi SQL pomocí rozšíření Azure CLI bez hesla.
Nainstalujte nebo upgradujte rozšíření bez hesla konektoru Service Connector:
az extension add --name serviceconnector-passwordless --upgradeSpuštěním
az webapp connection create sqlpříkazu připojte webovou aplikaci k databázi pomocí spravované identity přiřazené systémem. Zástupné symboly nahraďte příslušnými hodnotami: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
Změny provedené konektorem služby můžete ověřit v nastavení služby App Service.
Přejděte na stránku Identita vaší služby App Service. Pod kartou Systém přiřazeno by měl být Stav nastaven na Zapnuto. Tato hodnota znamená, že pro vaši aplikaci byla povolena spravovaná identita přiřazená systémem.
Přejděte na stránku Konfigurace vaší služby App Service. Na kartě Připojovací řetězce by se měl zobrazit připojovací řetězec s názvem
AZURE_SQL_CONNECTIONSTRING. Kliknutím zobrazíte hodnotu pro zobrazení vygenerovaného připojovacího řetězce bez hesla. Název tohoto připojovacího řetězce odpovídá názvu, který jste v aplikaci nakonfigurovali, takže se automaticky zjistí při spuštění v Azure.
Důležité
I když toto řešení poskytuje jednoduchý přístup pro začátek, není osvědčeným postupem pro podniková produkční prostředí. V těchto scénářích by aplikace neměla provádět všechny operace pomocí jedné zvýšené identity. Měli byste se pokusit implementovat princip nejnižšího oprávnění konfigurací více identit s konkrétními oprávněními pro konkrétní úlohy. Další informace o konfiguraci databázových rolí a zabezpečení naleznete na:
Otestování nasazené aplikace
Přejděte na adresu URL aplikace a otestujte, že funguje připojení ke službě Azure SQL Database. Adresu URL aplikace najdete na stránce přehledu služby App Service. Připojte cestu /person na konec adresy URL, abyste se dostali ke stejnému koncovému bodu, který jste testovali místně.
Osoba, kterou jste vytvořili místně, by se měla zobrazit v prohlížeči. Blahopřejeme, vaše aplikace je teď připojená ke službě Azure SQL Database v místním i hostovaným prostředí.
Ukliďte prostředky
Po dokončení práce se službou Azure SQL Database odstraňte prostředek, abyste se vyhnuli nezamýšleným nákladům.
Na panelu hledání na webu Azure Portal vyhledejte Azure SQL a vyberte odpovídající výsledek.
Vyhledejte a vyberte databázi v seznamu databází.
Na stránce Přehled služby Azure SQL Database vyberte Odstranit.
Na stránce Azure, kterou opravdu chcete odstranit, která se otevře, zadejte název databáze, abyste ji potvrdili, a pak vyberte Odstranit.
Poznámka:
Pokud jste nasadili ukázkovou aplikaci do Azure, nezapomeňte také vyhledat a odstranit prostředek služby App Service, abyste se vyhnuli nezamýšleným nákladům.
Související obsah
- Kurz: Zabezpečení databáze ve službě Azure SQL Database
- Autorizace přístupu k databázi pro služby SQL Database, SQL Managed Instance a Azure Synapse Analytics
- Přehled možností zabezpečení služby Azure SQL Database a SQL Managed Instance
- Playbook pro řešení běžných požadavků na zabezpečení se službou Azure SQL Database a azure SQL Managed Instance