Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: База данных SQL Azure
Этот быстрый старт описывает, как подключить приложение к базе данных в База данных SQL Azure и выполнять запросы с помощью .NET и Entity Framework Core. В этом кратком руководстве описан рекомендуемый подход без пароля для подключения к базе данных. Чтобы узнать больше о соединениях без пароля, смотрите раздел «Без пароля».
Предварительные требования
- Подписка Azure
- База данных SQL, настроенная для проверки подлинности с помощью идентификатора Microsoft Entra (ранее — Azure Active Directory). Вы можете создать её, используя Краткое руководство: Создание одной базы данных — База данных SQL Azure.
- .NET 10.0 или выше.
- Visual Studio или более поздней версии с рабочей нагрузкой ASP.NET и веб-разработки .
- Последняя версия Azure CLI.
- Последняя версия инструментов Entity Framework Core:
- Пользователи Visual Studio должны установить средства консоли диспетчер пакетов для Entity Framework Core.
- Пользователи .NET CLI должны установить средства .NET CLI для Entity Framework Core.
Настройка сервера базы данных
Безопасные, безпарольные подключения к базе данных SQL Azure требуют определенных конфигураций базы данных. Проверьте следующие параметры на логическом сервере в Azure, чтобы правильно подключиться к База данных SQL Azure в локальных и размещенных средах:
Для локальных подключений разработки убедитесь, что логический сервер SQL Azure настроен, чтобы разрешить подключение к локальному IP-адресу компьютера и другим службам Azure:
На портале Azure в меню ресурсов в разделе "Безопасность" выберите "Сеть".
Нажмите кнопку "Выбранные сети" , чтобы отобразить дополнительные параметры конфигурации.
Выберите Добавить IP-адрес клиента (xx.xx.xx.xx), чтобы добавить правило брандмауэра, которое будет разрешать подключения с адреса IPv4 локального компьютера. Кроме того, можно выбрать + Добавить правило брандмауэра, чтобы ввести конкретный IP-адрес.
Убедитесь, что установлен флажок разрешить службам и ресурсам Azure доступ к этому серверу .
Предупреждение
Включение настройки Разрешить службам и ресурсам Azure доступ к этому серверу не является рекомендуемой практикой безопасности для производственной среды. Реальные приложения должны реализовать более безопасные подходы, такие как более строгие ограничения брандмауэра или конфигурации виртуальной сети.
Дополнительные сведения о конфигурациях безопасности базы данных см. в следующих ресурсах:
- Настройте правила брандмауэра База данных SQL Azure.
- Настройте виртуальную сеть с частными конечными точками.
На сервере также должна быть включена проверка подлинности Microsoft Entra и назначена учетная запись администратора Microsoft Entra. Для локальных подключений к разработке учетная запись администратора Microsoft Entra должна быть такой учетной записью, в которую можно также войти в Visual Studio или локально через Azure CLI. Вы можете проверить, включена ли проверка подлинности Microsoft Entra на странице Microsoft Entra ID на вашем логическом сервере.
Если вы используете личную учетную запись Azure, убедитесь, что Microsoft Entra настроена и сконфигурирована для базы данных Azure SQL, чтобы назначить вашу учетную запись администратором сервера. Если вы используете корпоративную учетную запись, Microsoft Entra ID, скорее всего, уже настроен для вас.
Создание проекта
В этом разделе описано, как создать минимальный веб-API .NET с помощью .NET CLI или Visual Studio 2022.
В строке меню Visual Studio перейдите в File>NewProject>.
В диалоговом окне введите
ASP.NETполе поиска шаблона проекта и выберите результат ASP.NET Core Web API. Нажмите Далее в нижней части диалогового окна.Для названия проекта введите
DotNetSQL. Сохраните значения по умолчанию для остальных полей и нажмите кнопку "Далее".Для фреймворка выберите .NET 10.0 и снимите галочку «Использовать контроллеры». В этом кратком руководстве используется шаблон минимального API для упрощения создания и настройки эндпоинтов.
Выберите Создать. Новый проект открывается в среде Visual Studio.
Добавление Entity Framework Core в проект
Чтобы подключиться к База данных SQL Azure с помощью .NET и Entity Framework Core, добавьте в ваш проект следующие пакеты NuGet, используя один из следующих методов:
В окне Обозреватель решений щелкните правой кнопкой мыши узел зависимостей проекта и выберите пункт "Управление пакетами NuGet".
В результирующем окне найдите EntityFrameworkCore. Найдите и установите следующие пакеты:
-
Microsoft.EntityFrameworkCore: предоставляет основные функциональные возможности Entity Framework Core -
Microsoft.EntityFrameworkCore.SqlServer: предоставляет дополнительные компоненты для подключения к логическому серверу -
Microsoft.EntityFrameworkCore.Design: обеспечивает поддержку выполнения миграций Entity Framework -
Microsoft.EntityFrameworkCore.Tools: обеспечивает поддержку инструментов консоли диспетчера пакетов Visual Studio (только PowerShell) -
Microsoft.AspNetCore.OpenApi: Optional — обеспечивает поддержку генерации документации OpenAPI -
Swashbuckle.AspNetCore.SwaggerUI: Optional — обеспечивает взаимодействие OpenAPI UI с конечными точками приложения
Добавление кода для подключения к База данных SQL Azure
Библиотеки Entity Framework Core полагаются на библиотеки Microsoft.Data.SqlClient и Azure.Identity для реализации безпарольных подключений к базе данных SQL Azure. Библиотека Azure.Identity предоставляет класс DefaultAzureCredential , который обрабатывает проверку подлинности без пароля в Azure.
DefaultAzureCredential поддерживает несколько методов проверки подлинности и определяет, какие из них следует использовать во время выполнения. Такой подход позволяет приложению использовать различные способы проверки подлинности в разных средах (локальной и рабочей) без реализации кода для конкретной среды. Обзор библиотеки удостоверений Azure объясняет, в каком порядке и в каких местах ищет учетные данные.
Выполните следующие действия, чтобы подключиться к База данных SQL Azure с помощью Entity Framework Core и базового DefaultAzureCredential класса:
ConnectionStringsДобавьте раздел вappsettings.Development.jsonфайл, чтобы он соответствовал следующему коду. Замените<server>.database.windows.netименем сервера базы данных без пароля, к которому вы хотите подключиться, и<database>именем базы данных.{ "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;" } }Примечание.
Не забудьте обновить плейсхолдеры
<your database-server-name>и<your-database-name>в строке подключения к базе данных. Строки подключения без пароля можно безопасно хранить в системах управления версиями, так как они не содержат секретной информации, такой как имена пользователей, пароли или ключи доступа.Строка подключения без пароля включает значение
Authentication=Active Directory Defaultконфигурации, позволяющее Entity Framework Core использоватьDefaultAzureCredentialдля подключения к службам Azure. При локальном запуске приложение проходит проверку подлинности с помощью пользователя, с которым вы вошли в Visual Studio. После развертывания приложения в Azure тот же код обнаруживает и применяет управляемое удостоверение, связанное с размещенным приложением, которое вы настраиваете позже.Замените содержимое файла
Program.csприведенным ниже кодом.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; } }Предыдущий код обрабатывает следующие действия:
- Извлекает строку подключения без пароля из файла
appsettings.Development.jsonдля локальной разработки или из переменных среды в производственных средах. - Регистрирует класс Entity Framework Core
DbContextв контейнере внедрения зависимостей .NET. Дополнительные сведения оDbContextсм. в документации «Начало работы» для Entity Framework Core. - Настраивает поддержку .NET 10.0 OpenAPI с помощью SwaggerUI для предоставления интерфейса, который можно использовать для взаимодействия с конечными точками приложения и базой данных.
- Добавляет конечные точки для извлечения и добавления сущностей в базу данных.
- Определяет
Personкласс для представления одной записи вPersonsтаблице базы данных иPersonDbContextкласса, зарегистрированного в контейнере внедрения зависимостей .NET.
- Извлекает строку подключения без пароля из файла
Запуск миграций для создания базы данных
Чтобы обновить схему базы данных в соответствии с вашей моделью данных с помощью Entity Framework Core, используйте миграцию. Миграции могут создавать и постепенно обновлять схему базы данных, чтобы обеспечить синхронизацию с моделью данных приложения. Чтобы узнать больше об этой закономерности, ознакомьтесь с обзором миграций.
Откройте окно терминала в корне вашего проекта.
Выполните следующую команду, чтобы создать начальную миграцию, которая может создать базу данных:
Add-Migration InitialCreateВ каталоге проекта должна появиться папка
Migrations, а также файл, названныйInitialCreate, в начале которого добавлены уникальные номера. Запустите миграцию, чтобы создать базу данных с помощью следующей команды, и средство Entity Framework Core создает схему базы данных в Azure, определяемую классомPersonDbContext.Update-Database
локальное тестирование приложения.
Приложение готово к локальному тестированию. Убедитесь, что вы вошли в Visual Studio или Azure CLI с той же учётной записью, которую вы установили в качестве администратора вашей базы данных.
Выберите кнопку запуска в верхней части Visual Studio, чтобы запустить проект API.
На странице Swagger UI (например,
https://localhost:<port>/swagger), разверните методPOSTи выберите Try it.Измените пример JSON, чтобы включить значения для имени и имени семейства. Выберите "Выполнить" , чтобы добавить новую запись в базу данных. API возвращает успешный ответ.
GETРазверните метод на странице пользовательского интерфейса Swagger и выберите "Попробовать". Выберите "Выполнить", а пользователь, который вы только что создали, возвращается.
Развёртывание в Служба приложений Azure
Приложение готово к развертыванию в Azure. Visual Studio может создать службу приложение Azure и развернуть приложение в одном рабочем процессе.
Убедитесь, что приложение остановлено и успешно собирается.
В окне Обозреватель решений Visual Studio щелкните правой кнопкой мыши узел проекта верхнего уровня и выберите "Опубликовать".
В диалоговом окне публикации выберите Azure в качестве цели развертывания, а затем нажмите кнопку Далее.
Для конкретного целевого объекта выберите службу приложений Azure (Windows) и нажмите Далее.
Щелкните зеленый + значок, чтобы создать новую Служба приложений для развертывания и введите следующие значения:
- Имя: оставьте значение по умолчанию.
- Имя подписки: выберите подписку для развертывания.
- Группа ресурсов: выберите "Создать " и создайте новую группу ресурсов с именем msdocs-dotnet-sql.
- План размещения: выберите "Создать" , чтобы открыть диалоговое окно плана размещения. Оставьте значения по умолчанию и нажмите кнопку "ОК".
- Нажмите кнопку "Создать", чтобы закрыть исходное диалоговое окно. Visual Studio создает ресурс Служба приложений в Azure.
После создания ресурса убедитесь, что вы выбрали его в списке сервисов приложений, а затем выберите «Далее».
На шаге Управление API установите флажок "Пропустить этот шаг" в нижней части и нажмите кнопку "Готово".
Выберите Опубликовать в правом верхнем углу сводки по профилю публикации, чтобы развернуть приложение в Azure.
По завершении развертывания Visual Studio запустит браузер с размещенным приложением. Вы видите сообщение Hello world из конечной точки по умолчанию. Однако на этом этапе конечные точки базы данных не работают правильно в Azure. Для получения данных необходимо настроить безопасное подключение между Служба приложений и базой данных SQL.
Подключите службу приложений к базе данных SQL Azure
Чтобы подключить экземпляр App Service к База данных SQL Azure, выполните следующие шаги:
Создайте управляемое удостоверение для Службы приложений. Библиотека
Microsoft.Data.SqlClient, включенная в ваше приложение, автоматически обнаруживает управляемое удостоверение точно так же, как она обнаружила локального пользователя Visual Studio.Создайте пользователя базы данных SQL и свяжите его с управляемым удостоверением App Service.
Назначьте роли SQL пользователю базы данных, разрешающим чтение, запись и потенциально другие разрешения.
Вы можете использовать несколько инструментов для реализации следующих шагов:
Соединитель служб — это средство, которое упрощает аутентификацию подключений между различными службами в Azure. Service Connector в настоящее время поддерживает подключение сервиса приложений к базе данных SQL с помощью расширения Azure CLI без пароля.
Установите или обновите расширение для беспарольного подключения сервиса:
az extension add --name serviceconnector-passwordless --upgradeВыполните
az webapp connection create sqlкоманду, чтобы подключить веб-приложение к базе данных, используя управляемую идентичность, назначенную системой. Замените заполнители соответствующими значениями: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
Изменения, внесенные соединителем службы, можно проверить в параметрах Службы приложений.
Перейдите на страницу Identity для вашего сервиса приложений. На вкладке "Назначаемая системой" состояние должно иметь значение "Вкл". Это значение означает, что управляемое удостоверение, назначенное системой, было включено для вашего приложения.
Перейдите на страницу настройки вашего сервиса приложений. На вкладке "Строки подключения" вы должны увидеть строку
AZURE_SQL_CONNECTIONSTRINGподключения. Выберите текст Click to show value, чтобы просмотреть созданную строку подключения без пароля. Имя этой строки подключения соответствует имени, настроенному в вашем приложении, поэтому оно обнаруживается автоматически при запуске в Azure.
Внимание
Хотя это решение предоставляет базовый подход к началу работы, оно не является лучшей практикой для корпоративных производственных сред. В таких случаях приложение не должно выполнять все операции с единой, повышенной идентификацией. Реализуйте принцип наименьших привилегий, настраивая несколько идентичностей с определёнными правами для конкретных задач. Дополнительные сведения о настройке ролей базы данных и безопасности см. в следующем разделе:
Тестирование развернутого приложения
Перейдите по URL-адресу приложения, чтобы проверить, работает ли подключение к База данных SQL Azure. URL-адрес приложения можно найти на странице обзора App Service. Добавьте в конец URL-адреса путь /person, чтобы перейти к той же конечной точке, которую вы тестировали локально.
Созданный вами локально человек должен отображаться в браузере. Поздравляем, приложение теперь подключено к базе данных SQL Azure как в локальных, так и в размещенных средах.
Очистка ресурсов
После завершения работы с База данных SQL Azure удалите ресурс, чтобы избежать непредвиденных затрат.
В строке поиска в портале Azure найдите Azure SQL и выберите соответствующий результат.
Найдите и выберите базу данных в списке баз данных.
На странице Обзор вашей базы данных Azure SQL выберите Удалить.
На открывшейся странице "Вы уверены, что хотите удалить" в Azure введите имя вашей базы данных, чтобы подтвердить, и затем выберите "Удалить".
Примечание.
Если вы развернули образец приложения в Azure, обязательно найдите и удалите ресурс App Service, чтобы избежать непредвиденных затрат.
Связанный контент
- Руководство. Защита базы данных в База данных SQL Azure
- Предоставить доступ к базе данных База данных SQL Azure
- Общие сведения о возможностях безопасности Базы данных SQL Azure и Управляемого экземпляра SQL
- Сборник схем для решения распространенных требований к безопасности с помощью Базы данных SQL Azure и Управляемого экземпляра SQL Azure