Compartir vía


Integración de Azure Database for MySQL con Service Connector

Esta página muestra los métodos de autenticación y clientes compatibles, y muestra el código de ejemplo que puede utilizar para conectar Azure Database for MySQL: servidor flexible a otros servicios en la nube mediante Service Connector. Esta página también muestra los nombres y valores predeterminados de las variables de entorno o la configuración de Spring Boot que se obtiene al crear la conexión de servicio.

Importante

El servidor único de Azure Database for MySQL está en proceso de retirada. Es muy recomendable actualizar al servidor flexible de Azure Database for MySQL. Para obtener más información sobre la migración al servidor flexible de Azure Database for MySQL, consulte ¿Qué sucede con el servidor único de Azure Database for MySQL?

Servicios de proceso admitidos

Service Connector puede utilizarse para conectar los siguientes servicios informáticos a Azure Database for MySQL:

  • Azure App Service
  • Azure Container Apps
  • Funciones de Azure
  • Azure Kubernetes Service (AKS)
  • Azure Spring Apps

Tipos de autenticación y tipos de cliente admitidos

La siguiente tabla muestra qué combinaciones de métodos de autenticación y clientes son compatibles para conectar su servicio informático a Azure Database for MySQL mediante el Conector de servicio. Un valor "Sí" indica que se admite la combinación, mientras que "No" indica que no se admite.

Tipo de cliente Identidad administrada asignada por el sistema Identidad administrada asignada por el usuario Secreto/cadena de conexión Entidad de servicio
.NET
Go (go-sql-driver for mysql)
Java (JDBC)
Java - Spring Boot (JDBC)
Node.js (mysql)
Python (mysql-connector-python)
Python-Django
PHP (MySQLi)
Ruby (mysql2)
None

Esta tabla indica que todas las combinaciones de tipos de cliente y métodos de autenticación de la tabla son compatibles. Todos los tipos de cliente pueden utilizar cualquiera de los métodos de autenticación para conectarse a Azure Database for MySQL utilizando el Conector de servicio.

Nota:

La identidad administrada asignada por el sistema, la identidad administrada asignada por el usuario y la entidad de seguridad de servicio sólo se admiten en la Azure CLI.

Nombres de variables de entorno predeterminados o propiedades de aplicación y código de ejemplo

Consulte los detalles de conexión y el código de ejemplo en las tablas siguientes, según el tipo de autenticación y el tipo de cliente de su conexión, para conectar servicios informáticos a Azure Database for MySQL. Para más información sobre las convenciones de nomenclatura, consulte el artículo sobre los elementos internos del conector de servicio.

Identidad administrada asignada por el sistema

Nombre de la variable de entorno predeterminado Descripción Valor de ejemplo
AZURE_MYSQL_CONNECTIONSTRING Cadena de conexión de MySQL de ADO.NET Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required;

Código de ejemplo

Consulte los pasos y el código siguientes para conectarse a Azure Database for MySQL utilizando una identidad administrada asignada por el sistema.

Para .NET, no hay un complemento ni una biblioteca que admita las conexiones sin contraseña. Puede obtener un token de acceso para la identidad administrada o la entidad de servicio utilizando una biblioteca de cliente como Azure.Identity. Luego puede usar el token de acceso como contraseña para conectarse a la base de datos. Al usar el código siguiente, quite la marca de comentario de la parte del fragmento de código para el tipo de autenticación que desea usar.

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

Para obtener ejemplos de código, consulte Conexión a bases de datos de Azure desde App Service sin secretos mediante una identidad administrada.

Identidad administrada asignada por el usuario

Nombre de la variable de entorno predeterminado Descripción Valor de ejemplo
AZURE_MYSQL_CLIENTID Id. de cliente <identity-client-ID>
AZURE_MYSQL_CONNECTIONSTRING Cadena de conexión de MySQL de ADO.NET Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required;

Código de ejemplo

Consulte los pasos y el código siguientes para conectarse a Azure Database for MySQL utilizando una identidad administrada asignada por el usuario.

Para .NET, no hay un complemento ni una biblioteca que admita las conexiones sin contraseña. Puede obtener un token de acceso para la identidad administrada o la entidad de servicio utilizando una biblioteca de cliente como Azure.Identity. Luego puede usar el token de acceso como contraseña para conectarse a la base de datos. Al usar el código siguiente, quite la marca de comentario de la parte del fragmento de código para el tipo de autenticación que desea usar.

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

Para obtener ejemplos de código, consulte Conexión a bases de datos de Azure desde App Service sin secretos mediante una identidad administrada.

Cadena de conexión

Advertencia

Microsoft recomienda usar el flujo de autenticación más seguro disponible. El flujo de autenticación que se describe en este procedimiento requiere un alto grado de confianza en la aplicación y conlleva riesgos que no están presentes en otros flujos. Solo debe usar este flujo cuando otros flujos más seguros, como las identidades administradas, no sean viables.

Nombre de la variable de entorno predeterminado Descripción Valor de ejemplo
AZURE_MYSQL_CONNECTIONSTRING Cadena de conexión de MySQL de 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

Código de ejemplo

Consulte los pasos y el código siguientes para conectarse a Azure Database for MySQL utilizando una cadena de conexión.

  1. Instale las dependencias. Siga las instrucciones para instalar el conector o MySQL de NET
  2. En código, obtener la cadena de conexión MySQL de las variables de entorno agregadas por el servicio Service Connector. Para establecer una conexión cifrada con el servidor MySQL a través de SSL, consulte estos pasos.
    using System;
    using System.Data;
    using MySql.Data.MySqlClient;
    
    string connectionString = Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING");
    using (MySqlConnection connection = new MySqlConnection(connectionString))
    {
        connection.Open();
    }
    

Entidad de servicio

Nombre de la variable de entorno predeterminado Descripción Valor de ejemplo
AZURE_MYSQL_CLIENTID Id. de cliente <client-ID>
AZURE_MYSQL_CLIENTSECRET Secreto de cliente <client-secret>
AZURE_MYSQL_TENANTID El identificador de inquilino <tenant-ID>
AZURE_MYSQL_CONNECTIONSTRING Cadena de conexión de MySQL de ADO.NET Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required

Código de ejemplo

Consulte los pasos y el código a continuación para conectarse a Azure Database for MySQL utilizando una entidad de seguridad de servicio.

Para .NET, no hay un complemento ni una biblioteca que admita las conexiones sin contraseña. Puede obtener un token de acceso para la identidad administrada o la entidad de servicio utilizando una biblioteca de cliente como Azure.Identity. Luego puede usar el token de acceso como contraseña para conectarse a la base de datos. Al usar el código siguiente, quite la marca de comentario de la parte del fragmento de código para el tipo de autenticación que desea usar.

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

Para obtener ejemplos de código, consulte Conexión a bases de datos de Azure desde App Service sin secretos mediante una identidad administrada.

Pasos siguientes

Siga la documentación para más información sobre Service Connector.