Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
App Service предоставляет веб-хостинг с автоматической установкой исправлений и высокой масштабируемостью в Azure. Она также предоставляет управляемое удостоверение для вашего приложения, которое является готовым решением для защиты доступа к Базе данных SQL Azure и другим службам Azure. Управляемые удостоверения в службе приложений делают ваше приложение более безопасным, устраняя из него секреты, такие как учетные данные в строках подключения. В этом уроке вы добавите управляемую идентичность в примерное веб-приложение, которое вы создали в одном из предыдущих уроков.
- Руководство. Создание приложения ASP.NET в Azure с помощью База данных SQL Azure
- Руководство: Создание приложения ASP.NET Core и базы данных Azure SQL в службе приложений Azure
Когда вы закончите, ваш пример приложения будет безопасно подключаться к базе данных SQL без необходимости использования имен пользователей и паролей.
Примечание.
Шаги, описанные в этом руководстве, поддерживаются в следующих версиях:
- .NET Framework 4.8 и более поздних версий;
- .NET 6.0 и выше.
Инструкции по Базе данных Azure для MySQL или Базе данных Azure для PostgreSQL в других языковых платформах (Node.js, Python и Java) см. в руководстве Подключение к базам данных Azure из Службы приложений без секретов с помощью управляемого удостоверения.
Освещаются следующие темы:
- Включение управляемых удостоверений
- Предоставление управляемому удостоверению доступа к Базе данных SQL
- Конфигурация Entity Framework для использования аутентификации Microsoft Entra с базой данных SQL
- Подключение к базе данных SQL в Visual Studio с помощью аутентификации Microsoft Entra
Примечание.
Проверка подлинности Microsoft Entra отличается от встроенной проверки подлинности Windows в локальной службе Active Directory (AD DS). AD DS и Идентификатор Microsoft Entra используют совершенно разные протоколы проверки подлинности. Для получения дополнительной информации см. документацию по доменным службам Microsoft Entra.
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Предварительные условия
Эта статья продолжается с того места, на котором вы остановились при изучении одного из следующих руководств.
- Учебное пособие. Создание приложения ASP.NET в Azure с помощью Базы данных SQL
- Руководство. Создание приложения ASP.NET Core и Базы данных SQL в Службе приложений Azure.
Если вы еще не ознакомились с этими руководствами, сначала изучите одно из них. Кроме того, вы можете адаптировать шаги для своего собственного приложения .NET с Базой данных SQL.
Чтобы отладить приложение, используя Базу данных SQL в качестве серверного компонента, убедитесь, что вы разрешили клиентские подключения со своего компьютера. В противном случае добавьте IP-адрес клиента, выполнив шаги, указанные в разделе Управление правилами брандмауэра для IP-адресов на уровне сервера с помощью портала Azure.
Подготовьте среду к работе с Azure CLI.
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в статье "Начало работы с Azure Cloud Shell".
Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других параметрах входа см. в статье "Проверка подлинности в Azure с помощью Azure CLI".
Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений и управление ими с помощью Azure CLI.
Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
1. Предоставление пользователю Microsoft Entra доступа к базе данных
Во-первых, включите проверку подлинности Microsoft Entra для База данных SQL, назначив пользователя Microsoft Entra в качестве администратора сервера. Этот пользователь отличается от учетной записи Майкрософт, которую вы использовали для регистрации на подписку Azure. Он должен быть пользователем, которого вы создали, импортировали, синхронизировали или пригласили в Microsoft Entra ID. Дополнительные сведения о разрешенных пользователях Microsoft Entra см. в разделе Функции и ограничения Microsoft Entra в базе данных SQL.
Если у клиента Microsoft Entra еще нет пользователя, создайте его, выполнив действия по добавлению или удалению пользователей с помощью идентификатора Microsoft Entra.
Найдите идентификатор объекта пользователя Microsoft Entra, используя
az ad user list
и замените <основное имя пользователя>. Результат сохраняется в переменной.$azureaduser=(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query '[].id' --output tsv)
Совет
Чтобы просмотреть список всех учетных имен пользователей в Microsoft Entra ID, выполните команду
az ad user list --query '[].userPrincipalName'
.Добавьте этого пользователя Microsoft Entra в качестве администратора Active Directory с помощью
az sql server ad-admin create
команды в Cloud Shell. В следующей команде замените <server-name> именем сервера (без суффикса.database.windows.net
).az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id $azureaduser
Дополнительные сведения о добавлении администратора Active Directory см. в статье "Подготовка администратора Microsoft Entra для сервера"
2. Настройка среды разработки
Visual Studio для Windows интегрирован с проверкой подлинности Microsoft Entra. Чтобы включить разработку и отладку в Visual Studio, добавьте пользователя Microsoft Entra в Visual Studio, выбрав пункт "Параметры>" в меню, а затем нажмите кнопку "Войти" или "Добавить".
Чтобы задать пользователя Microsoft Entra для проверки подлинности службы Azure, выберите Инструменты>Параметры в меню, затем выберите Проверка подлинности службы Azure>Выбор учетной записи. Выберите добавленного пользователя Microsoft Entra и нажмите кнопку "ОК".
Для получения дополнительной информации о настройке вашей среды разработки для проверки подлинности Microsoft Entra см. клиентскую библиотеку Azure Identity для .NET.
Теперь вы готовы разрабатывать и отлаживать приложение с использованием базы данных SQL в качестве серверной части и аутентификации Microsoft Entra.
3. Изменение проекта
Примечание.
Microsoft.Azure.Services.AppAuthentication больше не рекомендуется использовать с новым пакетом SDK Azure.
Вместо этого предлагается использовать новую клиентскую библиотеку Azure Identity, доступную для .NET, Java, TypeScript и Python, для всей новой разработки.
Сведения о переносе в Azure Identity
см. в статье Руководство по переносу AppAuthentication в Azure.Identity.
Действия, описанные в проекте, зависят от того, используете ли вы Entity Framework Core (по умолчанию для ASP.NET Core) или Entity Framework (по умолчанию для ASP.NET).
В Visual Studio откройте консоль диспетчера пакетов и добавьте пакет NuGet Microsoft.Data.SqlClient:
Install-Package Microsoft.Data.SqlClient -Version 5.1.0
В учебнике по ASP.NET Core и Базе данных SQLстрока подключения
MyDbConnection
в appsettings. json пока не используется. Локальная среда и среда Azure получают строки подключения из соответствующих переменных среды, чтобы секреты подключения не попадали в исходный файл. Но теперь, когда используется проверка подлинности Active Directory, секретов больше нет. В файле appsettings.json замените значение строки подключенияMyDbConnection
на следующий фрагмент кода:"Server=tcp:<server-name>.database.windows.net;Authentication=Active Directory Default; Database=<database-name>;"
Примечание.
Тип проверки подлинности Active Directory по умолчанию можно использовать как на локальном компьютере, так и в Службе приложений Azure. Драйвер пытается получить маркер из идентификатора Microsoft Entra с помощью различных средств. Если приложение развернуто, оно получает токен из управляемого удостоверения, назначаемого системой. Проверка подлинности также может быть выполнена с помощью управляемого удостоверения, назначаемого пользователем, если вы включаете:
User Id=<client-id-of-user-assigned-managed-identity>;
в строке подключения. Если приложение запущено локально, оно пытается получить маркер из Visual Studio, Visual Studio Code или Azure CLI.Это все, что необходимо для подключения к Базе данных SQL. При отладке в Visual Studio код использует пользователя Microsoft Entra, настроенного в 2. Настройте среду разработки. Позже вы настроите Базу данных SQL, чтобы разрешить установку подключения с использованием управляемого удостоверения вашего приложения Службы приложений. Класс
DefaultAzureCredential
кэширует маркер в памяти и извлекает его из идентификатора Microsoft Entra сразу перед истечением срока действия. Для обновления токена не требуется пользовательский код.Введите
Ctrl+F5
, чтобы снова запустить приложение. То же приложение CRUD в браузере теперь подключается к База данных SQL Azure напрямую с помощью проверки подлинности Microsoft Entra. Эта настройка позволяет запускать перенос базы данных из Visual Studio.
4. Используйте подключение посредством управляемой идентификации
Затем настройте приложение службы приложений для подключения к базе данных SQL с назначенным системой управляемым удостоверением.
Примечание.
Инструкции в этом разделе предназначены для удостоверения, назначаемого системой. Для использования удостоверения, назначаемого пользователем, см. в статье «Подключение к базам данных Azure из Службы приложений без секретов с помощью управляемого удостоверения».
Включить управляемое удостоверение на приложении
Чтобы включить управляемое удостоверение для приложения Azure, используйте команду az webapp identity assign в Cloud Shell. В следующей команде замените <app-name>.
az webapp identity assign --resource-group myResourceGroup --name <app-name>
Примечание.
Чтобы включить управляемое удостоверение для слота развертывания, добавьте --slot <slot-name>
, затем используйте имя слота в <slot-name>.
Пример результата:
{ "additionalProperties": {}, "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222", "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee", "type": "SystemAssigned" }
Предоставить разрешения управляемому удостоверению
Примечание.
Если вы хотите, вы можете добавить удостоверение в группу Microsoft Entra, а затем предоставить доступ SQL Базе данных этой группе вместо удостоверения. Например, следующие команды добавляют управляемое удостоверение из предыдущего шага в новую группу с именем myAzureSQLDBAccessGroup:
$groupid=(az ad group create --display-name myAzureSQLDBAccessGroup --mail-nickname myAzureSQLDBAccessGroup --query objectId --output tsv)
$msiobjectid=(az webapp identity show --resource-group myResourceGroup --name <app-name> --query principalId --output tsv)
az ad group member add --group $groupid --member-id $msiobjectid
az ad group member list -g $groupid
В Cloud Shell войдите в базу данных SQL с помощью команды SQLCMD. Замените имя сервера<>
sqlcmd -S <server-name>.database.windows.net -d <db-name> -U <aad-user-name> -P "<aad-password>" -G -l 30
В командной строке SQL нужной базы данных выполните следующие команды, чтобы предоставить приложению требуемые минимальные разрешения. Например,
CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER With OBJECT_ID='xxx'; ALTER ROLE db_datareader ADD MEMBER [<identity-name>]; ALTER ROLE db_datawriter ADD MEMBER [<identity-name>]; ALTER ROLE db_ddladmin ADD MEMBER [<identity-name>]; GO
<identity-name> — это имя управляемого удостоверения в Microsoft Entra ID. Если удостоверение назначено системой, имя всегда совпадает с именем вашего приложения App Service. Для слота развертывания имя удостоверения, назначенного системой, — <app-name>/slots/<slot-name>. Чтобы предоставить разрешения для группы Microsoft Entra, используйте отображаемое имя группы (например, myAzureSQLDBAccessGroup).
Введите
EXIT
, чтобы вернуться в командную строку Cloud Shell.Примечание.
Серверные службы управляемых удостоверений также поддерживают кэш маркеров, который обновляет маркер целевого ресурса только по истечении срока его действия. Если вы допустите ошибку при настройке разрешений Базы данных SQL и попытаетесь изменить разрешения после попытки получить маркер в приложении, вы получите новый маркер с обновленными разрешениями только после того, как истечет срок действия кэшированного маркера.
Примечание.
Идентификаторы и управляемые удостоверения Microsoft Entra не поддерживаются для локального SQL Server.
Изменение строки подключения
Помните, что те же изменения, которые вы внесли в файл Web.config или appsettings.json, используются с управляемым удостоверением, поэтому единственное, что нужно сделать, — это удалить существующую строку подключения в Службе приложений, которая была создана Visual Studio при первом развертывании вашего приложения. Используйте следующую команду, но замените <app-name> именем вашего приложения.
az webapp config connection-string delete --resource-group myResourceGroup --name <app-name> --setting-names MyDbConnection
5. Публикация изменений
Теперь требуется опубликовать изменения в Azure.
Если вы пришли из Учебного пособия: Создание приложения ASP.NET в Azure с базой данных SQL, опубликуйте изменения в Visual Studio. В обозревателе решений щелкните правой кнопкой мыши проект DotNetAppSqlDb и выберите Опубликовать.
На странице публикации выберите команду Опубликовать.
Внимание
Убедитесь, что имя службы приложений не соответствует ни одной из существующих регистраций приложений. Это приведет к конфликтам идентификаторов Principal.
Когда на новой веб-странице отображается список дел, ваше приложение подключается к базе данных с помощью управляемой идентификации.
Теперь вы должны иметь возможность редактировать список дел, как раньше.
Очистка ресурсов
На предыдущем шаге вы создали ресурсы Azure в группе ресурсов. Если эти ресурсы вам не понадобятся в будущем, вы можете удалить группу ресурсов, выполнив следующую команду в Cloud Shell:
az group delete --name myResourceGroup
Ее выполнение может занять до минуты.
Следующие шаги
Чему вы научились:
- Включение управляемых удостоверений
- Предоставление управляемому удостоверению доступа к Базе данных SQL
- Настройка Entity Framework для использования проверки подлинности Microsoft Entra с базой данных SQL.
- Подключение к базе данных SQL из Visual Studio с использованием аутентификации Microsoft Entra