Перенос приложения Node.js на использование бессерверных подключений с База данных SQL Azure
Применимо к: База данных SQL Azure
Запросы приложений к База данных SQL Azure должны проходить проверку подлинности. Хотя существует несколько вариантов проверки подлинности в База данных SQL Azure, вы должны по возможности определить приоритеты подключений без пароля в приложениях. Традиционные методы проверки подлинности, использующие пароли или секретные ключи, создают риски безопасности и осложнения. Ознакомьтесь с бессерверными подключениями для центра служб Azure, чтобы узнать больше о преимуществах перехода на бессерверные подключения.
В следующем руководстве объясняется, как перенести существующее приложение Node.js для подключения к База данных SQL Azure использовать бессерверные подключения вместо решения имени пользователя и пароля.
Настройка База данных SQL Azure
Подключения без пароля используют проверку подлинности Microsoft Entra для подключения к службам Azure, включая База данных SQL Azure. Проверка подлинности Microsoft Entra позволяет управлять удостоверениями в центральном расположении, чтобы упростить управление разрешениями. Дополнительные сведения о настройке проверки подлинности Microsoft Entra для База данных SQL Azure:
В этом руководстве по миграции убедитесь, что администратор Microsoft Entra назначен вашему База данных SQL Azure.
Перейдите на страницу Microsoft Entra логического сервера.
Выберите "Задать администратора", чтобы открыть всплывающее меню идентификатора Microsoft Entra.
В всплывающем меню идентификатора Microsoft Entra id найдите пользователя, которого вы хотите назначить администратором.
Выберите пользователя и нажмите кнопку "Выбрать".
Настройка локальной среды разработки.
Бессерверные подключения можно настроить для работы как для локальных, так и для размещенных в Azure сред. В этом разделе описано, как применить конфигурации, чтобы разрешить отдельным пользователям проходить проверку подлинности в База данных SQL Azure для локальной разработки.
Вход в Azure
Для локальной разработки убедитесь, что вы вошли с той же учетной записью Azure AD, которую вы хотите использовать для доступа к База данных SQL Azure. Вы можете пройти проверку подлинности с помощью популярных средств разработки, таких как Azure CLI или Azure PowerShell. Средства разработки, с помощью которых можно пройти проверку подлинности на разных языках.
Войдите в Azure с помощью Azure CLI, выполнив следующую команду:
az login
Создание пользователя базы данных и назначение ролей
Создайте пользователя в База данных SQL Azure. Пользователь должен соответствовать учетной записи Azure, используемой для локального входа в разделе входа в Azure .
В портал Azure перейдите к базе данных SQL и выберите редактор запросов (предварительная версия).
Нажмите кнопку "Продолжить" в
<your-username>
правой части экрана, чтобы войти в базу данных с помощью учетной записи.В представлении редактора запросов выполните следующие команды 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
При выполнении этих команд роль участника базы данных SQL назначается указанной учетной записи. Эта роль позволяет удостоверению считывать, записывать и изменять данные и схему базы данных. Дополнительные сведения о назначенных ролях см. в разделе "Предопределенная база данных".
Обновление конфигурации локального подключения
Создайте параметры среды для приложения.
AZURE_SQL_SERVER=<YOURSERVERNAME>.database.windows.net AZURE_SQL_DATABASE=<YOURDATABASENAME> AZURE_SQL_PORT=1433
Существующий код приложения, который подключается к База данных SQL Azure с помощью драйвера SQL Node.js , неумный продолжает работать с бессерверными подключениями с незначительными изменениями. Чтобы использовать управляемое удостоверение, назначаемое пользователем, передайте
authentication.type
иoptions.clientId
свойства.import sql from 'mssql'; // Environment settings - no user or password const server = process.env.AZURE_SQL_SERVER; const database = process.env.AZURE_SQL_DATABASE; const port = parseInt(process.env.AZURE_SQL_PORT); // Passwordless configuration const config = { server, port, database, authentication: { type: 'azure-active-directory-default', }, options: { encrypt: true, clientId: process.env.AZURE_CLIENT_ID // <----- user-assigned managed identity } }; // Existing application code export default class Database { config = {}; poolconnection = null; connected = false; constructor(config) { this.config = config; console.log(`Database: config: ${JSON.stringify(config)}`); } async connect() { try { console.log(`Database connecting...${this.connected}`); if (this.connected === false) { this.poolconnection = await sql.connect(this.config); this.connected = true; console.log('Database connection successful'); } else { console.log('Database already connected'); } } catch (error) { console.error(`Error connecting to database: ${JSON.stringify(error)}`); } } async disconnect() { try { this.poolconnection.close(); console.log('Database connection closed'); } catch (error) { console.error(`Error closing database connection: ${error}`); } } async executeQuery(query) { await this.connect(); const request = this.poolconnection.request(); const result = await request.query(query); return result.rowsAffected[0]; } } const databaseClient = new Database(config); const result = await databaseClient.executeQuery(`select * from mytable where id = 10`);
Переменная
AZURE_CLIENT_ID
среды создается далее в этом руководстве.
Тестирование приложения
Запустите приложение локально и убедитесь, что подключения к База данных SQL Azure работают должным образом. Помните, что для изменения пользователей и ролей Azure может потребоваться несколько минут. Теперь приложение настроено на локальное выполнение без необходимости управлять секретами в самом приложении.
Настройка среды размещения Azure
После локального использования бессерверных подключений приложение может пройти проверку подлинности в База данных SQL Azure после развертывания в Azure. В следующих разделах объясняется, как настроить развернутое приложение для подключения к База данных SQL Azure с помощью управляемого удостоверения. Управляемые удостоверения предоставляют автоматическое управляемое удостоверение в идентификаторе Microsoft Entra (прежнее название — Azure Active Directory) для приложений, используемых при подключении к ресурсам, поддерживающим проверку подлинности Microsoft Entra. Дополнительные сведения об управляемых удостоверениях:
- Обзор без пароля
- Рекомендации по управляемому удостоверению
- Управляемые удостоверения в Microsoft Entra для SQL Azure
Создание управляемого удостоверения
Создайте управляемое удостоверение, назначаемое пользователем, с помощью портал Azure или Azure CLI. Приложение использует удостоверение для проверки подлинности в других службах.
- В верхней части портал Azure найдите управляемые удостоверения. Выберите результат управляемых удостоверений.
- Нажмите кнопку " + Создать " в верхней части страницы обзора управляемых удостоверений.
- На вкладке "Основные сведения" введите следующие значения:
- Подписка: выберите нужную подписку.
- Группа ресурсов: выберите нужную группу ресурсов.
- Регион: выберите ближайший регион.
- Имя: введите распознаваемое имя удостоверения, например MigrationIdentity.
- В нижней части страницы выберите Review + create (Проверить и создать).
- По завершении проверки нажмите кнопку "Создать". Azure создает новое удостоверение, назначаемое пользователем.
После создания ресурса выберите "Перейти к ресурсу ", чтобы просмотреть сведения об управляемом удостоверении.
Связывание управляемого удостоверения с веб-приложением
Настройте веб-приложение для использования созданного управляемого удостоверения, назначаемого пользователем.
Выполните следующие действия в портал Azure, чтобы связать управляемое удостоверение, назначаемое пользователем, с приложением. Эти же действия применяются к следующим службам Azure:
- Azure Spring Apps
- Приложения-контейнеры Azure
- Виртуальные машины Azure
- Служба Azure Kubernetes
- Перейдите на страницу обзора веб-приложения.
Выберите удостоверение в области навигации слева.
На странице "Удостоверение" перейдите на вкладку "Назначаемый пользователем".
Нажмите кнопку +Добавить, чтобы открыть всплывающее окно добавления управляемого удостоверения, назначаемого пользователем.
Выберите подписку, используемую ранее для создания удостоверения.
Найдите идентификатор migrationIdentity по имени и выберите его из результатов поиска.
Нажмите кнопку "Добавить ", чтобы связать удостоверение с приложением.
Создание пользователя базы данных для удостоверения и назначение ролей
Создайте пользователя базы данных SQL, который сопоставляется с управляемым удостоверением, назначенным пользователем. Назначьте пользователям необходимые роли SQL, чтобы разрешить приложению читать, записывать и изменять данные и схему базы данных.
В портал Azure перейдите к базе данных SQL и выберите редактор запросов (предварительная версия).
Нажмите кнопку "Продолжить" в
<username>
правой части экрана, чтобы войти в базу данных с помощью учетной записи.В представлении редактора запросов выполните следующие команды 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
При выполнении этих команд роль участника базы данных SQL назначается управляемому удостоверению, назначаемого пользователем. Эта роль позволяет удостоверению считывать, записывать и изменять данные и схему базы данных.
Внимание
Используйте осторожность при назначении ролей пользователей базы данных в рабочих средах предприятия. В этих сценариях приложение не должно выполнять все операции с использованием одного удостоверения с повышенными привилегиями. Попробуйте реализовать принцип наименьшей привилегии, настроив несколько удостоверений с определенными разрешениями для определенных задач.
Дополнительные сведения о настройке ролей базы данных и безопасности см. в следующих ресурсах:
Создание параметра приложения для идентификатора клиента управляемого удостоверения
Чтобы использовать управляемое удостоверение, назначаемое пользователем, создайте AZURE_CLIENT_ID
переменную среды и задайте для него идентификатор клиента управляемого удостоверения. Эту переменную можно задать в разделе "Конфигурация" приложения в портал Azure. Идентификатор клиента можно найти в разделе "Обзор" ресурса управляемого удостоверения в портал Azure.
Сохраните изменения и перезапустите приложение, если это не делается автоматически.
Если необходимо использовать управляемое удостоверение, назначаемое системой, опустите options.clientId
свойство. Вам по-прежнему authentication.type
нужно передать свойство.
const config = {
server,
port,
database,
authentication: {
type: 'azure-active-directory-default'
},
options: {
encrypt: true
}
};
Тестирование приложения
Проверьте приложение, чтобы убедиться, что все еще работает. Для распространения всех изменений через среду Azure может потребоваться несколько минут.
Следующие шаги
Из этого учебника вы узнали, как выполнить переход приложения на подключение без пароля.
Дополнительные сведения о понятиях, описанных в этой статье, см. в следующих ресурсах: