Ez a cikk a támogatott hitelesítési módszereket, ügyfeleket és mintakódot ismerteti, amelyek segítségével az alkalmazásokat a Service Connector használatával csatlakoztathatja az Azure Database for PostgreSQL-hez. Ebben a cikkben a szolgáltatáskapcsolatok létrehozásakor kapott alapértelmezett környezeti változóneveket, értékeket és konfigurációt is megtalálja.
Támogatott számítási szolgáltatások
A Service Connector segítségével a következő számítási szolgáltatásokat csatlakoztathatja az Azure Database for PostgreSQL-hez:
- Azure App Service
- Azure Container Apps
- Azure Functions
- Azure Kubernetes Service (AKS)
- Azure Spring Apps
Támogatott hitelesítési típusok és ügyféltípusok
Az alábbi táblázat azt mutatja be, hogy a hitelesítési módszerek és az ügyfelek mely kombinációi támogatottak a számítási szolgáltatásokNak az Azure Database for PostgreSQL-hez a Service Connector használatával való csatlakoztatásához. Az "Igen" azt jelzi, hogy a kombináció támogatott, míg a "Nem" azt jelzi, hogy nem támogatott.
| Ügyfél típusa |
Rendszer által hozzárendelt felügyelt identitás |
Felhasználó által hozzárendelt felügyelt identitás |
Titkos kód/kapcsolati sztring |
Szolgáltatásnév |
| .NET |
Igen |
Igen |
Igen |
Igen |
| Ugrás (pg) |
Igen |
Igen |
Igen |
Igen |
| Java (JDBC) |
Igen |
Igen |
Igen |
Igen |
| Java – Spring Boot (JDBC) |
Igen |
Igen |
Igen |
Igen |
| Node.js (oldal) |
Igen |
Igen |
Igen |
Igen |
| PHP (natív) |
Igen |
Igen |
Igen |
Igen |
| Python (psycopg2) |
Igen |
Igen |
Igen |
Igen |
| Python-Django |
Igen |
Igen |
Igen |
Igen |
| Rubin (rubin-pg) |
Igen |
Igen |
Igen |
Igen |
| Egyik sem |
Igen |
Igen |
Igen |
Igen |
Feljegyzés
A rendszer által hozzárendelt felügyelt identitás, a felhasználó által hozzárendelt felügyelt identitás és a szolgáltatásnév csak az Azure CLI-n támogatott.
Alapértelmezett környezeti változónevek vagy alkalmazástulajdonságok és mintakód
A kapcsolat részleteire és a mintakódra az alábbi táblázatokban hivatkozhat a kapcsolat hitelesítési típusának és ügyféltípusának megfelelően. Az elnevezési konvenciókról a Service Connector belsős cikkében talál további információt.
Rendszer által hozzárendelt felügyelt identitás
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CONNECTIONSTRING |
.NET PostgreSQL kapcsolati sztring |
Server=<PostgreSQL-server-name>.postgres.database.azure.com;Database=<database-name>;Port=5432;Ssl Mode=Require;User Id=<username>; |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CONNECTIONSTRING |
JDBC PostgreSQL kapcsolati sztring |
jdbc:postgresql://<PostgreSQL-server-name>.postgres.database.azure.com:5432/<database-name>?sslmode=require&user=<username> |
| Az alkalmazás tulajdonságai |
Leírás |
Példaérték |
spring.datasource.azure.passwordless-enabled |
Jelszó nélküli hitelesítés engedélyezése |
true |
spring.datasource.url |
Adatbázis URL-címe |
jdbc:postgresql://<PostgreSQL-server-name>.postgres.database.azure.com:5432/<database-name>?sslmode=require |
spring.datasource.username |
Adatbázis felhasználóneve |
username |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CONNECTIONSTRING |
psycopg2 kapcsolati sztring |
dbname=<database-name> host=<PostgreSQL-server-name>.postgres.database.azure.com port=5432 sslmode=require user=<username> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_NAME |
Adatbázis neve |
<database-name> |
AZURE_POSTGRESQL_HOST |
Adatbázis-gazdagép URL-címe |
<PostgreSQL-server-name>.postgres.database.azure.com |
AZURE_POSTGRESQL_USER |
Adatbázis felhasználóneve |
<username> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CONNECTIONSTRING |
Go PostgreSQL kapcsolati sztring |
host=<PostgreSQL-server-name>.postgres.database.azure.com dbname=<database-name> sslmode=require user=<username> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_HOST |
Adatbázis-gazdagép URL-címe |
<PostgreSQL-server-name>.postgres.database.azure.com |
AZURE_POSTGRESQL_USER |
Adatbázis felhasználóneve |
<username> |
AZURE_POSTGRESQL_DATABASE |
Adatbázis neve |
<database-name> |
AZURE_POSTGRESQL_PORT |
Portszám |
5432 |
AZURE_POSTGRESQL_SSL |
SSL-beállítás |
true |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CONNECTIONSTRING |
PHP natív PostgreSQL-kapcsolati sztring |
host=<PostgreSQL-server-name>.postgres.database.azure.com port=5432 dbname=<database-name> sslmode=require user=<username> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CONNECTIONSTRING |
Ruby PostgreSQL kapcsolati sztring |
host=<your-postgres-server-name>.postgres.database.azure.com port=5432 dbname=<database-name> sslmode=require user=<username> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_HOST |
Adatbázis-gazdagép URL-címe |
<PostgreSQL-server-name>.postgres.database.azure.com |
AZURE_POSTGRESQL_USERNAME |
Adatbázis felhasználóneve |
<username> |
AZURE_POSTGRESQL_DATABASE |
Adatbázis neve |
<database-name> |
AZURE_POSTGRESQL_PORT |
Portszám |
5432 |
AZURE_POSTGRESQL_SSL |
SSL-beállítás |
true |
Mintakód
Az alábbi lépéseket és kódot követve csatlakozhat az Azure Database for PostgreSQL-hez egy rendszer által hozzárendelt felügyelt identitás használatával.
A .NET esetében nincs beépülő modul vagy tár a jelszó nélküli kapcsolatok támogatásához. A felügyelt identitáshoz vagy szolgáltatásnévhez hozzáférési jogkivonatot kérhet le az olyan ügyfélkódtárak használatával, mint az Azure.Identity. Ezután jelszóként használhatja a hozzáférési jogkivonatot az adatbázishoz való csatlakozáshoz. Az alábbi kód használatakor bontsa ki a kódrészlet azon részét, amely a használni kívánt hitelesítési típushoz tartozik.
using Azure.Identity;
using Azure.Core;
using Npgsql;
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned identity.
// var sqlServerTokenProvider = new DefaultAzureCredential();
// For user-assigned identity.
// var sqlServerTokenProvider = new DefaultAzureCredential(
// new DefaultAzureCredentialOptions
// {
// ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_POSTGRESQL_CLIENTID");
// }
// );
// For service principal.
// var tenantId = Environment.GetEnvironmentVariable("AZURE_POSTGRESQL_TENANTID");
// var clientId = Environment.GetEnvironmentVariable("AZURE_POSTGRESQL_CLIENTID");
// var clientSecret = Environment.GetEnvironmentVariable("AZURE_POSTGRESQL_CLIENTSECRET");
// var sqlServerTokenProvider = new ClientSecretCredential(tenantId, clientId, clientSecret);
// Acquire the access token.
AccessToken accessToken = await sqlServerTokenProvider.GetTokenAsync(
new TokenRequestContext(scopes: new string[]
{
"https://ossrdbms-aad.database.windows.net/.default"
}));
// Combine the token with the connection string from the environment variables provided by Service Connector.
string connectionString =
$"{Environment.GetEnvironmentVariable("AZURE_POSTGRESQL_CONNECTIONSTRING")};Password={accessToken.Token}";
// Establish the connection.
using (var connection = new NpgsqlConnection(connectionString))
{
Console.WriteLine("Opening connection using access token...");
connection.Open();
}
Adja hozzá a következő függőségeket a pom.xml fájlhoz:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.7.5</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity-extensions</artifactId>
<version>1.2.0</version>
</dependency>
Kérje le a kapcsolati sztring a környezeti változókból, és adja hozzá a beépülő modul nevét az adatbázishoz való csatlakozáshoz:
import java.sql.*;
String url = System.getenv("AZURE_POSTGRESQL_CONNECTIONSTRING");
String pluginName = "com.azure.identity.extensions.jdbc.postgresql.AzurePostgresqlAuthenticationPlugin";
Connection connection = DriverManager.getConnection(url + "&authenticationPluginClassName=" + pluginName);
További információt a következő források tartalmaznak:
Telepítse a függőségeket.
pip install azure-identity
pip install psycopg2-binary
pip freeze > requirements.txt # Save the dependencies to a file
Szerezze be a hozzáférési jogkivonatot a kódtár használatával azure-identity , és használja a jogkivonatot jelszóként. Kapcsolati adatok lekérése a Service Connector által hozzáadott környezeti változókból. Az alábbi kód használatakor bontsa ki a kódrészlet azon részét, amely a használni kívánt hitelesítési típushoz tartozik.
from azure.identity import DefaultAzureCredential
import psycopg2
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned identity.
# cred = DefaultAzureCredential()
# For user-assigned identity.
# managed_identity_client_id = os.getenv('AZURE_POSTGRESQL_CLIENTID')
# cred = ManagedIdentityCredential(client_id=managed_identity_client_id)
# For service principal.
# tenant_id = os.getenv('AZURE_POSTGRESQL_TENANTID')
# client_id = os.getenv('AZURE_POSTGRESQL_CLIENTID')
# client_secret = os.getenv('AZURE_POSTGRESQL_CLIENTSECRET')
# cred = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
# Acquire the access token
accessToken = cred.get_token('https://ossrdbms-aad.database.windows.net/.default')
# Combine the token with the connection string from the environment variables added by Service Connector to establish the connection.
conn_string = os.getenv('AZURE_POSTGRESQL_CONNECTIONSTRING')
conn = psycopg2.connect(conn_string + ' password=' + accessToken.token)
Telepítse a függőségeket.
pip install azure-identity
Hozzáférési jogkivonat lekérése kódtár használatával azure-identity a Service Connector által hozzáadott környezeti változók használatával. Az alábbi kód használatakor bontsa ki a kódrészlet azon részét, amely a használni kívánt hitelesítési típushoz tartozik.
from azure.identity import DefaultAzureCredential
import psycopg2
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned identity.
# credential = DefaultAzureCredential()
# For user-assigned identity.
# managed_identity_client_id = os.getenv('AZURE_POSTGRESQL_CLIENTID')
# cred = ManagedIdentityCredential(client_id=managed_identity_client_id)
# For service principal.
# tenant_id = os.getenv('AZURE_POSTGRESQL_TENANTID')
# client_id = os.getenv('AZURE_POSTGRESQL_CLIENTID')
# client_secret = os.getenv('AZURE_POSTGRESQL_CLIENTSECRET')
# cred = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
# Acquire the access token.
accessToken = cred.get_token('https://ossrdbms-aad.database.windows.net/.default')
A fájl beállításakor kérje le az Azure PostgreSQL-adatbázis adatait a Service Connector szolgáltatás által hozzáadott környezeti változókból. Az adatbázis eléréséhez használja accessToken az előző lépésben beszerzett adatokat.
# In your setting file, eg. settings.py
host = os.getenv('AZURE_POSTGRESQL_HOST')
user = os.getenv('AZURE_POSTGRESQL_USER')
password = accessToken.token # this is accessToken acquired from above step.
database = os.getenv('AZURE_POSTGRESQL_NAME')
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': database,
'USER': user,
'PASSWORD': password,
'HOST': host,
'PORT': '5432', # Port is 5432 by default
'OPTIONS': {'sslmode': 'require'},
}
}
Telepítse a függőségeket.
go get github.com/lib/pq
go get "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
go get "github.com/Azure/azure-sdk-for-go/sdk/azcore"
A kódban szerezze be a hozzáférési jogkivonatot, azidentitymajd jelszóként használja az Azure PostgreSQL-hez való csatlakozáshoz, valamint a Service Connector által megadott kapcsolati információkat. Az alábbi kód használatakor bontsa ki a kódrészlet azon részét, amely a használni kívánt hitelesítési típushoz tartozik.
import (
"database/sql"
"fmt"
"os"
"context"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
_ "github.com/lib/pq"
)
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned identity.
// cred, err := azidentity.NewDefaultAzureCredential(nil)
// For user-assigned identity.
// clientid := os.Getenv("AZURE_POSTGRESQL_CLIENTID")
// azidentity.ManagedIdentityCredentialOptions.ID := clientid
// options := &azidentity.ManagedIdentityCredentialOptions{ID: clientid}
// cred, err := azidentity.NewManagedIdentityCredential(options)
// For service principal.
// clientid := os.Getenv("AZURE_POSTGRESQL_CLIENTID")
// tenantid := os.Getenv("AZURE_POSTGRESQL_TENANTID")
// clientsecret := os.Getenv("AZURE_POSTGRESQL_CLIENTSECRET")
// cred, err := azidentity.NewClientSecretCredential(tenantid, clientid, clientsecret, &azidentity.ClientSecretCredentialOptions{})
if err != nil {
// error handling
}
// Acquire the access token
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
token, err := cred.GetToken(ctx, policy.TokenRequestOptions{
Scopes: []string("https://ossrdbms-aad.database.windows.net/.default"),
})
// Combine the token with the connection string from the environment variables added by Service Connector to establish the connection.
connectionString := os.Getenv("AZURE_POSTGRESQL_CONNECTIONSTRING") + " password=" + token.Token
conn, err := sql.Open("postgres", connectionString)
if err != nil {
panic(err)
}
conn.Close()
Telepítse a függőségeket.
npm install --save @azure/identity
npm install --save pg
Kódban kérje le a hozzáférési jogkivonatot a Service Connector szolgáltatás által hozzáadott környezeti változók és PostgreSQL-kapcsolati adatok használatával @azure/identity . Egyesítse őket a kapcsolat létrehozásához. Az alábbi kód használatakor bontsa ki a kódrészlet azon részét, amely a használni kívánt hitelesítési típushoz tartozik.
import { DefaultAzureCredential, ClientSecretCredential } from "@azure/identity";
import { Client } from 'pg';
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned identity.
// const credential = new DefaultAzureCredential();
// For user-assigned identity.
// const clientId = process.env.AZURE_POSTGRESQL_CLIENTID;
// const credential = new DefaultAzureCredential({
// managedIdentityClientId: clientId
// });
// For service principal.
// const tenantId = process.env.AZURE_POSTGRESQL_TENANTID;
// const clientId = process.env.AZURE_POSTGRESQL_CLIENTID;
// const clientSecret = process.env.AZURE_POSTGRESQL_CLIENTSECRET;
// const credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
// Acquire the access token.
var accessToken = await credential.getToken('https://ossrdbms-aad.database.windows.net/.default');
// Use the token and the connection information from the environment variables added by Service Connector to establish the connection.
(async () => {
const client = new Client({
host: process.env.AZURE_POSTGRESQL_HOST,
user: process.env.AZURE_POSTGRESQL_USER,
password: accesstoken.token,
database: process.env.AZURE_POSTGRESQL_DATABASE,
port: Number(process.env.AZURE_POSTGRESQL_PORT) ,
ssl: process.env.AZURE_POSTGRESQL_SSL
});
await client.connect();
await client.end();
})();
PHP esetén nincs beépülő modul vagy kódtár a jelszó nélküli kapcsolatokhoz. Lekérhet egy hozzáférési jogkivonatot a felügyelt identitáshoz vagy szolgáltatásnévhez, és jelszóként használhatja az adatbázishoz való csatlakozáshoz. A hozzáférési jogkivonat az Azure REST API-val szerezhető be.
Kódban kérje le a hozzáférési jogkivonatot a REST API-val a kedvenc kódtárával.
A felhasználó által hozzárendelt identitás és a rendszer által hozzárendelt identitás esetében az Azure App Service és az Azure Container Apps egy belsőleg elérhető REST-végpontot biztosít a felügyelt identitások jogkivonatainak lekéréséhez két környezeti változó definiálásával: IDENTITY_ENDPOINT és IDENTITY_HEADER. További információkért lásd a REST-végpontok hivatkozását.
A hozzáférési jogkivonat lekéréséhez http GET kérést kell küldenie az identitásvégponthoz, és a lekérdezéshez hasonlóan https://ossrdbms-aad.database.windows.net kell használniaresource. A felhasználó által hozzárendelt identitáshoz adja meg a Service Connector által a lekérdezésben hozzáadott környezeti változók ügyfél-azonosítóját is.
A szolgáltatásnév esetében tekintse meg az Azure AD szolgáltatás–szolgáltatás hozzáférési jogkivonat-kérését a hozzáférési jogkivonat megszerzésének részleteiért. A POST kérést a Service Connector által hozzáadott környezeti változókból állítsa be a szolgáltatásnév bérlőazonosítójával https://ossrdbms-aad.database.windows.net/.default , ügyfélazonosítójával és ügyféltitkával.
Kombinálja a hozzáférési jogkivonatot és a PostgreSQL kapcsolati sztringet a Service Connector szolgáltatás által hozzáadott környezeti változókból a kapcsolat létrehozásához.
<?php
$conn_string = sprintf("%s password=", getenv('AZURE_POSTGRESQL_CONNECTIONSTRING'), $access_token);
$dbconn = pg_connect($conn_string);
?>
Ruby esetében nincs beépülő modul vagy kódtár a jelszó nélküli kapcsolatokhoz. Lekérhet egy hozzáférési jogkivonatot a felügyelt identitáshoz vagy szolgáltatásnévhez, és jelszóként használhatja az adatbázishoz való csatlakozáshoz. A hozzáférési jogkivonat az Azure REST API-val szerezhető be.
Telepítse a függőségeket.
gem install pg
Kódban kérje le a hozzáférési jogkivonatot a REST API és a PostgreSQL kapcsolati adataival a Service Connector szolgáltatás által hozzáadott környezeti változókból. Egyesítse őket a kapcsolat létrehozásához. Az alábbi kód használatakor bontsa ki a kódrészlet azon részét, amely a használni kívánt hitelesítési típushoz tartozik.
Az Azure App Service és az Azure Container Apps egy belsőleg elérhető REST-végpontot biztosít a felügyelt identitások jogkivonatainak lekéréséhez. További információkért lásd a REST-végpontok hivatkozását.
require 'pg'
require 'dotenv/load'
require 'net/http'
require 'json'
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned identity.
# uri = URI(ENV['IDENTITY_ENDPOINT'] + '?resource=https://ossrdbms-aad.database.windows.net&api-version=2019-08-01')
# res = Net::HTTP.get_response(uri, {'X-IDENTITY-HEADER' => ENV['IDENTITY_HEADER'], 'Metadata' => 'true'})
# For user-assigned identity.
# uri = URI(ENV[IDENTITY_ENDPOINT] + '?resource=https://ossrdbms-aad.database.windows.net&api-version=2019-08-01&client_id=' + ENV['AZURE_POSTGRESQL_CLIENTID'])
# res = Net::HTTP.get_response(uri, {'X-IDENTITY-HEADER' => ENV['IDENTITY_HEADER'], 'Metadata' => 'true'})
# For service principal
# uri = URI('https://login.microsoftonline.com/' + ENV['AZURE_POSTGRESQL_TENANTID'] + '/oauth2/v2.0/token')
# params = {
# :grant_type => 'client_credentials',
# :client_id: => ENV['AZURE_POSTGRESQL_CLIENTID'],
# :client_secret => ENV['AZURE_POSTGRESQL_CLIENTSECRET'],
# :scope => 'https://ossrdbms-aad.database.windows.net/.default'
# }
# req = Net::HTTP::POST.new(uri)
# req.set_form_data(params)
# req['Content-Type'] = 'application/x-www-form-urlencoded'
# res = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => true) do |http|
# http.request(req)
parsed = JSON.parse(res.body)
access_token = parsed["access_token"]
# Use the token and the connection string from the environment variables added by Service Connector to establish the connection.
conn = PG::Connection.new(
connection_string: ENV['AZURE_POSTGRESQL_CONNECTIONSTRING'] + " password=" + access_token,
)
A szolgáltatásnév hozzáférési jogkivonatának beszerzéséről az Azure AD szolgáltatásközi hozzáférési jogkivonat-kérésében olvashat bővebben.
Ezután, ha a Service Connector használata előtt táblákat és szekvenciákat hozott létre a Rugalmas PostgreSQL-kiszolgálón, tulajdonosként kell csatlakoznia, és engedélyt kell adnia a Service Connector általi létrehozásra <aad-username> . A Service Connector által beállított kapcsolati sztring vagy konfigurációs csoport felhasználónevének a következőképpen aad_<connection name>kell kinéznie. Ha az Azure Portalt használja, válassza az oszlop melletti Service Type kibontás gombot, és kérje le az értéket. Ha az Azure CLI-t használja, ellenőrizze configurations a PARANCSSOR parancs kimenetét.
Ezután hajtsa végre a lekérdezést az engedély megadásához
az extension add --name rdbms-connect
az postgres flexible-server execute -n <postgres-name> -u <owner-username> -p "<owner-password>" -d <database-name> --querytext "GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO \"<aad-username>\";GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO \"<aad username>\";"
A <owner-username> meglévő tábla tulajdonosa, <owner-password> amely engedélyeket adhat másoknak.
<aad-username> a Service Connector által létrehozott felhasználó. Cserélje le őket a tényleges értékre.
Ellenőrizze az eredményt a következő paranccsal:
az postgres flexible-server execute -n <postgres-name> -u <owner-username> -p "<owner-password>" -d <database-name> --querytext "SELECT distinct(table_name) FROM information_schema.table_privileges WHERE grantee='<aad-username>' AND table_schema='public';" --output table
Felhasználó által hozzárendelt felügyelt identitás
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CLIENTID |
Az ügyfél azonosítója |
<identity-client-ID> |
AZURE_POSTGRESQL_CONNECTIONSTRING |
.NET PostgreSQL kapcsolati sztring |
Server=<PostgreSQL-server-name>.postgres.database.azure.com;Database=<database-name>;Port=5432;Ssl Mode=Require;User Id=<username>; |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CLIENTID |
Az ügyfél azonosítója |
<identity-client-ID> |
AZURE_POSTGRESQL_CONNECTIONSTRING |
JDBC PostgreSQL kapcsolati sztring |
jdbc:postgresql://<PostgreSQL-server-name>.postgres.database.azure.com:5432/<database-name>?sslmode=require&user=<username> |
| Az alkalmazás tulajdonságai |
Leírás |
Példaérték |
spring.datasource.azure.passwordless-enabled |
Jelszó nélküli hitelesítés engedélyezése |
true |
spring.cloud.azure.credential.client-id |
Az ügyfél azonosítója |
<identity-client-ID> |
spring.cloud.azure.credential.client-managed-identity-enabled |
Ügyfél által felügyelt identitás engedélyezése |
true |
spring.datasource.url |
Adatbázis URL-címe |
jdbc:postgresql://<PostgreSQL-server-name>.postgres.database.azure.com:5432/<database-name>?sslmode=require |
spring.datasource.username |
Adatbázis felhasználóneve |
username |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CLIENTID |
Az ügyfél azonosítója |
<identity-client-ID> |
AZURE_POSTGRESQL_CONNECTIONSTRING |
psycopg2 kapcsolati sztring |
dbname=<database-name> host=<PostgreSQL-server-name>.postgres.database.azure.com port=5432 sslmode=require user=<username> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_NAME |
Adatbázis neve |
<database-name> |
AZURE_POSTGRESQL_HOST |
Adatbázis-gazdagép URL-címe |
<PostgreSQL-server-name>.postgres.database.azure.com |
AZURE_POSTGRESQL_USER |
Adatbázis felhasználóneve |
<username> |
AZURE_POSTGRESQL_CLIENTID |
Az ügyfél azonosítója |
<<identity-client-ID>> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CLIENTID |
Az ügyfél azonosítója |
<identity-client-ID> |
AZURE_POSTGRESQL_CONNECTIONSTRING |
Go PostgreSQL kapcsolati sztring |
host=<PostgreSQL-server-name>.postgres.database.azure.com dbname=<database-name> sslmode=require user=<username> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_HOST |
Adatbázis-gazdagép URL-címe |
<PostgreSQL-server-name>.postgres.database.azure.com |
AZURE_POSTGRESQL_USER |
Adatbázis felhasználóneve |
<username> |
AZURE_POSTGRESQL_DATABASE |
Adatbázis neve |
<database-name> |
AZURE_POSTGRESQL_PORT |
Portszám |
5432 |
AZURE_POSTGRESQL_SSL |
SSL-beállítás |
true |
AZURE_POSTGRESQL_CLIENTID |
Az ügyfél azonosítója |
<identity-client-ID> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CLIENTID |
Az ügyfél azonosítója |
<identity-client-ID> |
AZURE_POSTGRESQL_CONNECTIONSTRING |
PHP natív PostgreSQL-kapcsolati sztring |
host=<PostgreSQL-server-name>.postgres.database.azure.com port=5432 dbname=<database-name> sslmode=require user=<username> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CLIENTID |
Az ügyfél azonosítója |
<identity-client-ID> |
AZURE_POSTGRESQL_CONNECTIONSTRING |
Ruby PostgreSQL kapcsolati sztring |
host=<your-postgres-server-name>.postgres.database.azure.com port=5432 dbname=<database-name> sslmode=require user=<username> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_HOST |
Adatbázis-gazdagép URL-címe |
<PostgreSQL-server-name>.postgres.database.azure.com |
AZURE_POSTGRESQL_USERNAME |
Adatbázis felhasználóneve |
<username> |
AZURE_POSTGRESQL_DATABASE |
Adatbázis neve |
<database-name> |
AZURE_POSTGRESQL_PORT |
Portszám |
5432 |
AZURE_POSTGRESQL_SSL |
SSL-beállítás |
true |
AZURE_POSTGRESQL_CLIENTID |
Az ügyfél azonosítója |
<identity-client-ID> |
Mintakód
Tekintse meg az alábbi lépéseket és kódot az Azure Database for PostgreSQL-hez való csatlakozáshoz egy felhasználó által hozzárendelt felügyelt identitás használatával.
A .NET esetében nincs beépülő modul vagy tár a jelszó nélküli kapcsolatok támogatásához. A felügyelt identitáshoz vagy szolgáltatásnévhez hozzáférési jogkivonatot kérhet le az olyan ügyfélkódtárak használatával, mint az Azure.Identity. Ezután jelszóként használhatja a hozzáférési jogkivonatot az adatbázishoz való csatlakozáshoz. Az alábbi kód használatakor bontsa ki a kódrészlet azon részét, amely a használni kívánt hitelesítési típushoz tartozik.
using Azure.Identity;
using Azure.Core;
using Npgsql;
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned identity.
// var sqlServerTokenProvider = new DefaultAzureCredential();
// For user-assigned identity.
// var sqlServerTokenProvider = new DefaultAzureCredential(
// new DefaultAzureCredentialOptions
// {
// ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_POSTGRESQL_CLIENTID");
// }
// );
// For service principal.
// var tenantId = Environment.GetEnvironmentVariable("AZURE_POSTGRESQL_TENANTID");
// var clientId = Environment.GetEnvironmentVariable("AZURE_POSTGRESQL_CLIENTID");
// var clientSecret = Environment.GetEnvironmentVariable("AZURE_POSTGRESQL_CLIENTSECRET");
// var sqlServerTokenProvider = new ClientSecretCredential(tenantId, clientId, clientSecret);
// Acquire the access token.
AccessToken accessToken = await sqlServerTokenProvider.GetTokenAsync(
new TokenRequestContext(scopes: new string[]
{
"https://ossrdbms-aad.database.windows.net/.default"
}));
// Combine the token with the connection string from the environment variables provided by Service Connector.
string connectionString =
$"{Environment.GetEnvironmentVariable("AZURE_POSTGRESQL_CONNECTIONSTRING")};Password={accessToken.Token}";
// Establish the connection.
using (var connection = new NpgsqlConnection(connectionString))
{
Console.WriteLine("Opening connection using access token...");
connection.Open();
}
Adja hozzá a következő függőségeket a pom.xml fájlhoz:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.7.5</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity-extensions</artifactId>
<version>1.2.0</version>
</dependency>
Kérje le a kapcsolati sztring a környezeti változókból, és adja hozzá a beépülő modul nevét az adatbázishoz való csatlakozáshoz:
import java.sql.*;
String url = System.getenv("AZURE_POSTGRESQL_CONNECTIONSTRING");
String pluginName = "com.azure.identity.extensions.jdbc.postgresql.AzurePostgresqlAuthenticationPlugin";
Connection connection = DriverManager.getConnection(url + "&authenticationPluginClassName=" + pluginName);
További információt a következő források tartalmaznak:
Telepítse a függőségeket.
pip install azure-identity
pip install psycopg2-binary
pip freeze > requirements.txt # Save the dependencies to a file
Szerezze be a hozzáférési jogkivonatot a kódtár használatával azure-identity , és használja a jogkivonatot jelszóként. Kapcsolati adatok lekérése a Service Connector által hozzáadott környezeti változókból. Az alábbi kód használatakor bontsa ki a kódrészlet azon részét, amely a használni kívánt hitelesítési típushoz tartozik.
from azure.identity import DefaultAzureCredential
import psycopg2
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned identity.
# cred = DefaultAzureCredential()
# For user-assigned identity.
# managed_identity_client_id = os.getenv('AZURE_POSTGRESQL_CLIENTID')
# cred = ManagedIdentityCredential(client_id=managed_identity_client_id)
# For service principal.
# tenant_id = os.getenv('AZURE_POSTGRESQL_TENANTID')
# client_id = os.getenv('AZURE_POSTGRESQL_CLIENTID')
# client_secret = os.getenv('AZURE_POSTGRESQL_CLIENTSECRET')
# cred = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
# Acquire the access token
accessToken = cred.get_token('https://ossrdbms-aad.database.windows.net/.default')
# Combine the token with the connection string from the environment variables added by Service Connector to establish the connection.
conn_string = os.getenv('AZURE_POSTGRESQL_CONNECTIONSTRING')
conn = psycopg2.connect(conn_string + ' password=' + accessToken.token)
Telepítse a függőségeket.
pip install azure-identity
Hozzáférési jogkivonat lekérése kódtár használatával azure-identity a Service Connector által hozzáadott környezeti változók használatával. Az alábbi kód használatakor bontsa ki a kódrészlet azon részét, amely a használni kívánt hitelesítési típushoz tartozik.
from azure.identity import DefaultAzureCredential
import psycopg2
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned identity.
# credential = DefaultAzureCredential()
# For user-assigned identity.
# managed_identity_client_id = os.getenv('AZURE_POSTGRESQL_CLIENTID')
# cred = ManagedIdentityCredential(client_id=managed_identity_client_id)
# For service principal.
# tenant_id = os.getenv('AZURE_POSTGRESQL_TENANTID')
# client_id = os.getenv('AZURE_POSTGRESQL_CLIENTID')
# client_secret = os.getenv('AZURE_POSTGRESQL_CLIENTSECRET')
# cred = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
# Acquire the access token.
accessToken = cred.get_token('https://ossrdbms-aad.database.windows.net/.default')
A fájl beállításakor kérje le az Azure PostgreSQL-adatbázis adatait a Service Connector szolgáltatás által hozzáadott környezeti változókból. Az adatbázis eléréséhez használja accessToken az előző lépésben beszerzett adatokat.
# In your setting file, eg. settings.py
host = os.getenv('AZURE_POSTGRESQL_HOST')
user = os.getenv('AZURE_POSTGRESQL_USER')
password = accessToken.token # this is accessToken acquired from above step.
database = os.getenv('AZURE_POSTGRESQL_NAME')
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': database,
'USER': user,
'PASSWORD': password,
'HOST': host,
'PORT': '5432', # Port is 5432 by default
'OPTIONS': {'sslmode': 'require'},
}
}
Telepítse a függőségeket.
go get github.com/lib/pq
go get "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
go get "github.com/Azure/azure-sdk-for-go/sdk/azcore"
A kódban szerezze be a hozzáférési jogkivonatot, azidentitymajd jelszóként használja az Azure PostgreSQL-hez való csatlakozáshoz, valamint a Service Connector által megadott kapcsolati információkat. Az alábbi kód használatakor bontsa ki a kódrészlet azon részét, amely a használni kívánt hitelesítési típushoz tartozik.
import (
"database/sql"
"fmt"
"os"
"context"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
_ "github.com/lib/pq"
)
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned identity.
// cred, err := azidentity.NewDefaultAzureCredential(nil)
// For user-assigned identity.
// clientid := os.Getenv("AZURE_POSTGRESQL_CLIENTID")
// azidentity.ManagedIdentityCredentialOptions.ID := clientid
// options := &azidentity.ManagedIdentityCredentialOptions{ID: clientid}
// cred, err := azidentity.NewManagedIdentityCredential(options)
// For service principal.
// clientid := os.Getenv("AZURE_POSTGRESQL_CLIENTID")
// tenantid := os.Getenv("AZURE_POSTGRESQL_TENANTID")
// clientsecret := os.Getenv("AZURE_POSTGRESQL_CLIENTSECRET")
// cred, err := azidentity.NewClientSecretCredential(tenantid, clientid, clientsecret, &azidentity.ClientSecretCredentialOptions{})
if err != nil {
// error handling
}
// Acquire the access token
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
token, err := cred.GetToken(ctx, policy.TokenRequestOptions{
Scopes: []string("https://ossrdbms-aad.database.windows.net/.default"),
})
// Combine the token with the connection string from the environment variables added by Service Connector to establish the connection.
connectionString := os.Getenv("AZURE_POSTGRESQL_CONNECTIONSTRING") + " password=" + token.Token
conn, err := sql.Open("postgres", connectionString)
if err != nil {
panic(err)
}
conn.Close()
Telepítse a függőségeket.
npm install --save @azure/identity
npm install --save pg
Kódban kérje le a hozzáférési jogkivonatot a Service Connector szolgáltatás által hozzáadott környezeti változók és PostgreSQL-kapcsolati adatok használatával @azure/identity . Egyesítse őket a kapcsolat létrehozásához. Az alábbi kód használatakor bontsa ki a kódrészlet azon részét, amely a használni kívánt hitelesítési típushoz tartozik.
import { DefaultAzureCredential, ClientSecretCredential } from "@azure/identity";
import { Client } from 'pg';
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned identity.
// const credential = new DefaultAzureCredential();
// For user-assigned identity.
// const clientId = process.env.AZURE_POSTGRESQL_CLIENTID;
// const credential = new DefaultAzureCredential({
// managedIdentityClientId: clientId
// });
// For service principal.
// const tenantId = process.env.AZURE_POSTGRESQL_TENANTID;
// const clientId = process.env.AZURE_POSTGRESQL_CLIENTID;
// const clientSecret = process.env.AZURE_POSTGRESQL_CLIENTSECRET;
// const credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
// Acquire the access token.
var accessToken = await credential.getToken('https://ossrdbms-aad.database.windows.net/.default');
// Use the token and the connection information from the environment variables added by Service Connector to establish the connection.
(async () => {
const client = new Client({
host: process.env.AZURE_POSTGRESQL_HOST,
user: process.env.AZURE_POSTGRESQL_USER,
password: accesstoken.token,
database: process.env.AZURE_POSTGRESQL_DATABASE,
port: Number(process.env.AZURE_POSTGRESQL_PORT) ,
ssl: process.env.AZURE_POSTGRESQL_SSL
});
await client.connect();
await client.end();
})();
PHP esetén nincs beépülő modul vagy kódtár a jelszó nélküli kapcsolatokhoz. Lekérhet egy hozzáférési jogkivonatot a felügyelt identitáshoz vagy szolgáltatásnévhez, és jelszóként használhatja az adatbázishoz való csatlakozáshoz. A hozzáférési jogkivonat az Azure REST API-val szerezhető be.
Kódban kérje le a hozzáférési jogkivonatot a REST API-val a kedvenc kódtárával.
A felhasználó által hozzárendelt identitás és a rendszer által hozzárendelt identitás esetében az Azure App Service és az Azure Container Apps egy belsőleg elérhető REST-végpontot biztosít a felügyelt identitások jogkivonatainak lekéréséhez két környezeti változó definiálásával: IDENTITY_ENDPOINT és IDENTITY_HEADER. További információkért lásd a REST-végpontok hivatkozását.
A hozzáférési jogkivonat lekéréséhez http GET kérést kell küldenie az identitásvégponthoz, és a lekérdezéshez hasonlóan https://ossrdbms-aad.database.windows.net kell használniaresource. A felhasználó által hozzárendelt identitáshoz adja meg a Service Connector által a lekérdezésben hozzáadott környezeti változók ügyfél-azonosítóját is.
A szolgáltatásnév esetében tekintse meg az Azure AD szolgáltatás–szolgáltatás hozzáférési jogkivonat-kérését a hozzáférési jogkivonat megszerzésének részleteiért. A POST kérést a Service Connector által hozzáadott környezeti változókból állítsa be a szolgáltatásnév bérlőazonosítójával https://ossrdbms-aad.database.windows.net/.default , ügyfélazonosítójával és ügyféltitkával.
Kombinálja a hozzáférési jogkivonatot és a PostgreSQL kapcsolati sztringet a Service Connector szolgáltatás által hozzáadott környezeti változókból a kapcsolat létrehozásához.
<?php
$conn_string = sprintf("%s password=", getenv('AZURE_POSTGRESQL_CONNECTIONSTRING'), $access_token);
$dbconn = pg_connect($conn_string);
?>
Ruby esetében nincs beépülő modul vagy kódtár a jelszó nélküli kapcsolatokhoz. Lekérhet egy hozzáférési jogkivonatot a felügyelt identitáshoz vagy szolgáltatásnévhez, és jelszóként használhatja az adatbázishoz való csatlakozáshoz. A hozzáférési jogkivonat az Azure REST API-val szerezhető be.
Telepítse a függőségeket.
gem install pg
Kódban kérje le a hozzáférési jogkivonatot a REST API és a PostgreSQL kapcsolati adataival a Service Connector szolgáltatás által hozzáadott környezeti változókból. Egyesítse őket a kapcsolat létrehozásához. Az alábbi kód használatakor bontsa ki a kódrészlet azon részét, amely a használni kívánt hitelesítési típushoz tartozik.
Az Azure App Service és az Azure Container Apps egy belsőleg elérhető REST-végpontot biztosít a felügyelt identitások jogkivonatainak lekéréséhez. További információkért lásd a REST-végpontok hivatkozását.
require 'pg'
require 'dotenv/load'
require 'net/http'
require 'json'
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned identity.
# uri = URI(ENV['IDENTITY_ENDPOINT'] + '?resource=https://ossrdbms-aad.database.windows.net&api-version=2019-08-01')
# res = Net::HTTP.get_response(uri, {'X-IDENTITY-HEADER' => ENV['IDENTITY_HEADER'], 'Metadata' => 'true'})
# For user-assigned identity.
# uri = URI(ENV[IDENTITY_ENDPOINT] + '?resource=https://ossrdbms-aad.database.windows.net&api-version=2019-08-01&client_id=' + ENV['AZURE_POSTGRESQL_CLIENTID'])
# res = Net::HTTP.get_response(uri, {'X-IDENTITY-HEADER' => ENV['IDENTITY_HEADER'], 'Metadata' => 'true'})
# For service principal
# uri = URI('https://login.microsoftonline.com/' + ENV['AZURE_POSTGRESQL_TENANTID'] + '/oauth2/v2.0/token')
# params = {
# :grant_type => 'client_credentials',
# :client_id: => ENV['AZURE_POSTGRESQL_CLIENTID'],
# :client_secret => ENV['AZURE_POSTGRESQL_CLIENTSECRET'],
# :scope => 'https://ossrdbms-aad.database.windows.net/.default'
# }
# req = Net::HTTP::POST.new(uri)
# req.set_form_data(params)
# req['Content-Type'] = 'application/x-www-form-urlencoded'
# res = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => true) do |http|
# http.request(req)
parsed = JSON.parse(res.body)
access_token = parsed["access_token"]
# Use the token and the connection string from the environment variables added by Service Connector to establish the connection.
conn = PG::Connection.new(
connection_string: ENV['AZURE_POSTGRESQL_CONNECTIONSTRING'] + " password=" + access_token,
)
A szolgáltatásnév hozzáférési jogkivonatának beszerzéséről az Azure AD szolgáltatásközi hozzáférési jogkivonat-kérésében olvashat bővebben.
Ezután, ha a Service Connector használata előtt táblákat és szekvenciákat hozott létre a Rugalmas PostgreSQL-kiszolgálón, tulajdonosként kell csatlakoznia, és engedélyt kell adnia a Service Connector általi létrehozásra <aad-username> . A Service Connector által beállított kapcsolati sztring vagy konfigurációs csoport felhasználónevének a következőképpen aad_<connection name>kell kinéznie. Ha az Azure Portalt használja, válassza az oszlop melletti Service Type kibontás gombot, és kérje le az értéket. Ha az Azure CLI-t használja, ellenőrizze configurations a PARANCSSOR parancs kimenetét.
Ezután hajtsa végre a lekérdezést az engedély megadásához
az extension add --name rdbms-connect
az postgres flexible-server execute -n <postgres-name> -u <owner-username> -p "<owner-password>" -d <database-name> --querytext "GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO \"<aad-username>\";GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO \"<aad username>\";"
A <owner-username> meglévő tábla tulajdonosa, <owner-password> amely engedélyeket adhat másoknak.
<aad-username> a Service Connector által létrehozott felhasználó. Cserélje le őket a tényleges értékre.
Ellenőrizze az eredményt a következő paranccsal:
az postgres flexible-server execute -n <postgres-name> -u <owner-username> -p "<owner-password>" -d <database-name> --querytext "SELECT distinct(table_name) FROM information_schema.table_privileges WHERE grantee='<aad-username>' AND table_schema='public';" --output table
Csatlakozási karakterlánc
Figyelmeztetés
A Microsoft azt javasolja, hogy a legbiztonságosabb hitelesítési folyamatot használja. Az ebben az eljárásban leírt hitelesítési folyamat nagyon nagy megbízhatóságot igényel az alkalmazásban, és olyan kockázatokat hordoz, amelyek más folyamatokban nem jelennek meg. Ezt a folyamatot csak akkor érdemes használni, ha más biztonságosabb folyamatok, például a felügyelt identitások nem életképesek.
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CONNECTIONSTRING |
.NET PostgreSQL kapcsolati sztring |
Server=<PostgreSQL-server-name>.postgres.database.azure.com;Database=<database-name>;Port=5432;Ssl Mode=Require;User Id=<username>; |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CONNECTIONSTRING |
JDBC PostgreSQL kapcsolati sztring |
jdbc:postgresql://<PostgreSQL-server-name>.postgres.database.azure.com:5432/<database-name>?sslmode=require&user=<username>&password=<password> |
| Az alkalmazás tulajdonságai |
Leírás |
Példaérték |
spring.datasource.url |
Adatbázis URL-címe |
jdbc:postgresql://<PostgreSQL-server-name>.postgres.database.azure.com:5432/<database-name>?sslmode=require |
spring.datasource.username |
Adatbázis felhasználóneve |
<username> |
spring.datasource.password |
Adatbázis jelszava |
<password> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CONNECTIONSTRING |
psycopg2 kapcsolati sztring |
dbname=<database-name> host=<PostgreSQL-server-name>.postgres.database.azure.com port=5432 sslmode=require user=<username> password=<password> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_NAME |
Adatbázis neve |
<database-name> |
AZURE_POSTGRESQL_HOST |
Adatbázis-gazdagép URL-címe |
<PostgreSQL-server-name>.postgres.database.azure.com |
AZURE_POSTGRESQL_USER |
Adatbázis felhasználóneve |
<username> |
AZURE_POSTGRESQL_PASSWORD |
Adatbázis jelszava |
<database-password> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CONNECTIONSTRING |
Go PostgreSQL kapcsolati sztring |
host=<PostgreSQL-server-name>.postgres.database.azure.com dbname=<database-name> sslmode=require user=<username> password=<password> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_HOST |
Adatbázis-gazdagép URL-címe |
<PostgreSQL-server-name>.postgres.database.azure.com |
AZURE_POSTGRESQL_USER |
Adatbázis felhasználóneve |
<username> |
AZURE_POSTGRESQL_PASSWORD |
Adatbázis jelszava |
<password> |
AZURE_POSTGRESQL_DATABASE |
Adatbázis neve |
<database-name> |
AZURE_POSTGRESQL_PORT |
Portszám |
5432 |
AZURE_POSTGRESQL_SSL |
SSL-beállítás |
true |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CONNECTIONSTRING |
PHP natív PostgreSQL-kapcsolati sztring |
host=<PostgreSQL-server-name>.postgres.database.azure.com port=5432 dbname=<database-name> sslmode=require user=<username> password=<password> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CONNECTIONSTRING |
Ruby PostgreSQL kapcsolati sztring |
host=<your-postgres-server-name>.postgres.database.azure.com port=5432 dbname=<database-name> sslmode=require user=<username> password=<password> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_HOST |
Adatbázis-gazdagép URL-címe |
<PostgreSQL-server-name>.postgres.database.azure.com |
AZURE_POSTGRESQL_USERNAME |
Adatbázis felhasználóneve |
<username> |
AZURE_POSTGRESQL_DATABASE |
Adatbázis neve |
<database-name> |
AZURE_POSTGRESQL_PORT |
Portszám |
5432 |
AZURE_POSTGRESQL_SSL |
SSL-beállítás |
true |
AZURE_POSTGRESQL_PASSWORD |
Adatbázis jelszava |
<password> |
Mintakód
Az Azure Database for PostgreSQL-hez való csatlakozáshoz tekintse meg az alábbi lépéseket és kódot egy kapcsolati sztring használatával.
- Függőségek telepítése az Npgsql-útmutatót követve
- Kódban kérje le a PostgreSQL kapcsolati sztringet a Service Connector által hozzáadott környezeti változókból.
using System;
using Npgsql;
string connectionString = Environment.GetEnvironmentVariable("AZURE_POSTGRESQL_CONNECTIONSTRING");
using (NpgsqlConnection connection = new NpgsqlConnection(connectionString))
{
connection.Open();
}
- Telepítse a függőségeket a pgJDBC útmutatása alapján.
- Kódban kérje le a PostgreSQL kapcsolati sztringet a Service Connector által hozzáadott környezeti változókból.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
String connectionString = System.getenv("AZURE_POSTGRESQL_CONNECTIONSTRING");
Connection connection = null;
try {
connection = DriverManager.getConnection(connectionString);
System.out.println("Connection successful!");
} catch (SQLException e){
System.out.println(e.getMessage());
}
- Telepítse a Spring Cloud Azure Starter JDBC PostgreSQL modult a következő függőségek fájlhoz való
pom.xml hozzáadásával. Itt találja a Spring Cloud Azure verzióját.
<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>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-jdbc-postgresql</artifactId>
</dependency>
</dependencies>
</dependencyManagement>
- Spring Boot-alkalmazás beállítása, további részletek ebben a szakaszban.
- Telepítse a függőségeket a psycopg2 útmutatása alapján.
- Kódban kérje le a PostgreSQL kapcsolati adatait a Service Connector által hozzáadott környezeti változókból.
import os
import psycopg2
connection_string = os.getenv('AZURE_POSTGRESQL_CONNECTIONSTRING')
connection = psycopg2.connect(connection_string)
print("Connection established")
connection.close()
- Telepítse a függőségeket a Django útmutatása és apsycopg2 útmutatása alapján.
pip install django
pip install psycopg2
- A beállításfájlban kérje le a PostgreSQL-adatbázis adatait a Service Connector által hozzáadott környezeti változókból.
# in your setting file, eg. settings.py
host = os.getenv('AZURE_POSTGRESQL_HOST')
user = os.getenv('AZURE_POSTGRESQL_USER')
password = os.getenv('AZURE_POSTGRESQL_PASSWORD')
database = os.getenv('AZURE_POSTGRESQL_NAME')
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': database,
'USER': user,
'PASSWORD': password,
'HOST': host,
'PORT': '5432', # Port is 5432 by default
'OPTIONS': {'sslmode': 'require'},
}
}
- Telepítse a függőségeket.
go get github.com/lib/pq
- Kódban kérje le a PostgreSQL kapcsolati sztringet a Service Connector által hozzáadott környezeti változókból.
import (
"database/sql"
"fmt"
"os"
_ "github.com/lib/pq"
)
connectionString := os.Getenv("AZURE_POSTGRESQL_CONNECTIONSTRING")
conn, err := sql.Open("postgres", connectionString)
if err != nil {
panic(err)
}
conn.Close()
- Telepítse a függőségeket.
npm install pg dotenv
- Kódban kérje le a PostgreSQL kapcsolati adatait a Service Connector által hozzáadott környezeti változókból.
import { Client } from 'pg';
(async () => {
const client = new Client({
host: process.env.AZURE_POSTGRESQL_HOST,
user: process.env.AZURE_POSTGRESQL_USER,
password: process.env.AZURE_POSTGRESQL_PASSWORD,
database: process.env.AZURE_POSTGRESQL_DATABASE,
port: Number(process.env.AZURE_POSTGRESQL_PORT) ,
ssl: process.env.AZURE_POSTGRESQL_SSL
});
await client.connect();
await client.end();
})();
- Kódban kérje le a PostgreSQL kapcsolati adatait a Service Connector által hozzáadott környezeti változókból.
<?php
$conn_string = getenv('AZURE_POSTGRESQL_CONNECTIONSTRING');
$dbconn = pg_connect($conn_string);
?>
- Telepítse a függőségeket.
gem install pg
- Kódban kérje le a PostgreSQL kapcsolati adatait a Service Connector által hozzáadott környezeti változókból.
require 'pg'
require 'dotenv/load'
begin
conn = PG::Connection.new(
connection_string: ENV['AZURE_POSTGRESQL_CONNECTIONSTRING'],
)
rescue PG::Error => e
puts e.message
ensure
connection.close if connection
end
Szolgáltatásnév
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CLIENTID |
Az ügyfél azonosítója |
<client-ID> |
AZURE_POSTGRESQL_CLIENTSECRET |
Az ügyfél titkos kódja |
<client-secret> |
AZURE_POSTGRESQL_TENANTID |
A bérlő azonosítója |
<tenant-ID> |
AZURE_POSTGRESQL_CONNECTIONSTRING |
.NET PostgreSQL kapcsolati sztring |
Server=<PostgreSQL-server-name>.postgres.database.azure.com;Database=<database-name>;Port=5432;Ssl Mode=Require;User Id=<username>; |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CLIENTID |
Az ügyfél azonosítója |
<client-ID> |
AZURE_POSTGRESQL_CLIENTSECRET |
Az ügyfél titkos kódja |
<client-secret> |
AZURE_POSTGRESQL_TENANTID |
A bérlő azonosítója |
<tenant-ID> |
AZURE_POSTGRESQL_CONNECTIONSTRING |
JDBC PostgreSQL kapcsolati sztring |
jdbc:postgresql://<PostgreSQL-server-name>.postgres.database.azure.com:5432/<database-name>?sslmode=require&user=<username> |
| Az alkalmazás tulajdonságai |
Leírás |
Példaérték |
spring.datasource.azure.passwordless-enabled |
Jelszó nélküli hitelesítés engedélyezése |
true |
spring.cloud.azure.credential.client-id |
Az ügyfél azonosítója |
<client-ID> |
spring.cloud.azure.credential.client-secret |
Az ügyfél titkos kódja |
<client-secret> |
spring.cloud.azure.credential.tenant-id |
A bérlő azonosítója |
<tenant-ID> |
spring.datasource.url |
Adatbázis URL-címe |
jdbc:postgresql://<PostgreSQL-server-name>.postgres.database.azure.com:5432/<database-name>?sslmode=require |
spring.datasource.username |
Adatbázis felhasználóneve |
username |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CLIENTID |
Az ügyfél azonosítója |
<client-ID> |
AZURE_POSTGRESQL_CLIENTSECRET |
Az ügyfél titkos kódja |
<client-secret> |
AZURE_POSTGRESQL_TENANTID |
A bérlő azonosítója |
<tenant-ID> |
AZURE_POSTGRESQL_CONNECTIONSTRING |
psycopg2 kapcsolati sztring |
dbname=<database-name> host=<PostgreSQL-server-name>.postgres.database.azure.com port=5432 sslmode=require user=<username> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_NAME |
Adatbázis neve |
<database-name> |
AZURE_POSTGRESQL_HOST |
Adatbázis-gazdagép URL-címe |
<PostgreSQL-server-name>.postgres.database.azure.com |
AZURE_POSTGRESQL_USER |
Adatbázis felhasználóneve |
<username> |
AZURE_POSTGRESQL_CLIENTID |
Az ügyfél azonosítója |
<client-ID> |
AZURE_POSTGRESQL_CLIENTSECRET |
Az ügyfél TITKOS kódja |
<client-secret> |
AZURE_POSTGRESQL_TENANTID |
A bérlő azonosítója |
<tenant-ID> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CLIENTID |
Az ügyfél azonosítója |
<client-ID> |
AZURE_POSTGRESQL_CLIENTSECRET |
Az ügyfél titkos kódja |
<client-secret> |
AZURE_POSTGRESQL_TENANTID |
A bérlő azonosítója |
<tenant-ID> |
AZURE_POSTGRESQL_CONNECTIONSTRING |
Go PostgreSQL kapcsolati sztring |
host=<PostgreSQL-server-name>.postgres.database.azure.com dbname=<database-name> sslmode=require user=<username> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_HOST |
Adatbázis-gazdagép URL-címe |
<PostgreSQL-server-name>.postgres.database.azure.com |
AZURE_POSTGRESQL_USER |
Adatbázis felhasználóneve |
<username> |
AZURE_POSTGRESQL_DATABASE |
Adatbázis neve |
<database-name> |
AZURE_POSTGRESQL_PORT |
Portszám |
5432 |
AZURE_POSTGRESQL_SSL |
SSL-beállítás |
true |
AZURE_POSTGRESQL_CLIENTID |
Az ügyfél azonosítója |
<client-ID> |
AZURE_POSTGRESQL_CLIENTSECRET |
Az ügyfél titkos kódja |
<client-secret> |
AZURE_POSTGRESQL_TENANTID |
A bérlő azonosítója |
<tenant-ID> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CLIENTID |
Az ügyfél azonosítója |
<client-ID> |
AZURE_POSTGRESQL_CLIENTSECRET |
Az ügyfél titkos kódja |
<client-secret> |
AZURE_POSTGRESQL_TENANTID |
A bérlő azonosítója |
<tenant-ID> |
AZURE_POSTGRESQL_CONNECTIONSTRING |
PHP natív PostgreSQL-kapcsolati sztring |
host=<PostgreSQL-server-name>.postgres.database.azure.com port=5432 dbname=<database-name> sslmode=require user=<username> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_CLIENTID |
Az ügyfél azonosítója |
<client-ID> |
AZURE_POSTGRESQL_CLIENTSECRET |
Az ügyfél titkos kódja |
<client-secret> |
AZURE_POSTGRESQL_TENANTID |
A bérlő azonosítója |
<tenant-ID> |
AZURE_POSTGRESQL_CONNECTIONSTRING |
Ruby PostgreSQL kapcsolati sztring |
host=<your-postgres-server-name>.postgres.database.azure.com port=5432 dbname=<database-name> sslmode=require user=<username> |
| Alapértelmezett környezeti változó neve |
Leírás |
Példaérték |
AZURE_POSTGRESQL_HOST |
Adatbázis-gazdagép URL-címe |
<PostgreSQL-server-name>.postgres.database.azure.com |
AZURE_POSTGRESQL_USERNAME |
Adatbázis felhasználóneve |
<username> |
AZURE_POSTGRESQL_DATABASE |
Adatbázis neve |
<database-name> |
AZURE_POSTGRESQL_PORT |
Portszám |
5432 |
AZURE_POSTGRESQL_SSL |
SSL-beállítás |
true |
AZURE_POSTGRESQL_CLIENTID |
Az ügyfél azonosítója |
<identity-client-ID> |
AZURE_POSTGRESQL_CLIENTSECRET |
Az ügyfél titkos kódja |
<client-secret> |
AZURE_POSTGRESQL_TENANTID |
A bérlő azonosítója |
<tenant-ID> |
Mintakód
Tekintse meg az alábbi lépéseket és kódot az Azure Database for PostgreSQL szolgáltatásnévvel való csatlakozásához.
A .NET esetében nincs beépülő modul vagy tár a jelszó nélküli kapcsolatok támogatásához. A felügyelt identitáshoz vagy szolgáltatásnévhez hozzáférési jogkivonatot kérhet le az olyan ügyfélkódtárak használatával, mint az Azure.Identity. Ezután jelszóként használhatja a hozzáférési jogkivonatot az adatbázishoz való csatlakozáshoz. Az alábbi kód használatakor bontsa ki a kódrészlet azon részét, amely a használni kívánt hitelesítési típushoz tartozik.
using Azure.Identity;
using Azure.Core;
using Npgsql;
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned identity.
// var sqlServerTokenProvider = new DefaultAzureCredential();
// For user-assigned identity.
// var sqlServerTokenProvider = new DefaultAzureCredential(
// new DefaultAzureCredentialOptions
// {
// ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_POSTGRESQL_CLIENTID");
// }
// );
// For service principal.
// var tenantId = Environment.GetEnvironmentVariable("AZURE_POSTGRESQL_TENANTID");
// var clientId = Environment.GetEnvironmentVariable("AZURE_POSTGRESQL_CLIENTID");
// var clientSecret = Environment.GetEnvironmentVariable("AZURE_POSTGRESQL_CLIENTSECRET");
// var sqlServerTokenProvider = new ClientSecretCredential(tenantId, clientId, clientSecret);
// Acquire the access token.
AccessToken accessToken = await sqlServerTokenProvider.GetTokenAsync(
new TokenRequestContext(scopes: new string[]
{
"https://ossrdbms-aad.database.windows.net/.default"
}));
// Combine the token with the connection string from the environment variables provided by Service Connector.
string connectionString =
$"{Environment.GetEnvironmentVariable("AZURE_POSTGRESQL_CONNECTIONSTRING")};Password={accessToken.Token}";
// Establish the connection.
using (var connection = new NpgsqlConnection(connectionString))
{
Console.WriteLine("Opening connection using access token...");
connection.Open();
}
Adja hozzá a következő függőségeket a pom.xml fájlhoz:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.7.5</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity-extensions</artifactId>
<version>1.2.0</version>
</dependency>
Kérje le a kapcsolati sztring a környezeti változókból, és adja hozzá a beépülő modul nevét az adatbázishoz való csatlakozáshoz:
import java.sql.*;
String url = System.getenv("AZURE_POSTGRESQL_CONNECTIONSTRING");
String pluginName = "com.azure.identity.extensions.jdbc.postgresql.AzurePostgresqlAuthenticationPlugin";
Connection connection = DriverManager.getConnection(url + "&authenticationPluginClassName=" + pluginName);
További információt a következő források tartalmaznak:
Telepítse a függőségeket.
pip install azure-identity
pip install psycopg2-binary
pip freeze > requirements.txt # Save the dependencies to a file
Szerezze be a hozzáférési jogkivonatot a kódtár használatával azure-identity , és használja a jogkivonatot jelszóként. Kapcsolati adatok lekérése a Service Connector által hozzáadott környezeti változókból. Az alábbi kód használatakor bontsa ki a kódrészlet azon részét, amely a használni kívánt hitelesítési típushoz tartozik.
from azure.identity import DefaultAzureCredential
import psycopg2
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned identity.
# cred = DefaultAzureCredential()
# For user-assigned identity.
# managed_identity_client_id = os.getenv('AZURE_POSTGRESQL_CLIENTID')
# cred = ManagedIdentityCredential(client_id=managed_identity_client_id)
# For service principal.
# tenant_id = os.getenv('AZURE_POSTGRESQL_TENANTID')
# client_id = os.getenv('AZURE_POSTGRESQL_CLIENTID')
# client_secret = os.getenv('AZURE_POSTGRESQL_CLIENTSECRET')
# cred = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
# Acquire the access token
accessToken = cred.get_token('https://ossrdbms-aad.database.windows.net/.default')
# Combine the token with the connection string from the environment variables added by Service Connector to establish the connection.
conn_string = os.getenv('AZURE_POSTGRESQL_CONNECTIONSTRING')
conn = psycopg2.connect(conn_string + ' password=' + accessToken.token)
Telepítse a függőségeket.
pip install azure-identity
Hozzáférési jogkivonat lekérése kódtár használatával azure-identity a Service Connector által hozzáadott környezeti változók használatával. Az alábbi kód használatakor bontsa ki a kódrészlet azon részét, amely a használni kívánt hitelesítési típushoz tartozik.
from azure.identity import DefaultAzureCredential
import psycopg2
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned identity.
# credential = DefaultAzureCredential()
# For user-assigned identity.
# managed_identity_client_id = os.getenv('AZURE_POSTGRESQL_CLIENTID')
# cred = ManagedIdentityCredential(client_id=managed_identity_client_id)
# For service principal.
# tenant_id = os.getenv('AZURE_POSTGRESQL_TENANTID')
# client_id = os.getenv('AZURE_POSTGRESQL_CLIENTID')
# client_secret = os.getenv('AZURE_POSTGRESQL_CLIENTSECRET')
# cred = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
# Acquire the access token.
accessToken = cred.get_token('https://ossrdbms-aad.database.windows.net/.default')
A fájl beállításakor kérje le az Azure PostgreSQL-adatbázis adatait a Service Connector szolgáltatás által hozzáadott környezeti változókból. Az adatbázis eléréséhez használja accessToken az előző lépésben beszerzett adatokat.
# In your setting file, eg. settings.py
host = os.getenv('AZURE_POSTGRESQL_HOST')
user = os.getenv('AZURE_POSTGRESQL_USER')
password = accessToken.token # this is accessToken acquired from above step.
database = os.getenv('AZURE_POSTGRESQL_NAME')
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': database,
'USER': user,
'PASSWORD': password,
'HOST': host,
'PORT': '5432', # Port is 5432 by default
'OPTIONS': {'sslmode': 'require'},
}
}
Telepítse a függőségeket.
go get github.com/lib/pq
go get "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
go get "github.com/Azure/azure-sdk-for-go/sdk/azcore"
A kódban szerezze be a hozzáférési jogkivonatot, azidentitymajd jelszóként használja az Azure PostgreSQL-hez való csatlakozáshoz, valamint a Service Connector által megadott kapcsolati információkat. Az alábbi kód használatakor bontsa ki a kódrészlet azon részét, amely a használni kívánt hitelesítési típushoz tartozik.
import (
"database/sql"
"fmt"
"os"
"context"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
_ "github.com/lib/pq"
)
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned identity.
// cred, err := azidentity.NewDefaultAzureCredential(nil)
// For user-assigned identity.
// clientid := os.Getenv("AZURE_POSTGRESQL_CLIENTID")
// azidentity.ManagedIdentityCredentialOptions.ID := clientid
// options := &azidentity.ManagedIdentityCredentialOptions{ID: clientid}
// cred, err := azidentity.NewManagedIdentityCredential(options)
// For service principal.
// clientid := os.Getenv("AZURE_POSTGRESQL_CLIENTID")
// tenantid := os.Getenv("AZURE_POSTGRESQL_TENANTID")
// clientsecret := os.Getenv("AZURE_POSTGRESQL_CLIENTSECRET")
// cred, err := azidentity.NewClientSecretCredential(tenantid, clientid, clientsecret, &azidentity.ClientSecretCredentialOptions{})
if err != nil {
// error handling
}
// Acquire the access token
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
token, err := cred.GetToken(ctx, policy.TokenRequestOptions{
Scopes: []string("https://ossrdbms-aad.database.windows.net/.default"),
})
// Combine the token with the connection string from the environment variables added by Service Connector to establish the connection.
connectionString := os.Getenv("AZURE_POSTGRESQL_CONNECTIONSTRING") + " password=" + token.Token
conn, err := sql.Open("postgres", connectionString)
if err != nil {
panic(err)
}
conn.Close()
Telepítse a függőségeket.
npm install --save @azure/identity
npm install --save pg
Kódban kérje le a hozzáférési jogkivonatot a Service Connector szolgáltatás által hozzáadott környezeti változók és PostgreSQL-kapcsolati adatok használatával @azure/identity . Egyesítse őket a kapcsolat létrehozásához. Az alábbi kód használatakor bontsa ki a kódrészlet azon részét, amely a használni kívánt hitelesítési típushoz tartozik.
import { DefaultAzureCredential, ClientSecretCredential } from "@azure/identity";
import { Client } from 'pg';
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned identity.
// const credential = new DefaultAzureCredential();
// For user-assigned identity.
// const clientId = process.env.AZURE_POSTGRESQL_CLIENTID;
// const credential = new DefaultAzureCredential({
// managedIdentityClientId: clientId
// });
// For service principal.
// const tenantId = process.env.AZURE_POSTGRESQL_TENANTID;
// const clientId = process.env.AZURE_POSTGRESQL_CLIENTID;
// const clientSecret = process.env.AZURE_POSTGRESQL_CLIENTSECRET;
// const credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
// Acquire the access token.
var accessToken = await credential.getToken('https://ossrdbms-aad.database.windows.net/.default');
// Use the token and the connection information from the environment variables added by Service Connector to establish the connection.
(async () => {
const client = new Client({
host: process.env.AZURE_POSTGRESQL_HOST,
user: process.env.AZURE_POSTGRESQL_USER,
password: accesstoken.token,
database: process.env.AZURE_POSTGRESQL_DATABASE,
port: Number(process.env.AZURE_POSTGRESQL_PORT) ,
ssl: process.env.AZURE_POSTGRESQL_SSL
});
await client.connect();
await client.end();
})();
PHP esetén nincs beépülő modul vagy kódtár a jelszó nélküli kapcsolatokhoz. Lekérhet egy hozzáférési jogkivonatot a felügyelt identitáshoz vagy szolgáltatásnévhez, és jelszóként használhatja az adatbázishoz való csatlakozáshoz. A hozzáférési jogkivonat az Azure REST API-val szerezhető be.
Kódban kérje le a hozzáférési jogkivonatot a REST API-val a kedvenc kódtárával.
A felhasználó által hozzárendelt identitás és a rendszer által hozzárendelt identitás esetében az Azure App Service és az Azure Container Apps egy belsőleg elérhető REST-végpontot biztosít a felügyelt identitások jogkivonatainak lekéréséhez két környezeti változó definiálásával: IDENTITY_ENDPOINT és IDENTITY_HEADER. További információkért lásd a REST-végpontok hivatkozását.
A hozzáférési jogkivonat lekéréséhez http GET kérést kell küldenie az identitásvégponthoz, és a lekérdezéshez hasonlóan https://ossrdbms-aad.database.windows.net kell használniaresource. A felhasználó által hozzárendelt identitáshoz adja meg a Service Connector által a lekérdezésben hozzáadott környezeti változók ügyfél-azonosítóját is.
A szolgáltatásnév esetében tekintse meg az Azure AD szolgáltatás–szolgáltatás hozzáférési jogkivonat-kérését a hozzáférési jogkivonat megszerzésének részleteiért. A POST kérést a Service Connector által hozzáadott környezeti változókból állítsa be a szolgáltatásnév bérlőazonosítójával https://ossrdbms-aad.database.windows.net/.default , ügyfélazonosítójával és ügyféltitkával.
Kombinálja a hozzáférési jogkivonatot és a PostgreSQL kapcsolati sztringet a Service Connector szolgáltatás által hozzáadott környezeti változókból a kapcsolat létrehozásához.
<?php
$conn_string = sprintf("%s password=", getenv('AZURE_POSTGRESQL_CONNECTIONSTRING'), $access_token);
$dbconn = pg_connect($conn_string);
?>
Ruby esetében nincs beépülő modul vagy kódtár a jelszó nélküli kapcsolatokhoz. Lekérhet egy hozzáférési jogkivonatot a felügyelt identitáshoz vagy szolgáltatásnévhez, és jelszóként használhatja az adatbázishoz való csatlakozáshoz. A hozzáférési jogkivonat az Azure REST API-val szerezhető be.
Telepítse a függőségeket.
gem install pg
Kódban kérje le a hozzáférési jogkivonatot a REST API és a PostgreSQL kapcsolati adataival a Service Connector szolgáltatás által hozzáadott környezeti változókból. Egyesítse őket a kapcsolat létrehozásához. Az alábbi kód használatakor bontsa ki a kódrészlet azon részét, amely a használni kívánt hitelesítési típushoz tartozik.
Az Azure App Service és az Azure Container Apps egy belsőleg elérhető REST-végpontot biztosít a felügyelt identitások jogkivonatainak lekéréséhez. További információkért lásd a REST-végpontok hivatkozását.
require 'pg'
require 'dotenv/load'
require 'net/http'
require 'json'
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned identity.
# uri = URI(ENV['IDENTITY_ENDPOINT'] + '?resource=https://ossrdbms-aad.database.windows.net&api-version=2019-08-01')
# res = Net::HTTP.get_response(uri, {'X-IDENTITY-HEADER' => ENV['IDENTITY_HEADER'], 'Metadata' => 'true'})
# For user-assigned identity.
# uri = URI(ENV[IDENTITY_ENDPOINT] + '?resource=https://ossrdbms-aad.database.windows.net&api-version=2019-08-01&client_id=' + ENV['AZURE_POSTGRESQL_CLIENTID'])
# res = Net::HTTP.get_response(uri, {'X-IDENTITY-HEADER' => ENV['IDENTITY_HEADER'], 'Metadata' => 'true'})
# For service principal
# uri = URI('https://login.microsoftonline.com/' + ENV['AZURE_POSTGRESQL_TENANTID'] + '/oauth2/v2.0/token')
# params = {
# :grant_type => 'client_credentials',
# :client_id: => ENV['AZURE_POSTGRESQL_CLIENTID'],
# :client_secret => ENV['AZURE_POSTGRESQL_CLIENTSECRET'],
# :scope => 'https://ossrdbms-aad.database.windows.net/.default'
# }
# req = Net::HTTP::POST.new(uri)
# req.set_form_data(params)
# req['Content-Type'] = 'application/x-www-form-urlencoded'
# res = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => true) do |http|
# http.request(req)
parsed = JSON.parse(res.body)
access_token = parsed["access_token"]
# Use the token and the connection string from the environment variables added by Service Connector to establish the connection.
conn = PG::Connection.new(
connection_string: ENV['AZURE_POSTGRESQL_CONNECTIONSTRING'] + " password=" + access_token,
)
A szolgáltatásnév hozzáférési jogkivonatának beszerzéséről az Azure AD szolgáltatásközi hozzáférési jogkivonat-kérésében olvashat bővebben.
Ezután, ha a Service Connector használata előtt táblákat és szekvenciákat hozott létre a Rugalmas PostgreSQL-kiszolgálón, tulajdonosként kell csatlakoznia, és engedélyt kell adnia a Service Connector általi létrehozásra <aad-username> . A Service Connector által beállított kapcsolati sztring vagy konfigurációs csoport felhasználónevének a következőképpen aad_<connection name>kell kinéznie. Ha az Azure Portalt használja, válassza az oszlop melletti Service Type kibontás gombot, és kérje le az értéket. Ha az Azure CLI-t használja, ellenőrizze configurations a PARANCSSOR parancs kimenetét.
Ezután hajtsa végre a lekérdezést az engedély megadásához
az extension add --name rdbms-connect
az postgres flexible-server execute -n <postgres-name> -u <owner-username> -p "<owner-password>" -d <database-name> --querytext "GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO \"<aad-username>\";GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO \"<aad username>\";"
A <owner-username> meglévő tábla tulajdonosa, <owner-password> amely engedélyeket adhat másoknak.
<aad-username> a Service Connector által létrehozott felhasználó. Cserélje le őket a tényleges értékre.
Ellenőrizze az eredményt a következő paranccsal:
az postgres flexible-server execute -n <postgres-name> -u <owner-username> -p "<owner-password>" -d <database-name> --querytext "SELECT distinct(table_name) FROM information_schema.table_privileges WHERE grantee='<aad-username>' AND table_schema='public';" --output table
Következő lépések
A Service Connectorról az alábbi oktatóanyagok alapján tájékozódhat.