Руководство. Подключите приложение-функцию к Azure SQL с помощью управляемого удостоверения и привязок SQL
Функции Azure предоставляют управляемое удостоверение, которое является готовым решением для защиты доступа к Базе данных SQL Azure и другим службам Azure. Управляемые удостоверения в службе приложений делают ваше приложение более безопасным, устраняя из него секреты, такие как учетные данные в строках подключения. В этом руководстве вы добавите управляемое удостоверение в функцию Azure, которая использует привязки Azure SQL. Пример проекта функции Azure с привязками SQL доступен в примере серверной части ToDo.
По завершении работы с этим руководством функция Azure будет подключаться к базе данных Azure SQL без использования имени пользователя и пароля.
Ниже приведен обзор действий, которые следует выполнить.
Предоставление доступа к базе данных пользователю Microsoft Entra
Сначала включите проверку подлинности Microsoft Entra в базу данных SQL, назначив пользователя Microsoft Entra администратором сервера Active Directory. Этот пользователь отличается от учетной записи Майкрософт, которую вы использовали для регистрации на подписку Azure. Он должен быть пользователем, который вы создали, импортировали, синхронизировали или пригласили в идентификатор Microsoft Entra. Дополнительные сведения о разрешенных пользователях Microsoft Entra см. в разделе о функциях и ограничениях Microsoft Entra в базе данных SQL.
Включение проверки подлинности Microsoft Entra можно выполнить с помощью портал Azure, PowerShell или Azure CLI. Инструкции по Azure CLI приведены ниже и сведения об этом с помощью портал Azure и PowerShell доступны в документации по SQL Azure по проверке подлинности Microsoft Entra.
Если у клиента Microsoft Entra еще нет пользователя, создайте его, выполнив действия по добавлению или удалению пользователей с помощью идентификатора Microsoft Entra.
Найдите идентификатор объекта пользователя Microsoft Entra, используя
az ad user list
имя участника-пользователя и замените <его.> Результат сохраняется в переменной.Для Azure CLI 2.37.0 и более новых версий:
azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].id --output tsv)
Для более ранних версий Azure CLI:
azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].objectId --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 для сервера"
Включите в Функции Azure управляемое удостоверение, назначаемое системой.
На этом шаге мы добавим удостоверение, назначаемое системой, в Функцию Azure. В последующих шагах этому удостоверению будет предоставлен доступ к базе данных SQL.
Включение назначаемого системой управляемого удостоверения на портале Azure
- Создайте Функцию Azure на портале обычным образом. Перейдите к нему на портале.
- Прокрутите вниз до группы параметров в левой области навигации.
- Выберите Удостоверение.
- На вкладке Назначено системой для параметра Состояние установите значение Вкл. Нажмите кнопку Сохранить.
Дополнительные сведения о включении управляемых удостоверений, назначаемых системой, с помощью Azure CLI или PowerShell см. в использовании управляемых удостоверений с Функциями Azure.
Совет
Для управляемого удостоверения, назначаемого пользователем, перейдите на вкладку "Назначенный пользователем". Нажмите кнопку "Добавить" и выберите управляемое удостоверение. Дополнительные сведения о создании управляемого удостоверения, назначаемого пользователем, см. в разделе "Управление назначаемыми пользователем управляемыми удостоверениями".
Предоставление управляемому удостоверению доступа к Базе данных SQL
На этом шаге мы подключимся к базе данных SQL с учетной записью пользователя Microsoft Entra и предоставим управляемому удостоверению доступ к базе данных.
Откройте предпочитаемое средство SQL и войдите с помощью учетной записи пользователя Microsoft Entra (например, пользователя Microsoft Entra, назначенного администратором). Это можно сделать в Cloud Shell с помощью команды 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; ALTER ROLE db_datareader ADD MEMBER [<identity-name>]; ALTER ROLE db_datawriter ADD MEMBER [<identity-name>]; GO
<identity-name — это имя> управляемого удостоверения в идентификаторе Microsoft Entra. Если удостоверение назначено системой, имя всегда будет совпадать с именем приложения-функции.
Настройка строки подключения функции Azure SQL
На последнем шаге мы настроим SQL-строка подключения функции Azure для использования проверки подлинности управляемого удостоверения Microsoft Entra.
Имя параметра строки подключения определяется в коде Функций как атрибут привязки «ConnectionStringSetting», как показано в атрибутах и заметках входной привязки SQL.
В параметрах приложения-функции необходимо обновить параметр строки подключения SQL следующим образом:
Server=demo.database.windows.net; Authentication=Active Directory Managed Identity; Database=testdb
testdb — это имя базы данных, к которому мы подключаемся, и demo.database.windows.net — имя сервера, к которому мы подключаемся.
Совет
Для управляемого удостоверения, назначаемого пользователем, используйте Server=demo.database.windows.net; Authentication=Active Directory Managed Identity; User Id=ClientIdOfManagedIdentity; Database=testdb
.