Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Служба приложений Azure предоставляет в Azure высоко масштабируемую службу веб-хостинга, автоматически устанавливающую исправления. Служба приложений также предоставляет управляемое удостоверение для приложения, которое является готовым решением для защиты доступа к SQL Azure и другим службам Azure. Управляемые идентичности в Службе приложений делают ваше приложение более безопасным, устраняя секреты, такие как учетные данные в строках подключения.
В этом руководстве показано, как добавить управляемое удостоверение в пример приложения .NET с базой данных SQL Azure. После завершения приложение может безопасно подключиться к базе данных SQL Azure без необходимости использовать имя пользователя и пароль.
Изучив это руководство, вы:
- Включите управляемые удостоверения.
- Предоставьте базе данных SQL Azure доступ к управляемому удостоверению.
- Настройте Entity Framework для использования аутентификации Microsoft Entra с SQL-базой данных.
- Подключитесь к базе данных SQL из Visual Studio с помощью проверки подлинности Microsoft Entra.
Рекомендации по использованию Базы данных Azure для MySQL или Базы данных Azure для PostgreSQL в Node.js, Python и Java фреймворках см. в разделе "Руководство: подключение к базам данных Azure из службы приложений без секретов с помощью управляемого удостоверения".
Примечание.
Идентификатор Microsoft Entra и управляемые удостоверения не поддерживаются для локального SQL Server.
Проверка подлинности Microsoft Entra отличается от встроенной проверки подлинности Windows в локальных доменных службах Active Directory (AD). AD DS и Идентификатор Microsoft Entra используют совершенно разные протоколы проверки подлинности. Для получения дополнительной информации см. документацию по доменным службам Microsoft Entra.
Предварительные условия
-
Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.
У вас есть базовое приложение Службы приложений Azure ASP.NET MVC или ASP.NET Core MVC create-read-update-delete (CRUD), которое использует базу данных SQL Azure с проверкой подлинности SQL в качестве серверной части. Действия, описанные в этом руководстве, поддерживают следующие версии .NET:
- .NET Framework 4.8 и более поздних версий;
- .NET 6.0 и выше.
Разрешить подключение клиента с компьютера к Azure, чтобы можно было отлаживать приложение в среде разработки. Вы можете добавить IP-адрес клиента, выполнив действия по управлению правилами брандмауэра IP-адресов на уровне сервера с помощью портала Azure.
Войдите в Azure Cloud Shell или подготовьте среду для использования 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.
Предоставление администратору базы данных доступа к пользователю Microsoft Entra
Включите проверку подлинности Microsoft Entra в базу данных SQL Azure, назначив пользователя Microsoft Entra в качестве администратора сервера SQL Azure. Администратор Microsoft Entra должен быть пользователем, созданным, импортированным, синхронизированным или приглашенным в идентификатор Microsoft Entra. Этот пользователь может не совпадать с пользователем учетной записи Майкрософт для вашей подписки Azure.
- Дополнительные сведения о создании пользователя Microsoft Entra см. в разделе "Добавление или удаление пользователей с помощью идентификатора Microsoft Entra".
- Дополнительные сведения о разрешенных пользователях Microsoft Entra для базы данных SQL см. в разделе о функциях и ограничениях Microsoft Entra в базе данных SQL.
- Дополнительные сведения о добавлении администратора SQL Server Azure см. в статье "Подготовка администратора Microsoft Entra для сервера".
Выполните следующие команды в среде Bash Azure Cloud Shell или после входа в Azure CLI локально.
Используйте
az ad user list
с параметромdisplay-name
,filter
илиupn
, чтобы получить идентификатор объекта для пользователя Microsoft Entra ID, которого вы хотите сделать администратором. Выполнитеaz ad user list
отдельно, чтобы отобразить сведения для всех пользователей в каталоге Microsoft Entra.Например, следующая команда отображает информацию для пользователя с ИД Microsoft Entra с
display-name
именем Firstname Lastname.az ad user list --display-name "Firstname Lastname"
Ниже приведен пример выходных данных:
"businessPhones": [], "displayName": "Firstname Lastname", "givenName": null, "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "jobTitle": null, "mail": "firstname@contoso.com", "mobilePhone": null, "officeLocation": null, "preferredLanguage": null, "surname": null, "userPrincipalName": "firstname@contoso.com"
Добавьте пользователя Microsoft Entra ID как администратора на сервере SQL Azure с помощью параметра
az sql server ad-admin create
. В следующей команде замените<server-name>
на имя вашего сервера без суффикса.database.windows.net
, а<entra-id>
на значениеid
из выходных данных предыдущей командыaz ad user list
.az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id <entra-id>
Настройте подключение управляемой идентификации для приложения
Эти шаги настраивают приложение на подключение к базе данных SQL Azure с использованием управляемого удостоверения, назначенного системой. Сведения об использовании назначаемого пользователем удостоверения см. в статье "Подключение к базам данных Azure из службы приложений без секретов с помощью управляемого удостоверения".
Активировать управляемое удостоверение для приложения
Чтобы включить управляемое удостоверение для приложения Azure, используйте команду az webapp identity assign, заменив на <app-name>
ваше имя приложения. Имя назначаемого системой удостоверения всегда совпадает с именем приложения.
az webapp identity assign --resource-group myResourceGroup --name <app-name>
Пример результата:
{
"additionalProperties": {},
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "SystemAssigned"
}
Чтобы включить управляемое удостоверение для слота развертывания, добавьте --slot <slot-name>
в предыдущую команду и используйте имя слота в <slot-name>
. Имя назначаемого системой удостоверения для слота <app-name>/slots/<slot-name>
развертывания.
Вы также можете добавить удостоверение личности в группу Microsoft Entra, а затем предоставить доступ к базе данных SQL группе Microsoft Entra вместо удостоверения личности. Чтобы предоставить разрешения для группы Microsoft Entra, используйте отображаемое имя группы. Следующие команды добавляют пример управляемого удостоверения в новую группу с именем 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
Предоставление разрешений управляемому удостоверению
Предоставьте удостоверению минимальные разрешения, необходимые приложению.
Откройте командную строку PowerShell и войдите в базу данных SQL с помощью следующей команды SQLCMD. Замените
<server-name>
на имя вашего сервера,<db-name>
на имя вашей базы данных, а<admin-user>
наuserPrincipalName
имя пользователя администратора из выходных данных предыдущей командыaz ad user list
.sqlcmd -S <servername>.database.windows.net -d <db-name> -U <admin-user> -G -l 30
Следуйте подсказкам, чтобы войти.
В командной строке SQL выполните следующие команды, чтобы предоставить приложению минимальные разрешения, необходимые для базы данных. Замените
<identity-name>
именем управляемого удостоверения в Microsoft Entra ID, которое совпадает с именем приложения.CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER; 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
Примечание.
Серверные службы управляемых удостоверений поддерживают кэш маркеров , который обновляет маркер целевого ресурса только после истечения срока действия. Если вы пытаетесь изменить разрешения базы данных SQL после первого получения маркера с приложением, вы не получите новый маркер с обновленными разрешениями до истечения срока действия кэшированного маркера.
Удаление исходной строки подключения
Внесенные изменения в web.config или appsettings.json применяются к управляемой учетной записи. Вы можете удалить исходную строку подключения, используемую при первом развертывании приложения. Чтобы удалить строку подключения, выполните следующую команду Azure CLI, заменив <app-name>
имя приложения и <connection-string-name>
имя строки подключения.
az webapp config connection-string delete --resource-group myResourceGroup --name <app-name> --setting-names <connection-string-name>
Настройка среды разработки
Настройте выбранную среду разработки и войдите в Azure. Для получения дополнительной информации о настройке вашей среды разработки для проверки подлинности Microsoft Entra см. клиентскую библиотеку Azure Identity для .NET.
Visual Studio для Windows интегрирован с проверкой подлинности Microsoft Entra.
- Чтобы включить разработку и отладку в Visual Studio, добавьте пользователя Microsoft Entra в Visual Studio, выбравпункт "Параметры учетной записифайла>" в верхнем меню, а затем нажмите кнопку "Войти" или "Добавить".
- Чтобы задать пользователя Microsoft Entra для проверки подлинности службы Azure, выберите Сервис>Параметры в верхнем меню, а затем выберите Проверка подлинности службы Azure>Выбор учетной записи. Выберите добавленного пользователя Microsoft Entra и нажмите кнопку "ОК".
Изменение проекта и публикация приложения
Веб-приложение, поддерживаемое базой данных SQL Azure, использует контекст базы данных для подключения к базе данных. Чтобы использовать аутентификацию Microsoft Entra для работы с приложением, необходимо обновить контекст базы данных таким образом, чтобы он ссылался на поставщика Entity Framework для SQL Server, который зависит от актуального поставщика Microsoft.Data.SqlClient ADO.NET.
Поставщик Entity Framework заменяет встроенный поставщик SQL Server System.Data.SqlClient
и включает поддержку методов аутентификации Microsoft Entra ID. Дополнительные сведения см. в статье Microsoft.EntityFramework.SqlServer.
[DbConfigurationType(typeof(MicrosoftSqlDbConfiguration))]
локально используется для контекста базы данных с помощью Microsoft.Data.SqlClient
, но поскольку System.Data.SqlClient
жестко задан как поставщик в Службе приложений Azure, необходимо расширить MicrosoftSqlDbConfiguration
, чтобы перенаправить ссылки с System.Data.SqlClient
на Microsoft.Data.SqlClient
. Действия различаются в зависимости от того, есть ли у вас приложение на ASP.NET или ASP.NET Core.
Приложение ASP.NET Core использует Entity Framework Core по умолчанию.
В консоли диспетчера пакетов Visual Studio добавьте пакет NuGet Microsoft.Data.SqlClient.
Install-Package Microsoft.Data.SqlClient
В appsettings.jsonзамените значение строки подключения следующим кодом, заменив
<server-name
имя сервера и<database-name>
имя базы данных."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>;
в строку подключения.Класс
DefaultAzureCredential
кэширует маркер в памяти и извлекает его из идентификатора Microsoft Entra до истечения срока действия. Для обновления токена не требуется пользовательский код.Теперь у вас есть все необходимое для подключения к базе данных SQL Azure при отладке в Visual Studio. Код использует пользователя Microsoft Entra, настроенного при настройке среды разработки.
Запустите приложение. Приложение CRUD в браузере подключается к базе данных SQL Azure напрямую с помощью проверки подлинности Microsoft Entra. Эта настройка позволяет запускать перенос базы данных из Visual Studio.
Опубликуйте изменения с помощью следующих команд Git:
git commit -am "configure managed identity" git push azure main
Тестирование приложения
Когда на новой веб-странице отображается список дел, ваше приложение подключается к базе данных с помощью управляемой идентификации.
Теперь можно изменить список to-do.
Очистка ресурсов
На предыдущем шаге вы создали ресурсы Azure в группе ресурсов. Если эти ресурсы вам не понадобятся в будущем, вы можете удалить группу ресурсов, выполнив следующую команду в Cloud Shell:
az group delete --name myResourceGroup
Ее выполнение может занять до минуты.
Связанный контент
- Руководство. Использование личного домена и управляемого сертификата для защиты приложения
- Руководство. Подключение приложения Служба приложений к База данных SQL от имени вошедшего пользователя
- Учебник: Подключение к базам данных Azure в Службе приложений без секретов с помощью управляемого удостоверения
- Руководство: Подключение к службам Azure, которые не поддерживают управляемые удостоверения, при использовании Key Vault
- Руководство: изолирование взаимодействия между внутренними сетями посредством интеграции виртуальной сети