Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: База данных SQL Azure
В этом кратком руководстве описывается подключение приложения к базе данных в База данных SQL Azure и выполнение запросов с помощью .NET и Entity Framework Core. В этом кратком руководстве описан рекомендуемый подход без пароля для подключения к базе данных. Дополнительные сведения о подключениях без пароля можно узнать в центре безпарольных подключений.
Предварительные требования
- Подписка Azure
- База данных SQL, настроенная для проверки подлинности с помощью идентификатора Microsoft Entra (ранее — Azure Active Directory). Вы можете создать одну с помощью Быстрого запуска: Создание одной базы данных — Azure SQL Database.
- .NET 9.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 в локальных и размещенных средах:
Для подключений для локальной разработки убедитесь, что логический сервер настроен таким образом, чтобы разрешать подключения IP-адреса вашего локального компьютера и других служб 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 перейдите в раздел "Файл>>
В диалоговом окне в поле поиска шаблона проекта введите ASP.NET и выберите результат ASP.NET Core Web API. Нажмите Далее в нижней части диалогового окна.
В поле "Имя проекта" введите DotNetSQL. Оставьте в остальных полях значения по умолчанию и выберите Далее.
Для платформы выберите .NET 9.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) -
Swashbuckle.AspNetCore
: необязательно. Обеспечивает поддержку взаимодействия SwaggerUI с конечными точками приложения
Добавление кода для подключения к База данных 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.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; } }
Предыдущий код обрабатывает следующие действия:
- Извлекает строку подключения без пароля из файла
appsettings.Development.json
для локальной разработки или из переменных среды в производственных средах. - Регистрирует класс Entity Framework Core
DbContext
в контейнере внедрения зависимостей .NET. Дополнительные сведения оDbContext
см. в документации «Начало работы» для Entity Framework Core. - Настраивает поддержку OpenAPI .NET 9.0 с SwaggerUI для предоставления пользовательского интерфейса, который можно использовать для взаимодействия с конечными точками приложения и базой данных.
- Добавляет конечные точки для извлечения и добавления сущностей в базу данных.
- Определяет
Person
класс для представления одной записи вPersons
таблице базы данных иPersonDbContext
класса, зарегистрированного в контейнере внедрения зависимостей .NET.
- Извлекает строку подключения без пароля из файла
Запуск миграций для создания базы данных
Чтобы обновить схему базы данных в соответствии с моделью данных с помощью Entity Framework Core, необходимо использовать миграцию. Миграции могут создавать и постепенно обновлять схему базы данных, чтобы обеспечить синхронизацию с моделью данных приложения. Дополнительные сведения об этом шаблоне см. в обзоре миграций.
Откройте окно терминала в корне вашего проекта.
Выполните следующую команду, чтобы создать начальную миграцию, которая может создать базу данных:
Add-Migration InitialCreate
В каталоге проекта должна появиться папка
Migrations
, а также файл, названныйInitialCreate
, в начале которого добавлены уникальные номера. Выполните миграцию, чтобы создать базу данных с помощью следующей команды:Update-Database
Средство Entity Framework Core создает схему базы данных в Azure, определенную классом PersonDbContext
.
локальное тестирование приложения.
Приложение готово к локальному тестированию. Убедитесь, что вы вошли в Visual Studio или Azure CLI с той же учетной записью, что и администратор базы данных.
Нажмите кнопку запуска в верхней части Visual Studio, чтобы запустить проект API.
На странице пользовательского интерфейса Swagger разверните метод POST и выберите "Попробовать".
Измените пример JSON, чтобы включить значения для имени и имени семейства. Выберите "Выполнить" , чтобы добавить новую запись в базу данных. API возвращает успешный ответ.
Разверните метод GET на странице пользовательского интерфейса Swagger и выберите "Попробовать". Выберите "Выполнить", а пользователь, который вы только что создали, возвращается.
Развёртывание в Azure App Service
Приложение готово к развертыванию в 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
Для подключения экземпляра Службы приложений к базе данных Azure SQL необходимо выполнить следующие действия.
- Создайте управляемое удостоверение для Службы приложений. Библиотека
Microsoft.Data.SqlClient
, включенная в ваше приложение, автоматически обнаруживает управляемое удостоверение точно так же, как она обнаружила локального пользователя Visual Studio. - Создайте пользователя базы данных SQL и свяжите его с управляемым удостоверением App Service.
- Назначьте роли SQL пользователю базы данных, разрешающим чтение, запись и потенциально другие разрешения.
Существует несколько средств, доступных для реализации следующих действий.
Соединитель служб — это средство, которое упрощает аутентификацию подключений между различными службами в Azure. Соединитель служб в настоящее время поддерживает подключение службы приложений к базе данных 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
Изменения, внесенные соединителем службы, можно проверить в параметрах Службы приложений.
Перейдите на страницу Идентификация для Службы приложений. На вкладке "Назначаемая системой" состояние должно иметь значение "Вкл". Это значение означает, что управляемое удостоверение, назначенное системой, было включено для вашего приложения.
Перейдите на страницу конфигурации для Службы приложений. На вкладке "Строки подключения" вы должны увидеть строку
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, обязательно найдите и удалите ресурс службы приложений, чтобы избежать непредвиденных затрат.
Связанный контент
- Руководство. Защита базы данных в База данных SQL Azure
- Авторизация доступа к Базе данных SQL, Управляемому экземпляру SQL и Azure Synapse Analytics
- Общие сведения о возможностях безопасности Базы данных SQL Azure и Управляемого экземпляра SQL
- Сборник схем для решения распространенных требований к безопасности с помощью Базы данных SQL Azure и Управляемого экземпляра SQL Azure