Integración de Azure SQL Database con un conector de servicio
Artículo
En esta página se muestran los métodos de autenticación y los clientes admitidos y se muestra el código de ejemplo que puede usar para conectar los servicios de proceso a Azure SQL Database mediante el conector de servicio. Es posible que todavía pueda conectarse a Azure SQL Database mediante otros métodos. Esta página también muestra los nombres y valores predeterminados de las variables de entorno que se obtiene al crear la conexión de servicio.
Servicios de proceso admitidos
El conector de servicio se puede utilizar para conectar los siguientes servicios de proceso a Azure SQL Database:
Azure App Service
Azure Container Apps
Funciones de Azure
Azure Kubernetes Service (AKS)
Azure Spring Apps
Tipos de autenticación y clientes admitidos
En la tabla siguiente se muestran las combinaciones de métodos de autenticación y clientes que se admiten para conectar el servicio de proceso a Azure SQL Database 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
Sí
Sí
Sí
Sí
Go
No
No
Sí
No
Java
Sí
Sí
Sí
Sí
Java: Spring Boot
Sí
Sí
Sí
Sí
Node.js
Sí
Sí
Sí
Sí
PHP
No
No
Sí
No
Python
Sí
Sí
Sí
Sí
Python: Django
No
No
Sí
No
Ruby
No
No
Sí
No
Ninguno
Sí
Sí
Sí
Sí
En esta tabla se indica que se admite el método de cadena de conexión o secreto para todos los tipos de cliente. Los métodos de identidad administrada asignada por el sistema, de identidad administrada asignada por el usuario y de entidad de servicio son compatibles con los tipos de cliente .NET, Java, Java - Spring Boot, Node.js, Python y None. Estos métodos no se admiten para los tipos de cliente Go, PHP, Django y Ruby.
Nota:
La identidad administrada asignada por el sistema, la identidad administrada asignada por el usuario y la entidad de servicio solo se admiten en la CLI de Azure.
Nombres de variables de entorno predeterminados o propiedades de aplicación y código de ejemplo
Use los detalles de conexión siguientes para conectar servicios de proceso a Azure SQL Database. Para cada ejemplo siguiente, reemplace los textos de los marcadores de posición <sql-server>, <sql-database>, <sql-username> y <sql-password> por su propio nombre de servidor, el nombre de la base de datos, el identificador de usuario y la contraseña. Para más información sobre las convenciones de nomenclatura, consulte el artículo sobre los elementos internos del conector de servicio.
Obtenga la cadena de conexión de Azure SQL Database de la variable de entorno agregada por Service Connector.
using Microsoft.Data.SqlClient;
string connectionString =
Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING")!;
using var connection = new SqlConnection(connectionString);
connection.Open();
Obtenga la cadena de conexión de Azure SQL Database de la variable de entorno agregada por Service Connector.
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import com.microsoft.sqlserver.jdbc.SQLServerDataSource;
public class Main {
public static void main(String[] args) {
// AZURE_SQL_CONNECTIONSTRING should be one of the following:
// For system-assigned managed identity: "jdbc:sqlserver://{SQLName}.database.windows.net:1433;databaseName={SQLDbName};authentication=ActiveDirectoryMSI;"
// For user-assigned managed identity: "jdbc:sqlserver://{SQLName}.database.windows.net:1433;databaseName={SQLDbName};msiClientId={UserAssignedMiClientId};authentication=ActiveDirectoryMSI;"
// For service principal: "jdbc:sqlserver://{SQLName}.database.windows.net:1433;databaseName={SQLDbName};user={ServicePrincipalClientId};password={spSecret};authentication=ActiveDirectoryServicePrincipal;"
String connectionString = System.getenv("AZURE_SQL_CONNECTIONSTRING");
SQLServerDataSource ds = new SQLServerDataSource();
ds.setURL(connectionString);
try (Connection connection = ds.getConnection()) {
System.out.println("Connected successfully.");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Para una aplicación de Spring, si crea una conexión con la opción --client-type springboot, Service Connector establece las propiedades spring.datasource.url con formato de valor jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-db>;authentication=ActiveDirectoryMSI; a Azure Spring Apps.
Obtenga las configuraciones de conexión de Azure SQL Database de la variable de entorno agregada por Service Connector. 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. Si usa Azure Container Apps como servicio de proceso o la cadena de conexión del fragmento de código no funciona, consulte Migración de una aplicación de Python para usar conexiones sin contraseña con Azure SQL Database para conectarse a Azure SQL Database mediante un token de acceso.
import os
import pyodbc
server = os.getenv('AZURE_SQL_SERVER')
port = os.getenv('AZURE_SQL_PORT')
database = os.getenv('AZURE_SQL_DATABASE')
authentication = os.getenv('AZURE_SQL_AUTHENTICATION')
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned managed identity.
# connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server=tcp:{server},{port};Database={database};Authentication={authentication};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30'
# For user-assigned managed identity.
# clientID = os.getenv('AZURE_SQL_USER')
# connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server=tcp:{server},{port};Database={database};UID={clientID};Authentication={authentication};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30'
# For service principal.
# user = os.getenv('AZURE_SQL_USER')
# password = os.getenv('AZURE_SQL_PASSWORD')
# connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server=tcp:{server},{port};Database={database};UID={user};PWD={password};Authentication={authentication};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30'
conn = pyodbc.connect(connString)
Instale las dependencias.
npm install mssql
Obtenga las configuraciones de conexión de Azure SQL Database de las variables de entorno agregadas por Service Connector. 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.
En el caso de otros lenguajes, use las propiedades de conexión que establece el conector de servicio en las variables de entorno para conectar la base de datos. Para obtener detalles sobre las variables de entorno, consulte Integración de Azure SQL Database con el conector de servicio.
Data Source=<sql-server>.database.windows.net,1433;Initial Catalog=<sql-database>;User ID=<identity-client-ID>;Authentication=ActiveDirectoryManagedIdentity
Obtenga la cadena de conexión de Azure SQL Database de la variable de entorno agregada por Service Connector.
using Microsoft.Data.SqlClient;
string connectionString =
Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING")!;
using var connection = new SqlConnection(connectionString);
connection.Open();
Obtenga la cadena de conexión de Azure SQL Database de la variable de entorno agregada por Service Connector.
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import com.microsoft.sqlserver.jdbc.SQLServerDataSource;
public class Main {
public static void main(String[] args) {
// AZURE_SQL_CONNECTIONSTRING should be one of the following:
// For system-assigned managed identity: "jdbc:sqlserver://{SQLName}.database.windows.net:1433;databaseName={SQLDbName};authentication=ActiveDirectoryMSI;"
// For user-assigned managed identity: "jdbc:sqlserver://{SQLName}.database.windows.net:1433;databaseName={SQLDbName};msiClientId={UserAssignedMiClientId};authentication=ActiveDirectoryMSI;"
// For service principal: "jdbc:sqlserver://{SQLName}.database.windows.net:1433;databaseName={SQLDbName};user={ServicePrincipalClientId};password={spSecret};authentication=ActiveDirectoryServicePrincipal;"
String connectionString = System.getenv("AZURE_SQL_CONNECTIONSTRING");
SQLServerDataSource ds = new SQLServerDataSource();
ds.setURL(connectionString);
try (Connection connection = ds.getConnection()) {
System.out.println("Connected successfully.");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Para una aplicación de Spring, si crea una conexión con la opción --client-type springboot, Service Connector establece las propiedades spring.datasource.url con formato de valor jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-db>;authentication=ActiveDirectoryMSI; a Azure Spring Apps.
Obtenga las configuraciones de conexión de Azure SQL Database de la variable de entorno agregada por Service Connector. 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. Si usa Azure Container Apps como servicio de proceso o la cadena de conexión del fragmento de código no funciona, consulte Migración de una aplicación de Python para usar conexiones sin contraseña con Azure SQL Database para conectarse a Azure SQL Database mediante un token de acceso.
import os
import pyodbc
server = os.getenv('AZURE_SQL_SERVER')
port = os.getenv('AZURE_SQL_PORT')
database = os.getenv('AZURE_SQL_DATABASE')
authentication = os.getenv('AZURE_SQL_AUTHENTICATION')
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned managed identity.
# connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server=tcp:{server},{port};Database={database};Authentication={authentication};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30'
# For user-assigned managed identity.
# clientID = os.getenv('AZURE_SQL_USER')
# connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server=tcp:{server},{port};Database={database};UID={clientID};Authentication={authentication};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30'
# For service principal.
# user = os.getenv('AZURE_SQL_USER')
# password = os.getenv('AZURE_SQL_PASSWORD')
# connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server=tcp:{server},{port};Database={database};UID={user};PWD={password};Authentication={authentication};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30'
conn = pyodbc.connect(connString)
Instale las dependencias.
npm install mssql
Obtenga las configuraciones de conexión de Azure SQL Database de las variables de entorno agregadas por Service Connector. 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.
En el caso de otros lenguajes, use las propiedades de conexión que establece el conector de servicio en las variables de entorno para conectar la base de datos. Para obtener detalles sobre las variables de entorno, consulte Integración de Azure SQL Database con el conector de servicio.
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.
Obtenga la cadena de conexión de Azure SQL Database de la variable de entorno agregada por Service Connector.
using Microsoft.Data.SqlClient;
string connectionString =
Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING")!;
using var connection = new SqlConnection(connectionString);
connection.Open();
Agregue las siguientes dependencias al archivo pom.xml:
Configure la aplicación Spring. Las configuraciones de conexión se agregan a Spring Apps mediante el conector de servicio.
Instale las dependencias.
python -m pip install pyodbc
Obtenga las configuraciones de conexión de Azure SQL Database de la variable de entorno agregada por Service Connector.
import os;
import pyodbc
server = os.getenv('AZURE_SQL_SERVER')
port = os.getenv('AZURE_SQL_PORT')
database = os.getenv('AZURE_SQL_DATABASE')
user = os.getenv('AZURE_SQL_USER')
password = os.getenv('AZURE_SQL_PASSWORD')
connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server={server},{port};Database={database};UID={user};PWD={password};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30'
conn = pyodbc.connect(connString)
Instale las dependencias.
pip install django
pip install pyodbc
En el archivo de configuración, obtenga las configuraciones de conexión de Azure SQL Database de la variable de entorno agregada por el conector de servicio.
# in your setting file, eg. settings.py
server = os.getenv('AZURE_SQL_HOST')
port = os.getenv('AZURE_SQL_PORT')
database = os.getenv('AZURE_SQL_NAME')
user = os.getenv('AZURE_SQL_USER')
password = os.getenv('AZURE_SQL_PASSWORD')
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': databse,
'USER': user,
'PASSWORD': password,
'HOST': server,
'PORT': port,
'OPTIONS': {
'driver': 'ODBC Driver 13 for SQL Server',
},
},
}
Instalación de la dependencia
go install github.com/microsoft/go-mssqldb@latest
Obtenga la cadena de conexión de Azure SQL Database de la variable de entorno agregada por Service Connector.
En el caso de otros lenguajes, use las propiedades de conexión que establece el conector de servicio en las variables de entorno para conectar la base de datos. Para obtener detalles sobre las variables de entorno, consulte Integración de Azure SQL Database con el conector de servicio.
Data Source=<sql-server>.database.windows.net,1433;Initial Catalog=<sql-database>;User ID=<client-Id>;Password=<client-secret>;Authentication=ActiveDirectoryServicePrincipal
Obtenga la cadena de conexión de Azure SQL Database de la variable de entorno agregada por Service Connector.
using Microsoft.Data.SqlClient;
string connectionString =
Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING")!;
using var connection = new SqlConnection(connectionString);
connection.Open();
Obtenga la cadena de conexión de Azure SQL Database de la variable de entorno agregada por Service Connector.
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import com.microsoft.sqlserver.jdbc.SQLServerDataSource;
public class Main {
public static void main(String[] args) {
// AZURE_SQL_CONNECTIONSTRING should be one of the following:
// For system-assigned managed identity: "jdbc:sqlserver://{SQLName}.database.windows.net:1433;databaseName={SQLDbName};authentication=ActiveDirectoryMSI;"
// For user-assigned managed identity: "jdbc:sqlserver://{SQLName}.database.windows.net:1433;databaseName={SQLDbName};msiClientId={UserAssignedMiClientId};authentication=ActiveDirectoryMSI;"
// For service principal: "jdbc:sqlserver://{SQLName}.database.windows.net:1433;databaseName={SQLDbName};user={ServicePrincipalClientId};password={spSecret};authentication=ActiveDirectoryServicePrincipal;"
String connectionString = System.getenv("AZURE_SQL_CONNECTIONSTRING");
SQLServerDataSource ds = new SQLServerDataSource();
ds.setURL(connectionString);
try (Connection connection = ds.getConnection()) {
System.out.println("Connected successfully.");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Para una aplicación de Spring, si crea una conexión con la opción --client-type springboot, Service Connector establece las propiedades spring.datasource.url con formato de valor jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-db>;authentication=ActiveDirectoryMSI; a Azure Spring Apps.
Obtenga las configuraciones de conexión de Azure SQL Database de la variable de entorno agregada por Service Connector. 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. Si usa Azure Container Apps como servicio de proceso o la cadena de conexión del fragmento de código no funciona, consulte Migración de una aplicación de Python para usar conexiones sin contraseña con Azure SQL Database para conectarse a Azure SQL Database mediante un token de acceso.
import os
import pyodbc
server = os.getenv('AZURE_SQL_SERVER')
port = os.getenv('AZURE_SQL_PORT')
database = os.getenv('AZURE_SQL_DATABASE')
authentication = os.getenv('AZURE_SQL_AUTHENTICATION')
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned managed identity.
# connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server=tcp:{server},{port};Database={database};Authentication={authentication};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30'
# For user-assigned managed identity.
# clientID = os.getenv('AZURE_SQL_USER')
# connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server=tcp:{server},{port};Database={database};UID={clientID};Authentication={authentication};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30'
# For service principal.
# user = os.getenv('AZURE_SQL_USER')
# password = os.getenv('AZURE_SQL_PASSWORD')
# connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server=tcp:{server},{port};Database={database};UID={user};PWD={password};Authentication={authentication};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30'
conn = pyodbc.connect(connString)
Instale las dependencias.
npm install mssql
Obtenga las configuraciones de conexión de Azure SQL Database de las variables de entorno agregadas por Service Connector. 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.
En el caso de otros lenguajes, use las propiedades de conexión que establece el conector de servicio en las variables de entorno para conectar la base de datos. Para obtener detalles sobre las variables de entorno, consulte Integración de Azure SQL Database con el conector de servicio.