Az Azure Database for PostgreSQL integrálása a Service Connector használatával
Cikk
Ez a lap a támogatott hitelesítési módszereket és ügyfeleket mutatja be, valamint az Azure Database for PostgreSQL szolgáltatással más felhőszolgáltatásokhoz való csatlakoztatásához használható mintakódot. Előfordulhat, hogy a Service Connector használata nélkül más programozási nyelveken is csatlakozhat az Azure Database for PostgreSQL-hez. Ezen a lapon láthatók a környezeti változók alapértelmezett nevei és értékei (vagy a Spring Boot-konfiguráció), amely a szolgáltatáskapcsolat létrehozásakor jelenik meg.
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-alkalmazások
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ásnak 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 (pg)
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
Ez a táblázat azt jelzi, hogy a tábla ügyféltípusainak és hitelesítési módszereinek összes kombinációja támogatott. Minden ügyféltípus a hitelesítési módszerek bármelyikével csatlakozhat az Azure Database for PostgreSQL-hez a Service Connector használatával.
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 számítási szolgáltatások Azure Database for PostgreSQL-hez való csatlakoztatásához hivatkozzon a kapcsolat részleteire és a mintakódra az alábbi táblázatokban 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.
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:
Spring-alkalmazások esetén, ha egy beállítással --client-type springboothoz létre kapcsolatot, a Service Connector beállítja a tulajdonságokat spring.datasource.azure.passwordless-enabled, spring.datasource.urlés spring.datasource.username az Azure Spring Appshez.
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()
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";
const { Client } = require('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;
// 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 App Service és a 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 resource kell használniahttps://ossrdbms-aad.database.windows.net. 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.
Szolgáltatásnév esetén tekintse meg az Azure AD szolgáltatás–szolgáltatás hozzáférési jogkivonat-kérését , és tekintse meg a hozzáférési jogkivonat beszerzésének részleteit. 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.
A kapcsolat létrehozásához kombinálja a hozzáférési jogkivonatot és a PostgreSQL-kapcsolatot a Service Connector szolgáltatás által hozzáadott környezeti változókból.
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 App Service és a 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,
)
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
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:
Spring-alkalmazások esetén, ha egy beállítással --client-type springboothoz létre kapcsolatot, a Service Connector beállítja a tulajdonságokat spring.datasource.azure.passwordless-enabled, spring.datasource.urlés spring.datasource.username az Azure Spring Appshez.
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()
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";
const { Client } = require('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;
// 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 App Service és a 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 resource kell használniahttps://ossrdbms-aad.database.windows.net. 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.
Szolgáltatásnév esetén tekintse meg az Azure AD szolgáltatás–szolgáltatás hozzáférési jogkivonat-kérését , és tekintse meg a hozzáférési jogkivonat beszerzésének részleteit. 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.
A kapcsolat létrehozásához kombinálja a hozzáférési jogkivonatot és a PostgreSQL-kapcsolatot a Service Connector szolgáltatás által hozzáadott környezeti változókból.
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 App Service és a 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,
)
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
Kapcsolati sztring
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.
Kódban kérje le a PostgreSQL-kapcsolati sztring a Service Connector szolgáltatás által hozzáadott környezeti változókból. A PostgreSQL-kiszolgáló TSL-konfigurációinak beállításához tekintse meg ezeket a lépéseket.
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. Kövesse az útmutatást a pgJDBC telepítéséhez.
Kódban kérje le a PostgreSQL-kapcsolati sztring a Service Connector szolgáltatás által hozzáadott környezeti változókból. A PostgreSQL-kiszolgáló TSL-konfigurációinak beállításához tekintse meg ezeket a lépéseket.
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.
Spring App-alkalmazás beállítása, további részletek ebben a szakaszban. A PostgreSQL-kiszolgáló TSL-konfigurációinak beállításához tekintse meg ezeket a lépéseket.
Telepítse a függőségeket. Kövesse az útmutatást a psycopg2 telepítéséhez.
Kódban kérje le a PostgreSQL kapcsolati adatait a Service Connector szolgáltatás által hozzáadott környezeti változókból. A PostgreSQL-kiszolgáló TSL-konfigurációinak beállításához tekintse meg ezeket a lépéseket.
Telepítse a függőségeket. Kövesse az útmutatást a Django és a psycopg2 telepítéséhez.
pip install django
pip install psycopg2
A beállítási fájlban kérje le a PostgreSQL-adatbázis adatait a Service Connector szolgáltatás által hozzáadott környezeti változókból. A PostgreSQL-kiszolgáló TSL-konfigurációinak beállításához tekintse meg ezeket a lépéseket.
# 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 sztring a Service Connector szolgáltatás által hozzáadott környezeti változókból. A PostgreSQL-kiszolgáló TSL-konfigurációinak beállításához tekintse meg ezeket a lépéseket.
Kódban kérje le a PostgreSQL kapcsolati adatait a Service Connector szolgáltatás által hozzáadott környezeti változókból. A PostgreSQL-kiszolgáló TSL-konfigurációinak beállításához tekintse meg ezeket a lépéseket.
Kódban kérje le a PostgreSQL kapcsolati adatait a Service Connector szolgáltatás által hozzáadott környezeti változókból. A PostgreSQL-kiszolgáló TSL-konfigurációinak beállításához tekintse meg ezeket a lépéseket.
Kódban kérje le a PostgreSQL kapcsolati adatait a Service Connector szolgáltatás által hozzáadott környezeti változókból. A PostgreSQL-kiszolgáló TSL-konfigurációinak beállításához tekintse meg ezeket a lépéseket.
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
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:
Spring-alkalmazások esetén, ha egy beállítással --client-type springboothoz létre kapcsolatot, a Service Connector beállítja a tulajdonságokat spring.datasource.azure.passwordless-enabled, spring.datasource.urlés spring.datasource.username az Azure Spring Appshez.
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()
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";
const { Client } = require('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;
// 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 App Service és a 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 resource kell használniahttps://ossrdbms-aad.database.windows.net. 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.
Szolgáltatásnév esetén tekintse meg az Azure AD szolgáltatás–szolgáltatás hozzáférési jogkivonat-kérését , és tekintse meg a hozzáférési jogkivonat beszerzésének részleteit. 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.
A kapcsolat létrehozásához kombinálja a hozzáférési jogkivonatot és a PostgreSQL-kapcsolatot a Service Connector szolgáltatás által hozzáadott környezeti változókból.
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 App Service és a 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,
)
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.