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


Интеграция Базы данных Azure для MySQL с помощью соединителя сервисов

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

Внимание

База данных Azure для MySQL один сервер находится на пути выхода на пенсию. Настоятельно рекомендуем выполнить обновление до гибкого сервера базы данных Azure для MySQL. Дополнительные сведения о миграции на гибкий сервер База данных Azure для MySQL см. в статье "Что происходит с одним сервером База данных Azure для MySQL?"

Поддерживаемые службы вычислений

Соединитель служб можно использовать для подключения следующих вычислительных служб к База данных Azure для MySQL:

  • Служба приложений Azure
  • Приложения-контейнеры Azure
  • Функции Azure
  • Служба Azure Kubernetes (AKS)
  • Azure Spring Apps

Поддерживаемые типы проверки подлинности и типы клиентов

В таблице ниже показано, какие сочетания методов проверки подлинности и клиентов поддерживаются для подключения вычислительных служб к базе данных Azure для MySQL с помощью соединителя служб. Значение "Да" указывает, что сочетание поддерживается, а значение "Нет" указывает, что оно не поддерживается.

Тип клиента Управляемое удостоверение, назначаемое системой Управляемое удостоверение, назначаемое пользователем Секретный ключ/строка подключения Субъект-служба
.NET Да Да Да Да
Go (go-sql-driver для MySQL) Да Да Да Да
Java (JDBC) Да Да Да Да
Java — Spring Boot (JDBC) Да Да Да Да
Node.js (mysql) Да Да Да Да
Python (mysql-connector-python) Да Да Да Да
Python-Django Да Да Да Да
PHP (MySQLi) Да Да Да Да
Ruby (mysql2) Да Да Да Да
Нет Да Да Да Да

Примечание.

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

Имена переменных среды по умолчанию или свойства приложения и пример кода

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

Управляемое удостоверение, назначаемое системой

Имя переменной среды по умолчанию Описание Пример значения
AZURE_MYSQL_CONNECTIONSTRING Строка подключения ADO.NET MySQL Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required;

Пример кода

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

Для .NET нет подключаемого модуля или библиотеки для поддержки подключений без пароля. Токен доступа для управляемого удостоверения или учетной записи службы можно получить с помощью клиентской библиотеки, такой как Azure.Identity. Затем вы можете использовать маркер доступа в качестве пароля для подключения к базе данных. Когда вы используете указанный ниже код, раскомментируйте часть фрагмента кода для типа проверки подлинности, который вы хотите использовать.

using Azure.Core;
using Azure.Identity;
using MySqlConnector;

// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned managed identity.
// var credential = new DefaultAzureCredential();

// For user-assigned managed identity.
// var credential = new DefaultAzureCredential(
//     new DefaultAzureCredentialOptions
//     {
//         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_MYSQL_CLIENTID");
//     });

// For service principal.
// var tenantId = Environment.GetEnvironmentVariable("AZURE_MYSQL_TENANTID");
// var clientId = Environment.GetEnvironmentVariable("AZURE_MYSQL_CLIENTID");
// var clientSecret = Environment.GetEnvironmentVariable("AZURE_MYSQL_CLIENTSECRET");
// var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);

var tokenRequestContext = new TokenRequestContext(
    new[] { "https://ossrdbms-aad.database.windows.net/.default" });
AccessToken accessToken = await credential.GetTokenAsync(tokenRequestContext);
// Open a connection to the MySQL server using the access token.
string connectionString =
    $"{Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING")};Password={accessToken.Token}";

using var connection = new MySqlConnection(connectionString);
Console.WriteLine("Opening connection using access token...");
await connection.OpenAsync();

// do something

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

Управляемая личность, назначаемая пользователем

Имя переменной среды по умолчанию Описание Пример значения
AZURE_MYSQL_CLIENTID Идентификатор клиента <identity-client-ID>
AZURE_MYSQL_CONNECTIONSTRING Строка подключения ADO.NET MySQL Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required;

Пример кода

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

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

using Azure.Core;
using Azure.Identity;
using MySqlConnector;

// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned managed identity.
// var credential = new DefaultAzureCredential();

// For user-assigned managed identity.
// var credential = new DefaultAzureCredential(
//     new DefaultAzureCredentialOptions
//     {
//         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_MYSQL_CLIENTID");
//     });

// For service principal.
// var tenantId = Environment.GetEnvironmentVariable("AZURE_MYSQL_TENANTID");
// var clientId = Environment.GetEnvironmentVariable("AZURE_MYSQL_CLIENTID");
// var clientSecret = Environment.GetEnvironmentVariable("AZURE_MYSQL_CLIENTSECRET");
// var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);

var tokenRequestContext = new TokenRequestContext(
    new[] { "https://ossrdbms-aad.database.windows.net/.default" });
AccessToken accessToken = await credential.GetTokenAsync(tokenRequestContext);
// Open a connection to the MySQL server using the access token.
string connectionString =
    $"{Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING")};Password={accessToken.Token}";

using var connection = new MySqlConnection(connectionString);
Console.WriteLine("Opening connection using access token...");
await connection.OpenAsync();

// do something

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

строка подключения

Предупреждение

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

Имя переменной среды по умолчанию Описание Пример значения
AZURE_MYSQL_CONNECTIONSTRING Строка подключения MySQL ADO.NET Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;Password=<MySQL-DB-password>;SSL Mode=Required

Пример кода

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

  1. Установите зависимости. Следуйте инструкциям по установке соединителя/NET MySQL
  2. В коде получите строку подключения MySQL из переменных среды, добавленных службой Service Connector. Чтобы установить зашифрованное подключение к серверу MySQL по протоколу SSL, выполните следующие действия.
    using System;
    using System.Data;
    using MySql.Data.MySqlClient;
    
    string connectionString = Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING");
    using (MySqlConnection connection = new MySqlConnection(connectionString))
    {
        connection.Open();
    }
    

Субъект-служба

Имя переменной среды по умолчанию Описание Пример значения
AZURE_MYSQL_CLIENTID Идентификатор клиента <client-ID>
AZURE_MYSQL_CLIENTSECRET Секрет клиента <client-secret>
AZURE_MYSQL_TENANTID Идентификатор клиента <tenant-ID>
AZURE_MYSQL_CONNECTIONSTRING Строка подключения MySQL ADO.NET Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required

Пример кода

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

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

using Azure.Core;
using Azure.Identity;
using MySqlConnector;

// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned managed identity.
// var credential = new DefaultAzureCredential();

// For user-assigned managed identity.
// var credential = new DefaultAzureCredential(
//     new DefaultAzureCredentialOptions
//     {
//         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_MYSQL_CLIENTID");
//     });

// For service principal.
// var tenantId = Environment.GetEnvironmentVariable("AZURE_MYSQL_TENANTID");
// var clientId = Environment.GetEnvironmentVariable("AZURE_MYSQL_CLIENTID");
// var clientSecret = Environment.GetEnvironmentVariable("AZURE_MYSQL_CLIENTSECRET");
// var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);

var tokenRequestContext = new TokenRequestContext(
    new[] { "https://ossrdbms-aad.database.windows.net/.default" });
AccessToken accessToken = await credential.GetTokenAsync(tokenRequestContext);
// Open a connection to the MySQL server using the access token.
string connectionString =
    $"{Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING")};Password={accessToken.Token}";

using var connection = new MySqlConnection(connectionString);
Console.WriteLine("Opening connection using access token...");
await connection.OpenAsync();

// do something

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

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

Дополнительные сведения о соединителе службы см. в документации.