Поделиться через


Перенос приложения Python на использование бессерверных подключений с База данных SQL Azure

Применимо к: База данных SQL Azure

Запросы приложений к База данных SQL Azure должны проходить проверку подлинности. Хотя существует несколько вариантов проверки подлинности в База данных SQL Azure, вы должны по возможности определить приоритеты подключений без пароля в приложениях. Традиционные методы проверки подлинности, использующие пароли или секретные ключи, создают риски безопасности и осложнения. Ознакомьтесь с бессерверными подключениями для центра служб Azure, чтобы узнать больше о преимуществах перехода на бессерверные подключения. В следующем руководстве объясняется, как перенести существующее приложение Python для подключения к База данных SQL Azure использовать бессерверные подключения вместо решения для имени пользователя и пароля.

Настройка База данных SQL Azure

Подключения без пароля используют проверку подлинности Microsoft Entra для подключения к службам Azure, включая База данных SQL Azure. Проверка подлинности Microsoft Entra позволяет управлять удостоверениями в центральном расположении, чтобы упростить управление разрешениями. Дополнительные сведения о настройке проверки подлинности Microsoft Entra для База данных SQL Azure:

В этом руководстве по миграции убедитесь, что администратор Microsoft Entra назначен вашему База данных SQL Azure.

  1. Перейдите на страницу Microsoft Entra логического сервера.

  2. Выберите "Задать администратора", чтобы открыть всплывающее меню идентификатора Microsoft Entra.

  3. В всплывающем меню идентификатора Microsoft Entra id найдите пользователя, которого вы хотите назначить администратором.

  4. Выберите пользователя и нажмите кнопку "Выбрать".

    Снимок экрана: включение администратора Microsoft Entra.

Настройка локальной среды разработки.

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

Вход в Azure

Для локальной разработки убедитесь, что вы вошли с той же учетной записью Azure AD, которую вы хотите использовать для доступа к База данных SQL Azure. Вы можете пройти проверку подлинности с помощью популярных средств разработки, таких как Azure CLI или Azure PowerShell. Средства разработки, с помощью которых можно пройти проверку подлинности на разных языках.

Войдите в Azure с помощью Azure CLI, выполнив следующую команду:

az login

Создание пользователя базы данных и назначение ролей

Создайте пользователя в База данных SQL Azure. Пользователь должен соответствовать учетной записи Azure, используемой для локального входа в разделе входа в Azure .

  1. В портал Azure перейдите к базе данных SQL и выберите редактор запросов (предварительная версия).

  2. Нажмите кнопку "Продолжить" в <your-username> правой части экрана, чтобы войти в базу данных с помощью учетной записи.

  3. В представлении редактора запросов выполните следующие команды T-SQL:

    CREATE USER [user@domain] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [user@domain];
    ALTER ROLE db_datawriter ADD MEMBER [user@domain];
    ALTER ROLE db_ddladmin ADD MEMBER [user@domain];
    GO
    

    Снимок экрана: использование редактора запросов Azure.

    При выполнении этих команд роль участника базы данных SQL назначается указанной учетной записи. Эта роль позволяет удостоверению считывать, записывать и изменять данные и схему базы данных. Дополнительные сведения о назначенных ролях см. в разделе "Предопределенная база данных".

Обновление конфигурации локального подключения

Существующий код приложения, который подключается к База данных SQL Azure с помощью драйвера SQL Python — pyodbc продолжает работать с бессерверными подключениями с незначительными изменениями. Например, следующий код работает как с проверкой подлинности SQL, так и с бессерверными подключениями при локальном запуске и при развертывании в службе приложение Azure.

import os
import pyodbc, struct
from azure.identity import DefaultAzureCredential

connection_string = os.environ["AZURE_SQL_CONNECTIONSTRING"]

def get_all():
    with get_conn() as conn:
        cursor = conn.cursor()
        cursor.execute("SELECT * FROM Persons")
        # Do something with the data
    return

def get_conn():
    credential = DefaultAzureCredential(exclude_interactive_browser_credential=False)
    token_bytes = credential.get_token("https://database.windows.net/.default").token.encode("UTF-16-LE")
    token_struct = struct.pack(f'<I{len(token_bytes)}s', len(token_bytes), token_bytes)
    SQL_COPT_SS_ACCESS_TOKEN = 1256  # This connection option is defined by microsoft in msodbcsql.h
    conn = pyodbc.connect(connection_string, attrs_before={SQL_COPT_SS_ACCESS_TOKEN: token_struct})
    return conn

Совет

В этом примере кода переменная WEBSITE_HOSTNAME среды Служба приложений используется для определения среды, в которой выполняется код. Для других сценариев развертывания можно использовать другие переменные среды для определения среды.

Чтобы обновить указанные строка подключения (AZURE_SQL_CONNECTIONSTRING) для локальной разработки, используйте формат без пароля строка подключения:

Driver={ODBC Driver 18 for SQL Server};Server=tcp:<database-server-name>.database.windows.net,1433;Database=<database-name>;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30

Тестирование приложения

Запустите приложение локально и убедитесь, что подключения к База данных SQL Azure работают должным образом. Помните, что для изменения пользователей и ролей Azure может потребоваться несколько минут. Теперь приложение настроено на локальное выполнение без необходимости управлять секретами в самом приложении.

Настройка среды размещения Azure

После локального использования бессерверных подключений приложение может пройти проверку подлинности в База данных SQL Azure после развертывания в Azure. В следующих разделах объясняется, как настроить развернутое приложение для подключения к База данных SQL Azure с помощью управляемого удостоверения. Управляемые удостоверения предоставляют автоматическое управляемое удостоверение в идентификаторе Microsoft Entra (прежнее название — Azure Active Directory) для приложений, используемых при подключении к ресурсам, поддерживающим проверку подлинности Microsoft Entra. Дополнительные сведения об управляемых удостоверениях:

