Руководство. Подключите приложение-функцию к Azure SQL с помощью управляемого удостоверения и привязок SQL

Функции Azure предоставляют управляемое удостоверение, которое является готовым решением для защиты доступа к Базе данных SQL Azure и другим службам Azure. Управляемые удостоверения в службе приложений делают ваше приложение более безопасным, устраняя из него секреты, такие как учетные данные в строках подключения. В этом руководстве вы добавите управляемое удостоверение в функцию Azure, которая использует привязки Azure SQL. Пример проекта функции Azure с привязками SQL доступен в примере серверной части ToDo.

По завершении работы с этим руководством функция Azure будет подключаться к базе данных Azure SQL без использования имени пользователя и пароля.

Ниже приведен обзор действий, которые следует выполнить.

Предоставление доступа к базе данных для пользователя Azure AD

Сначала включите аутентификацию Azure AD в базе данных SQL, назначив пользователя Azure AD администратором сервера Active Directory. Этот пользователь отличается от учетной записи Майкрософт, которую вы использовали для регистрации на подписку Azure. Это должен быть пользователь, которого вы создали, импортировали, синхронизировали или пригласили в Azure AD. Дополнительные сведения о разрешенных пользователях Azure AD см. в разделе Возможности и ограничения Azure AD в базе данных SQL.

Включение проверки подлинности Azure AD можно выполнить с помощью портала Azure, PowerShell или Azure CLI. Ниже приведены инструкции по Azure CLI, а сведения о выполнении этого действия с помощью портала Azure и PowerShell доступны в документации Azure SQL по проверке подлинности Azure AD.

  1. Если в вашем клиенте Azure AD отсутствует пользователь, создайте его, выполнив действия, описанные в статье Add or delete users using Azure Active Directory (Добавление или удаление пользователей с помощью Azure Active Directory).

  2. Найдите идентификатор объекта пользователя Azure AD с помощью az ad user list и замените <user-principal-name>. Результат сохраняется в переменной.

    Для 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)
    

    Совет

    Чтобы просмотреть список всех имен участников-пользователей в Azure AD, запустите az ad user list --query [].userPrincipalName.

  3. Добавьте этого пользователя Azure AD в качестве администратора 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 см. раздел Подготовка администратора Azure Active Directory для сервера

Включите в Функции Azure управляемое удостоверение, назначаемое системой.

На этом шаге мы добавим удостоверение, назначаемое системой, в Функцию Azure. В последующих шагах этому удостоверению будет предоставлен доступ к базе данных SQL.

Включение назначаемого системой управляемого удостоверения на портале Azure

  1. Создайте Функцию Azure на портале обычным образом. Перейдите к нему на портале.
  2. Прокрутите вниз до группы параметров в левой области навигации.
  3. Выберите Удостоверение.
  4. На вкладке Назначено системой для параметра Состояние установите значение Вкл. Нажмите кнопку «Сохранить».

Включение назначаемого системой удостоверения для приложения-функции

Дополнительные сведения о включении управляемых удостоверений, назначаемых системой, с помощью Azure CLI или PowerShell см. в использовании управляемых удостоверений с Функциями Azure.

Совет

Для управляемого удостоверения, назначаемого пользователем, перейдите на вкладку Назначено пользователем. Нажмите кнопку Добавить и выберите управляемое удостоверение. Дополнительные сведения о создании управляемого удостоверения, назначаемого пользователем, см. в разделе Управление управляемыми удостоверениями, назначаемых пользователем.

Предоставление управляемому удостоверению доступа к Базе данных SQL

На этом шаге мы подключимся к базе данных SQL с учетной записью пользователя Azure AD и предоставим управляемому удостоверению доступ к базе данных.

  1. Откройте предпочитаемое средство SQL и войдите с учетной записью пользователя Azure AD (например, пользователя Azure AD, назначенного администратором). Это можно сделать в Cloud Shell с помощью команды SQLCMD.

    sqlcmd -S <server-name>.database.windows.net -d <db-name> -U <aad-user-name> -P "<aad-password>" -G -l 30
    
  2. В командной строке 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> — имя управляемого удостоверения в Azure AD. Если удостоверение назначено системой, имя всегда будет совпадать с именем приложения-функции.

Настройка строки подключения функции Azure SQL

На последнем шаге мы настроим строку подключения функции Azure SQL для использования проверки подлинности управляемого удостоверения Azure AD.

Имя параметра строки подключения определяется в коде Функций как атрибут привязки «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

Дальнейшие действия