В этой статье рассматриваются поддерживаемые методы проверки подлинности, клиенты и пример кода, которые можно использовать для подключения приложений к базе данных SQL Azure с помощью соединителя службы. В этой статье также вы найдете имена переменных среды по умолчанию, значения и конфигурацию, полученные при создании подключений к службе.
Поддерживаемые службы вычислений
Соединитель служб можно использовать для подключения следующих вычислительных служб к База данных SQL Azure:
- Служба приложений Azure
- Приложения-контейнеры Azure
- Функции Azure
- Служба Azure Kubernetes (AKS)
- Azure Spring Apps
Поддерживаемые типы проверки подлинности и клиенты
В таблице ниже показано, какие сочетания методов проверки подлинности и клиентов поддерживаются для подключения вычислительной службы к База данных SQL Azure с помощью соединителя служб. Значение "Да" указывает, что сочетание поддерживается, а значение "Нет" указывает, что оно не поддерживается.
Тип клиента |
Управляемое удостоверение, назначаемое системой |
Управляемое удостоверение, назначаемое пользователем |
Секрет/строка подключения |
Субъект-служба |
.NET |
Да |
Да |
Да |
Да |
Go |
Нет |
Нет |
Да |
Нет |
Java |
Да |
Да |
Да |
Да |
Java — Spring Boot |
Да |
Да |
Да |
Да |
Node.js |
Да |
Да |
Да |
Да |
PHP |
No |
Нет |
Да |
No |
Python |
Да |
Да |
Да |
Да |
Python — Django |
Нет |
Нет |
Да |
Нет |
Ruby |
Нет |
No |
Да |
No |
нет |
Да |
Да |
Да |
Да |
Примечание.
Назначаемое системой управляемое удостоверение, назначаемое пользователем, и проверка подлинности субъекта-службы поддерживается только в Azure CLI.
Имена переменных среды по умолчанию или свойства приложения и пример кода
Используйте приведенные ниже сведения о подключении для подключения вычислительных служб к База данных SQL Azure. Для каждого из приведенных ниже примеров замените заполнители <sql-server>
, <sql-database>
, <sql-username>
и <sql-password>
собственным именем сервера, именем базы данных, идентификатором пользователя и паролем. Дополнительные сведения о соглашениях об именовании см. во внутренней статье соединителя служб.
Назначаемое системой управляемое удостоверение
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_CONNECTIONSTRING |
Строка подключения к базе данных Azure SQL |
Data Source=<sql-server>.database.windows.net,1433;Initial Catalog=<sql-database>;Authentication=ActiveDirectoryManagedIdentity |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_CONNECTIONSTRING |
Строка подключения к базе данных Azure SQL |
jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-database>;authentication=ActiveDirectoryMSI; |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
spring.datasource.url |
URL-адрес источника данных База данных SQL Azure |
jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-db>;authentication=ActiveDirectoryMSI; |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_SERVER |
сервер Базы данных SQL Azure; |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
порт базы данных Azure SQL |
1433 |
AZURE_SQL_DATABASE |
База данных Azure SQL |
<sql-database> |
AZURE_SQL_AUTHENTICATION |
Аутентификация в Azure SQL |
ActiveDirectoryMsi |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_SERVER |
сервер Базы данных SQL Azure; |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
порт базы данных Microsoft Azure SQL |
1433 |
AZURE_SQL_DATABASE |
база данных SQL Azure |
<sql-database> |
AZURE_SQL_AUTHENTICATIONTYPE |
тип проверки подлинности База данных SQL Azure |
azure-active-directory-default |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_HOST |
сервер Базы данных SQL Azure; |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
порт базы данных Azure SQL |
1433 |
AZURE_SQL_DATABASE |
База данных SQL Azure |
<sql-database> |
AZURE_SQL_AUTHENTICATION |
тип проверки подлинности в базе данных Azure SQL |
azure-active-directory-default |
Пример кода
Ознакомьтесь с инструкциями и кодом ниже, чтобы подключиться к База данных SQL Azure с помощью управляемого удостоверения, назначаемого системой.
Установите зависимости.
dotnet add package Microsoft.Data.SqlClient
Получите строку подключения базы данных Azure SQL из переменной окружения, добавленной соединителем службы.
using Microsoft.Data.SqlClient;
string connectionString =
Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING")!;
using var connection = new SqlConnection(connectionString);
connection.Open();
Для получения дополнительной информации см. Использование проверки подлинности управляемого удостоверения Active Directory.
Добавьте следующие зависимости в файл pom.xml :
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>10.2.0.jre11</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.7.0</version>
</dependency>
Получите строку подключения к базе данных Azure SQL из переменной окружения, добавленной сервисным коннектором.
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();
}
}
}
Дополнительные сведения см. в статье «Подключение к базам данных Azure из службы приложений без использования секретов с помощью управляемого удостоверения».
Если вы создаете подключение с параметром --client-type springboot
, соединитель служб задает свойства spring.datasource.url
с форматом значений jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-db>;authentication=ActiveDirectoryMSI;
в Azure Spring Apps.
Обновите приложение, следуя руководству по переносу приложения Java для использования подключений без пароля с Azure SQL Database. Не забудьте удалить spring.datasource.password
свойство конфигурации, если оно было задано ранее и добавить правильные зависимости.
Установите зависимости.
python -m pip install pyodbc
Получите конфигурации подключения Azure SQL Database из переменной среды, добавленной средством подключения службы. При использовании приведенного ниже кода раскомментируйте часть фрагмента кода для типа проверки подлинности, который вы хотите использовать. Если вы используете приложения контейнеров Azure в качестве вычислительной службы или строка подключения в фрагменте кода не работает, обратитесь к статье "Миграция приложения Python для использования подключений без пароля с базой данных SQL Azure" для подключения к базе данных SQL Azure с помощью токена доступа.
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)
- Установите зависимости.
npm install mssql
- Получите конфигурации подключения База данных SQL Azure из переменных среды, добавленных соединителем службы. При использовании приведенного ниже кода раскомментируйте часть фрагмента кода для типа проверки подлинности, который вы хотите использовать.
import sql from 'mssql';
const server = process.env.AZURE_SQL_SERVER;
const database = process.env.AZURE_SQL_DATABASE;
const port = parseInt(process.env.AZURE_SQL_PORT);
const authenticationType = process.env.AZURE_SQL_AUTHENTICATIONTYPE;
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned managed identity.
// const config = {
// server,
// port,
// database,
// authentication: {
// type: authenticationType
// },
// options: {
// encrypt: true
// }
// };
// For user-assigned managed identity.
// const clientId = process.env.AZURE_SQL_CLIENTID;
// const config = {
// server,
// port,
// database,
// authentication: {
// type: authenticationType
// },
// options: {
// encrypt: true,
// clientId: clientId
// }
// };
// For service principal.
// const clientId = process.env.AZURE_SQL_CLIENTID;
// const clientSecret = process.env.AZURE_SQL_CLIENTSECRET;
// const tenantId = process.env.AZURE_SQL_TENANTID;
// const config = {
// server,
// port,
// database,
// authentication: {
// type: authenticationType
// },
// options: {
// encrypt: true,
// clientId: clientId,
// clientSecret: clientSecret,
// tenantId: tenantId
// }
// };
this.poolconnection = await sql.connect(config);
Дополнительные сведения см. на домашней странице клиентского программирования для Microsoft SQL Server.
Пользовательская управляемая идентичность
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_CONNECTIONSTRING |
Строка подключения к базе данных Azure SQL |
Data Source=<sql-server>.database.windows.net,1433;Initial Catalog=<sql-database>;User ID=<identity-client-ID>;Authentication=ActiveDirectoryManagedIdentity |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_CONNECTIONSTRING |
Строка подключения для базы данных Azure SQL |
jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-database>;msiClientId=<msiClientId>;authentication=ActiveDirectoryMSI; |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
spring.datasource.url |
URL-адрес источника данных База данных SQL Azure |
jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-db>;msiClientId=<msiClientId>;authentication=ActiveDirectoryMSI; |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_SERVER |
сервер Базы данных SQL Azure; |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
порт базы данных SQL Azure |
1433 |
AZURE_SQL_DATABASE |
база данных SQL Azure |
<sql-database> |
AZURE_SQL_USER |
пользователь База данных SQL Azure |
Object (principal) ID |
AZURE_SQL_AUTHENTICATION |
Аутентификация Azure SQL |
ActiveDirectoryMsi |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_SERVER |
сервер Базы данных SQL Azure; |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
порт SQL-базы данных Azure |
1433 |
AZURE_SQL_DATABASE |
База данных Azure SQL Database |
<sql-database> |
AZURE_SQL_AUTHENTICATIONTYPE |
Тип проверки подлинности для базы данных Azure SQL |
azure-active-directory-default |
AZURE_SQL_CLIENTID |
идентификатор клиента База данных SQL Azure |
<identity-client-ID> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_HOST |
сервер Базы данных SQL Azure; |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
порт базы данных SQL Azure |
1433 |
AZURE_SQL_DATABASE |
база данных SQL Azure |
<sql-database> |
AZURE_SQL_AUTHENTICATION |
тип проверки подлинности Azure SQL Database |
azure-active-directory-default |
AZURE_SQL_USERNAME |
идентификатор клиента База данных SQL Azure |
<your Client ID> |
Пример кода
Ознакомьтесь с инструкциями и кодом ниже, чтобы подключиться к базе данных Azure SQL с помощью управляемого удостоверения, назначенного пользователем.
Установите зависимости.
dotnet add package Microsoft.Data.SqlClient
Получите строку подключения к базе данных SQL Azure из переменной среды, добавленной соединителем службы.
using Microsoft.Data.SqlClient;
string connectionString =
Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING")!;
using var connection = new SqlConnection(connectionString);
connection.Open();
Дополнительные сведения см. в разделе "Использование проверки подлинности управляемого удостоверения в Active Directory".
Добавьте следующие зависимости в файл pom.xml :
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>10.2.0.jre11</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.7.0</version>
</dependency>
Получите строку подключения для базы данных Azure SQL из переменной среды, добавленной сервисным коннектором.
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();
}
}
}
Дополнительные сведения см. в статье Подключение к базам данных Azure из Службы приложений без секретов с помощью управляемого удостоверения.
Для Spring-приложения, если вы создаете подключение с параметром --client-type springboot
, Service Connector задает свойства spring.datasource.url
со значением в формате jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-db>;authentication=ActiveDirectoryMSI;
для Azure Spring Apps.
Обновите ваше приложение согласно руководству Перенос приложения Java для использования подключений без пароля с использованием базы данных Azure SQL. Не забудьте удалить spring.datasource.password
свойство конфигурации, если оно было задано ранее и добавить правильные зависимости.
Установите зависимости.
python -m pip install pyodbc
Получите конфигурации подключения к базе данных Azure SQL из переменной среды, добавленной соединителем службы. При использовании приведенного ниже кода раскомментируйте часть фрагмента кода, относящуюся к типу аутентификации, который вы хотите использовать. Если вы используете Azure Container Apps в качестве вычислительной службы или строка подключения в фрагменте кода не работает, см. статью «Миграция приложения Python для использования подключений без пароля с Azure SQL Database» для подключения к Azure SQL Database с помощью маркера доступа.
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)
- Установите зависимости.
npm install mssql
- Получите конфигурации подключения Azure SQL Database из переменных среды, добавленных соединителем службы. При использовании приведенного ниже кода раскомментируйте часть кода с типом проверки подлинности, который вы хотите использовать.
import sql from 'mssql';
const server = process.env.AZURE_SQL_SERVER;
const database = process.env.AZURE_SQL_DATABASE;
const port = parseInt(process.env.AZURE_SQL_PORT);
const authenticationType = process.env.AZURE_SQL_AUTHENTICATIONTYPE;
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned managed identity.
// const config = {
// server,
// port,
// database,
// authentication: {
// type: authenticationType
// },
// options: {
// encrypt: true
// }
// };
// For user-assigned managed identity.
// const clientId = process.env.AZURE_SQL_CLIENTID;
// const config = {
// server,
// port,
// database,
// authentication: {
// type: authenticationType
// },
// options: {
// encrypt: true,
// clientId: clientId
// }
// };
// For service principal.
// const clientId = process.env.AZURE_SQL_CLIENTID;
// const clientSecret = process.env.AZURE_SQL_CLIENTSECRET;
// const tenantId = process.env.AZURE_SQL_TENANTID;
// const config = {
// server,
// port,
// database,
// authentication: {
// type: authenticationType
// },
// options: {
// encrypt: true,
// clientId: clientId,
// clientSecret: clientSecret,
// tenantId: tenantId
// }
// };
this.poolconnection = await sql.connect(config);
Дополнительные сведения см. на домашней странице клиентского программирования для Microsoft SQL Server.
строка подключения
Предупреждение
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Поток проверки подлинности, описанный в этой процедуре, требует очень высокого уровня доверия к приложению и несет риски, которые отсутствуют в других потоках. Этот поток следует использовать только в том случае, если другие более безопасные потоки, такие как управляемые удостоверения, невозможны.
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_CONNECTIONSTRING |
Строка подключения Azure SQL Database |
Data Source=<sql-server>.database.windows.net,1433;Initial Catalog=<sql-database>;Password=<sql-password> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_CONNECTIONSTRING |
Строка подключения базы данных Azure SQL |
jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-database>;user=<sql-username>;password=<sql-password>; |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
spring.datasource.url |
URL-адрес источника данных База данных SQL Azure |
jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-db>; |
spring.datasource.username |
имя пользователя источника данных База данных SQL Azure |
<sql-user> |
spring.datasource.password |
пароль для источника данных базы данных Azure SQL |
<sql-password> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_SERVER |
сервер Базы данных SQL Azure; |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
порт базы данных Azure SQL |
1433 |
AZURE_SQL_DATABASE |
база данных Azure SQL |
<sql-database> |
AZURE_SQL_USER |
пользователь База данных SQL Azure |
<sql-username> |
AZURE_SQL_PASSWORD |
пароль базы данных Azure SQL |
<sql-password> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_HOST |
Хост SQL Azure Database |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
порт базы данных Azure SQL |
1433 |
AZURE_SQL_NAME |
имя базы данных Azure SQL |
<sql-database> |
AZURE_SQL_USER |
пользователь База данных SQL Azure |
<sql-username> |
AZURE_SQL_PASSWORD |
пароль для базы данных SQL Azure |
<sql-password> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_CONNECTIONSTRING |
Строка подключения к базе данных Azure SQL |
server=<sql-server>.database.windows.net;port=1433;database=<sql-database>;user id=<sql-username>;password=<sql-password>; |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_SERVER |
сервер Базы данных SQL Azure; |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
порт базы данных Azure SQL |
1433 |
AZURE_SQL_DATABASE |
база данных SQL Azure |
<sql-database> |
AZURE_SQL_USERNAME |
имя пользователя для базы данных SQL Azure |
<sql-username> |
AZURE_SQL_PASSWORD |
пароль для Azure SQL Database |
<sql-password> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_SERVERNAME |
имя сервера База данных SQL Azure |
<sql-server>.database.windows.net,1433 |
AZURE_SQL_DATABASE |
база данных Azure SQL Database |
<sql-database> |
AZURE_SQL_UID |
уникальный идентификатор Azure SQL Database (UID) |
<sql-username> |
AZURE_SQL_PASSWORD |
пароль для Azure SQL Database |
<sql-password> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_HOST |
хост SQL Azure Database |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
порт базы данных SQL Azure |
1433 |
AZURE_SQL_DATABASE |
база данных SQL Azure |
<sql-database> |
AZURE_SQL_USERNAME |
имя пользователя Azure SQL Database |
<sql-username> |
AZURE_SQL_PASSWORD |
пароль для базы данных SQL Azure |
<sql-password> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_HOST |
хост базы данных SQL Azure |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
порт базы данных Azure SQL |
1433 |
AZURE_SQL_DATABASE |
база данных SQL Azure |
<sql-database> |
AZURE_SQL_USERNAME |
имя пользователя Azure SQL Database |
<sql-username> |
AZURE_SQL_PASSWORD |
пароль для базы данных Azure SQL |
<sql-password> |
Пример кода
Чтобы подключиться к База данных SQL Azure с помощью строка подключения, ознакомьтесь с приведенными ниже инструкциями и кодом.
Установите зависимости.
dotnet add package Microsoft.Data.SqlClient
Получите строку подключения к базе данных Azure SQL из переменной среды, добавленной соединителем службы.
using Microsoft.Data.SqlClient;
string connectionString =
Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING")!;
using var connection = new SqlConnection(connectionString);
connection.Open();
Добавьте следующие зависимости в файл pom.xml :
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>10.2.0.jre11</version>
</dependency>
Получите строку подключения для SQL базы данных Azure из переменной среды, добавленной 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) {
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();
}
}
}
- Добавьте зависимость в файл pom.xml:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-dependencies</artifactId>
<version>5.20.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
- Настройте приложение Spring. Конфигурации подключения добавляются в Spring Apps посредством Коннектора службы.
Установите зависимости.
python -m pip install pyodbc
Получите параметры подключения Azure SQL Database из переменной среды, добавленной 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)
Установите зависимости.
pip install django
pip install pyodbc
В файле параметров получите конфигурации подключения базы данных Azure SQL из переменной среды, добавленной Service Connector.
# 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': database,
'USER': user,
'PASSWORD': password,
'HOST': server,
'PORT': port,
'OPTIONS': {
'driver': 'ODBC Driver 13 for SQL Server',
},
},
}
Установите зависимость.
go install github.com/microsoft/go-mssqldb@latest
Получите строку подключения для Azure SQL базы данных из переменной окружения, добавленной соединителем службы.
import (
"context"
"database/sql"
"fmt"
"log"
"github.com/microsoft/go-mssqldb/azuread"
)
connectionString := os.Getenv("AZURE_SQL_CONNECTIONSTRING")
db, err = sql.Open(azuread.DriverName, connString)
if err != nil {
log.Fatal("Error creating connection pool: " + err.Error())
}
log.Printf("Connected!\n")
- Установите зависимости.
npm install mssql
- Получите конфигурации подключения базы данных Azure SQL из переменных среды, добавленных Коннектором служб.
import sql from 'mssql';
const server = process.env.AZURE_SQL_SERVER;
const database = process.env.AZURE_SQL_DATABASE;
const port = parseInt(process.env.AZURE_SQL_PORT);
const username = process.env.AZURE_SQL_USERNAME;
const password = process.env.AZURE_SQL_PASSWORD;
const config = {
server,
port,
database,
user,
password,
options: {
encrypt: true
}
};
this.poolconnection = await sql.connect(config);
Скачайте драйверы Майкрософт для PHP для SQL Server. Дополнительные сведения см. в описании "Начало работы с драйверами Майкрософт для PHP для SQL Server".
Получите конфигурации подключения Azure SQL Database из переменных среды, добавленных служебным соединителем.
<?php
$server = getenv("AZURE_SQL_SERVERNAME");
$database = getenv("AZURE_SQL_DATABASE");
$user = getenv("AZURE_SQL_UID");
$password = getenv("AZURE_SQL_PASSWORD");
$connectionOptions = array(
"Database" => database,
"Uid" => user,
"PWD" => password
);
$conn = sqlsrv_connect($serverName, $connectionOptions);
?>
Скачайте Ruby Driver для SQL Server. Дополнительные сведения см. в описании настройки среды разработки для разработки Ruby.
Получите конфигурации подключения к базе данных Azure SQL из переменных среды, добавленных Service Connector.
client = TinyTds::Client.new username: ENV['AZURE_SQL_USERNAME'], password: ENV['AZURE_SQL_PASSWORD'],
host: ENV['AZURE_SQL_HOST'], port: ENV['AZURE_SQL_PORT'],
database: ENV['AZURE_SQL_DATABASE'], azure:true
Для получения дополнительной информации смотрите на домашней странице клиентского программирования Microsoft SQL Server.
Субъект-служба
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_CLIENTID |
Идентификатор клиента |
<client-ID> |
AZURE_SQL_CLIENTSECRET |
Секрет клиента |
<client-secret> |
AZURE_SQL_TENANTID |
Идентификатор клиента |
<tenant-ID> |
AZURE_SQL_CONNECTIONSTRING |
строка подключения к базе данных Azure SQL |
Data Source=<sql-server>.database.windows.net,1433;Initial Catalog=<sql-database>;User ID=<client-Id>;Password=<client-secret>;Authentication=ActiveDirectoryServicePrincipal |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_CONNECTIONSTRING |
Строка подключения базы данных SQL Azure |
jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-database>;user=<client-Id>;password=<client-secret>;authentication=ActiveDirectoryServicePrincipal; |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
spring.datasource.url |
URL-адрес источника данных База данных SQL Azure |
jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-db>;authentication=ActiveDirectoryServicePrincipal; |
spring.datasource.username |
имя пользователя источника данных База данных SQL Azure |
<client-Id> |
spring.datasource.password |
пароль для источника данных в базе данных Azure SQL |
<client-Secret> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_SERVER |
сервер Базы данных SQL Azure; |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
порт базы данных Azure SQL |
1433 |
AZURE_SQL_DATABASE |
база данных SQL Azure |
<sql-database> |
AZURE_SQL_USER |
пользователь База данных SQL Azure |
your Client Id |
AZURE_SQL_AUTHENTICATION |
Аутентификация в Azure SQL |
ActiveDirectoryServerPrincipal |
AZURE_SQL_PASSWORD |
пароль для Azure SQL Database |
your Client Secret |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_SERVER |
сервер Базы данных SQL Azure; |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
Порт базы данных Azure SQL |
1433 |
AZURE_SQL_DATABASE |
база данных SQL Azure |
<sql-database> |
AZURE_SQL_AUTHENTICATIONTYPE |
тип проверки подлинности для Azure SQL Database |
azure-active-directory-default |
AZURE_SQL_CLIENTID |
идентификатор клиента База данных SQL Azure |
<your Client ID> |
AZURE_SQL_CLIENTSECRET |
секрет клиента База данных SQL Azure |
<your Client Secret > |
AZURE_SQL_TENANTID |
идентификатор арендатора базы данных SQL Azure |
<your Tenant ID> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_SQL_HOST |
сервер Базы данных SQL Azure; |
<sql-server>.database.windows.net |
AZURE_SQL_PORT |
порт базы данных SQL Azure |
1433 |
AZURE_SQL_DATABASE |
База данных Azure SQL Database |
<sql-database> |
AZURE_SQL_AUTHENTICATION |
Тип проверки подлинности для базы данных Azure SQL |
azure-active-directory-default |
AZURE_SQL_USERNAME |
идентификатор клиента База данных SQL Azure |
<your Client ID> |
AZURE_SQL_PASSWORD |
секрет клиента База данных SQL Azure |
<your Client Secret > |
Пример кода
Ознакомьтесь с инструкциями и кодом ниже, чтобы подключиться к базе данных Azure SQL с помощью служебного принципала.
Установите зависимости.
dotnet add package Microsoft.Data.SqlClient
Получите строку подключения для SQL базы данных Azure из переменной среды, добавленной Service Connector.
using Microsoft.Data.SqlClient;
string connectionString =
Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING")!;
using var connection = new SqlConnection(connectionString);
connection.Open();
Дополнительные сведения см. в разделе «Использование аутентификации управляемой идентификации Active Directory».
Добавьте следующие зависимости в файл pom.xml :
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>10.2.0.jre11</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.7.0</version>
</dependency>
Получите строку подключения к базе данных Azure SQL из переменной среды, добавленной модулем 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();
}
}
}
Дополнительные сведения см. в статье «Подключение к базам данных Azure из службы приложений с использованием управляемого удостоверения без секретов».
Для приложения Spring, если вы создаете подключение с параметром --client-type springboot
, соединитель служб задает свойства spring.datasource.url
в формате значений jdbc:sqlserver://<sql-server>.database.windows.net:1433;databaseName=<sql-db>;authentication=ActiveDirectoryMSI;
для Azure Spring Apps.
Обновите приложение, следуя руководству по переносу приложения Java для использования подключений без пароля с базой данных Azure SQL. Не забудьте удалить spring.datasource.password
свойство конфигурации, если оно было задано ранее и добавить правильные зависимости.
Установите зависимости.
python -m pip install pyodbc
Получите конфигурации подключения к базе данных Azure SQL из переменной среды, добавленной Service Connector. Когда вы будете использовать приведённый ниже код, раскомментируйте ту часть фрагмента, которая соответствует типу аутентификации, который вы хотите использовать. Если вы используете Azure Container Apps в качестве сервиса вычислений или строка подключения в фрагменте кода не работает, обратитесь к статье "Миграция приложения по Python для использования подключений без пароля с базой данных Azure SQL" для подключения к базе данных Azure SQL с помощью токена доступа."
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)
- Установите зависимости.
npm install mssql
- Из переменных среды, добавленных Service Connector, получите параметры подключения Azure SQL Database. При использовании приведенного ниже кода раскомментируйте часть фрагмента кода для выбранного типа проверки подлинности, который вы хотите использовать.
import sql from 'mssql';
const server = process.env.AZURE_SQL_SERVER;
const database = process.env.AZURE_SQL_DATABASE;
const port = parseInt(process.env.AZURE_SQL_PORT);
const authenticationType = process.env.AZURE_SQL_AUTHENTICATIONTYPE;
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned managed identity.
// const config = {
// server,
// port,
// database,
// authentication: {
// type: authenticationType
// },
// options: {
// encrypt: true
// }
// };
// For user-assigned managed identity.
// const clientId = process.env.AZURE_SQL_CLIENTID;
// const config = {
// server,
// port,
// database,
// authentication: {
// type: authenticationType
// },
// options: {
// encrypt: true,
// clientId: clientId
// }
// };
// For service principal.
// const clientId = process.env.AZURE_SQL_CLIENTID;
// const clientSecret = process.env.AZURE_SQL_CLIENTSECRET;
// const tenantId = process.env.AZURE_SQL_TENANTID;
// const config = {
// server,
// port,
// database,
// authentication: {
// type: authenticationType
// },
// options: {
// encrypt: true,
// clientId: clientId,
// clientSecret: clientSecret,
// tenantId: tenantId
// }
// };
this.poolconnection = await sql.connect(config);
Дополнительные сведения см. на домашнюю страницу клиентского программирования для Microsoft SQL Server.
Следующие шаги
Следуйте инструкциям, приведенным ниже, чтобы узнать больше о Service Connector.