Создание управляемого удостоверения

Создайте управляемое удостоверение, назначаемое пользователем, с помощью портал Azure или Azure CLI. Приложение использует удостоверение для проверки подлинности в других службах.

  1. В верхней части портал Azure найдите управляемые удостоверения. Выберите результат управляемых удостоверений.
  2. Нажмите кнопку " + Создать " в верхней части страницы обзора управляемых удостоверений.
  3. На вкладке "Основные сведения" введите следующие значения:
    • Подписка: выберите нужную подписку.
    • Группа ресурсов: выберите нужную группу ресурсов.
    • Регион: выберите ближайший регион.
    • Имя: введите распознаваемое имя удостоверения, например MigrationIdentity.
  4. В нижней части страницы выберите Review + create (Проверить и создать).
  5. По завершении проверки нажмите кнопку "Создать". Azure создает новое удостоверение, назначаемое пользователем.

После создания ресурса выберите "Перейти к ресурсу ", чтобы просмотреть сведения об управляемом удостоверении.

Снимок экрана: создание управляемого удостоверения с помощью портал Azure.

Связывание управляемого удостоверения с веб-приложением

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

Выполните следующие действия в портал Azure, чтобы связать управляемое удостоверение, назначаемое пользователем, с приложением. Эти же действия применяются к следующим службам Azure:

  • Azure Spring Apps
  • Приложения-контейнеры Azure
  • Виртуальные машины Azure
  • Служба Azure Kubernetes
  • Перейдите на страницу обзора веб-приложения.
  1. Выберите удостоверение в области навигации слева.

  2. На странице "Удостоверение" перейдите на вкладку "Назначаемый пользователем".

  3. Нажмите кнопку +Добавить, чтобы открыть всплывающее окно добавления управляемого удостоверения, назначаемого пользователем.

  4. Выберите подписку, используемую ранее для создания удостоверения.

  5. Найдите идентификатор migrationIdentity по имени и выберите его из результатов поиска.

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

    Снимок экрана: назначение управляемого удостоверения.

Создание пользователя базы данных для удостоверения и назначение ролей

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

  1. В портал Azure перейдите к базе данных SQL и выберите редактор запросов (предварительная версия).

  2. Нажмите кнопку "Продолжить" в <username> правой части экрана, чтобы войти в базу данных с помощью учетной записи.

  3. В представлении редактора запросов выполните следующие команды T-SQL:

    CREATE USER [user-assigned-identity-name] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [user-assigned-identity-name];
    ALTER ROLE db_datawriter ADD MEMBER [user-assigned-identity-name];
    ALTER ROLE db_ddladmin ADD MEMBER [user-assigned-identity-name];
    GO
    

    Снимок экрана: использование редактора запросов Azure для создания пользователя SQL для управляемого удостоверения.

    При выполнении этих команд роль участника базы данных SQL назначается управляемому удостоверению, назначаемого пользователем. Эта роль позволяет удостоверению считывать, записывать и изменять данные и схему базы данных.


Внимание

Используйте осторожность при назначении ролей пользователей базы данных в рабочих средах предприятия. В этих сценариях приложение не должно выполнять все операции с использованием одного удостоверения с повышенными привилегиями. Попробуйте реализовать принцип наименьшей привилегии, настроив несколько удостоверений с определенными разрешениями для определенных задач.

Дополнительные сведения о настройке ролей базы данных и безопасности см. в следующих ресурсах:

Обновление строки подключения

Обновите конфигурацию приложения Azure, чтобы использовать формат без пароля строка подключения. Формат должен быть таким же, как и в локальной среде.

Строки подключения можно хранить в виде переменных среды в среде размещения приложений. Следующие инструкции сосредоточены на Служба приложений, но другие службы размещения Azure предоставляют аналогичные конфигурации.

Driver={ODBC Driver 18 for SQL Server};Server=tcp:<database-server-name>.database.windows.net,1433;Database=<database-name>;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30

<database-server-name>— это имя сервера База данных SQL Azure и <database-name> имя База данных SQL Azure.

Создание параметра приложения для идентификатора клиента управляемого удостоверения

Чтобы использовать управляемое удостоверение, назначаемое пользователем, создайте переменную среды AZURE_CLIENT_ID и задайте ее равным идентификатору клиента управляемого удостоверения. Эту переменную можно задать в разделе "Конфигурация" приложения в портал Azure. Идентификатор клиента можно найти в разделе "Обзор" ресурса управляемого удостоверения в портал Azure.

Сохраните изменения и перезапустите приложение, если это не делается автоматически.

Примечание.

Пример кода подключения, показанного в этом руководстве по миграции, использует класс DefaultAzureCredential при развертывании. В частности, он использует DefaultAzureCredential без передачи идентификатора клиента управляемого удостоверения, назначаемого пользователем, конструктору. В этом сценарии резервный вариант — проверить наличие переменной среды AZURE_CLIENT_ID. Если переменная среды AZURE_CLIENT_ID не существует, управляемое удостоверение, назначаемое системой, будет использоваться при настройке.

Если передать идентификатор клиента управляемого удостоверения в конструкторе DefaultAzureCredential, код подключения по-прежнему можно использовать локально и развернуть, так как процесс проверки подлинности возвращается к интерактивной проверке подлинности в локальном сценарии. Дополнительные сведения см. в клиентской библиотеке удостоверений Azure для Python.

Тестирование приложения

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

Следующие шаги

Из этого учебника вы узнали, как выполнить переход приложения на подключение без пароля.

Дополнительные сведения о понятиях, описанных в этой статье, см. в следующих ресурсах: