hizmet bağlayıcısı ile PostgreSQL için Azure Veritabanı tümleştirme
Makale
Bu sayfada desteklenen kimlik doğrulama yöntemleri ve istemcileri gösterilir ve Service Connector kullanarak PostgreSQL için Azure Veritabanı diğer bulut hizmetlerine bağlamak için kullanabileceğiniz örnek kod gösterilir. Hizmet Bağlayıcısı'nı kullanmadan diğer programlama dillerindeki PostgreSQL için Azure Veritabanı bağlanabilirsiniz. Bu sayfada, hizmet bağlantısını oluştururken elde ettiğiniz varsayılan ortam değişkeni adları ve değerleri (veya Spring Boot yapılandırması) da gösterilir.
Desteklenen işlem hizmetleri
Hizmet Bağlayıcısı, aşağıdaki işlem hizmetlerini PostgreSQL için Azure Veritabanı bağlamak için kullanılabilir:
Azure App Service
Azure Container Apps
Azure İşlevleri
Azure Kubernetes Service (AKS)
Azure Spring Apps
Desteklenen kimlik doğrulama türleri ve istemci türleri
Aşağıdaki tabloda, hizmet bağlayıcısını kullanarak işlem hizmetinizi PostgreSQL için Azure Veritabanı bağlamak için hangi kimlik doğrulama yöntemlerinin ve istemcilerinin desteklendiği gösterilmektedir. "Evet", birleşimin desteklendiğini, "Hayır" ise bunun desteklenmediğini gösterir.
İstemci türü
Sistem tarafından atanan yönetilen kimlik
Kullanıcı tarafından atanan yönetilen kimlik
Gizli dizi/bağlantı dizesi
Hizmet sorumlusu
.NET
Yes
Evet
Evet
Yes
Go (pg)
Yes
Evet
Evet
Yes
Java (JDBC)
Yes
Evet
Evet
Yes
Java - Spring Boot (JDBC)
Yes
Evet
Evet
Yes
Node.js (pg)
Yes
Evet
Evet
Yes
PHP (yerel)
Yes
Evet
Evet
Yes
Python (psycopg2)
Yes
Evet
Evet
Yes
Python-Django
Yes
Evet
Evet
Yes
Ruby (ruby-pg)
Yes
Evet
Evet
Yes
Hiçbiri
Yes
Evet
Evet
Yes
Bu tablo, tablodaki tüm istemci türlerinin ve kimlik doğrulama yöntemlerinin bileşimlerinin desteklendiğini gösterir. Tüm istemci türleri, Service Connector kullanarak PostgreSQL için Azure Veritabanı bağlanmak için kimlik doğrulama yöntemlerinden herhangi birini kullanabilir.
Not
Sistem tarafından atanan yönetilen kimlik, Kullanıcı tarafından atanan yönetilen kimlik ve Hizmet sorumlusu yalnızca Azure CLI'da desteklenir.
Varsayılan ortam değişkeni adları veya uygulama özellikleri ve örnek kod
İşlem hizmetlerini PostgreSQL için Azure Veritabanı bağlamak için bağlantınızın kimlik doğrulama türüne ve istemci türüne göre aşağıdaki tablolardaki bağlantı ayrıntılarına ve örnek koda başvurun. Adlandırma kuralları hakkında daha fazla bilgi için Hizmet Bağlayıcısı iç bilgileri makalesine bakın.
.NET için parolasız bağlantıları destekleyen bir eklenti veya kitaplık yoktur. Azure.Identity gibi istemci kitaplığını kullanarak yönetilen kimlik veya hizmet sorumlusu için erişim belirteci alabilirsiniz. Ardından veritabanına bağlanmak için parola olarak erişim belirtecini kullanabilirsiniz. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünü açıklamayı kaldırın.
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();
}
pom.xml dosyanıza aşağıdaki bağımlılıkları ekleyin:
Spring uygulaması için seçeneğiyle --client-type springbootbağlantı oluşturursanız, Hizmet Bağlayıcısı , spring.datasource.urlve spring.datasource.username özelliklerini spring.datasource.azure.passwordless-enabledAzure Spring Apps olarak ayarlar.
Azure Spring Apps'te uygulamanıza bir PostgreSQL için Azure Veritabanı bağlama öğreticisini izleyerek uygulamanızı güncelleştirin. Daha önce ayarlanmışsa yapılandırma özelliğini kaldırmayı spring.datasource.password ve Spring uygulamanıza doğru bağımlılıkları eklemeyi unutmayın.
pip install azure-identity
pip install psycopg2-binary
pip freeze > requirements.txt # Save the dependencies to a file
Kitaplığı kullanarak azure-identity erişim belirteci alın ve belirteci parola olarak kullanın. Service Connector tarafından eklenen ortam değişkenlerinden bağlantı bilgilerini alın. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünü açıklamayı kaldırın.
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)
Bağımlılıkları yükleyin.
pip install azure-identity
Hizmet Bağlayıcısı tarafından eklenen ortam değişkenlerini kullanarak kitaplık kullanarak azure-identity erişim belirteci alın. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünü açıklamayı kaldırın.
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')
Dosya ayarlama bölümünde, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden Azure PostgreSQL veritabanı bilgilerini alın. Veritabanına erişmek için önceki adımda alınan öğesini kullanın accessToken .
# 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'},
}
}
Bağımlılıkları yükleyin.
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"
Kodda, kullanarak azidentityerişim belirtecini alın ve ardından Bunu, Service Connector tarafından sağlanan bağlantı bilgileriyle birlikte Azure PostgreSQL'e bağlanmak için parola olarak kullanın. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünü açıklamayı kaldırın.
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()
Kodda kullanarak erişim belirtecini @azure/identity ve Service Connector hizmeti tarafından eklenen ortam değişkenlerinden PostgreSQL bağlantı bilgilerini alın. Bağlantıyı kurmak için bunları birleştirin. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünü açıklamayı kaldırın.
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 için parolasız bağlantılar için bir eklenti veya kitaplık yoktur. Yönetilen kimlik veya hizmet sorumlusu için bir erişim belirteci alabilir ve veritabanına bağlanmak için parola olarak kullanabilirsiniz. Erişim belirteci Azure REST API kullanılarak edinilebilir.
Kodda, sık kullandığınız kitaplıkla REST API kullanarak erişim belirtecini alın.
Kullanıcı tarafından atanan kimlik ve sistem tarafından atanan kimlik için App Service ve Container Apps, iki ortam değişkeni tanımlayarak yönetilen kimlikler için belirteçleri almak üzere dahili olarak erişilebilir bir REST uç noktası sağlar: IDENTITY_ENDPOINT ve IDENTITY_HEADER. Daha fazla bilgi için bkz . REST uç nokta başvurusu.
Kimlik uç noktasına HTTP GET isteğinde bulunarak erişim belirtecini alın ve sorguda olduğu gibi resource kullanınhttps://ossrdbms-aad.database.windows.net. Kullanıcı tarafından atanan kimlik için lütfen sorguya Service Connector tarafından eklenen ortam değişkenlerinden istemci kimliğini de ekleyin.
Bağlantı kurmak için Service Connector hizmeti tarafından eklenen ortam değişkenlerinden erişim belirtecini ve PostgreSQL bağlantı sokmasını birleştirin.
Ruby için parolasız bağlantılar için bir eklenti veya kitaplık yoktur. Yönetilen kimlik veya hizmet sorumlusu için bir erişim belirteci alabilir ve veritabanına bağlanmak için parola olarak kullanabilirsiniz. Erişim belirteci Azure REST API kullanılarak edinilebilir.
Bağımlılıkları yükleyin.
gem install pg
Kodda, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden REST API ve PostgreSQL bağlantı bilgilerini kullanarak erişim belirtecini alın. Bağlantıyı kurmak için bunları birleştirin. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünü açıklamayı kaldırın.
App Service ve kapsayıcı Uygulamaları, yönetilen kimliklere yönelik belirteçleri almak için dahili olarak erişilebilir bir REST uç noktası sağlar. Daha fazla bilgi için bkz . REST uç nokta başvurusu.
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,
)
Diğer diller için, Service Connector'ın veritabanını bağlamak için ortam değişkenlerine ayarlayıp ayarlayacak bağlantı özelliklerini kullanın. Ortam değişkeni ayrıntıları için bkz. PostgreSQL için Azure Veritabanı Service Connector ile tümleştirme.
Ardından, Hizmet Bağlayıcısı'nı kullanmadan önce PostgreSQL esnek sunucusunda tablolar ve diziler oluşturduysanız, sahip olarak bağlanmanız ve Hizmet Bağlayıcısı tarafından oluşturulma izni <aad-username> vermeniz gerekir. Hizmet Bağlayıcısı tarafından ayarlanan bağlantı dizesi veya yapılandırmadaki kullanıcı adı gibi aad_<connection name>görünmelidir. Azure portalını kullanıyorsanız sütunun yanındaki Service Type genişlet düğmesini seçin ve değeri alın. Azure CLI kullanıyorsanız CLI komut çıkışını denetleyin configurations .
Ardından, izin vermek için sorguyu yürütür
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>\";"
<owner-username> ve<owner-password>, başkalarına izin verebilen mevcut tablonun sahibidir. <aad-username> , Service Connector tarafından oluşturulan kullanıcıdır. Bunları gerçek değerle değiştirin.
Sonucu şu komutla doğrulayın:
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
.NET için parolasız bağlantıları destekleyen bir eklenti veya kitaplık yoktur. Azure.Identity gibi istemci kitaplığını kullanarak yönetilen kimlik veya hizmet sorumlusu için erişim belirteci alabilirsiniz. Ardından veritabanına bağlanmak için parola olarak erişim belirtecini kullanabilirsiniz. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünü açıklamayı kaldırın.
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();
}
pom.xml dosyanıza aşağıdaki bağımlılıkları ekleyin:
Spring uygulaması için seçeneğiyle --client-type springbootbağlantı oluşturursanız, Hizmet Bağlayıcısı , spring.datasource.urlve spring.datasource.username özelliklerini spring.datasource.azure.passwordless-enabledAzure Spring Apps olarak ayarlar.
Azure Spring Apps'te uygulamanıza bir PostgreSQL için Azure Veritabanı bağlama öğreticisini izleyerek uygulamanızı güncelleştirin. Daha önce ayarlanmışsa yapılandırma özelliğini kaldırmayı spring.datasource.password ve Spring uygulamanıza doğru bağımlılıkları eklemeyi unutmayın.
pip install azure-identity
pip install psycopg2-binary
pip freeze > requirements.txt # Save the dependencies to a file
Kitaplığı kullanarak azure-identity erişim belirteci alın ve belirteci parola olarak kullanın. Service Connector tarafından eklenen ortam değişkenlerinden bağlantı bilgilerini alın. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünü açıklamayı kaldırın.
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)
Bağımlılıkları yükleyin.
pip install azure-identity
Hizmet Bağlayıcısı tarafından eklenen ortam değişkenlerini kullanarak kitaplık kullanarak azure-identity erişim belirteci alın. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünü açıklamayı kaldırın.
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')
Dosya ayarlama bölümünde, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden Azure PostgreSQL veritabanı bilgilerini alın. Veritabanına erişmek için önceki adımda alınan öğesini kullanın accessToken .
# 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'},
}
}
Bağımlılıkları yükleyin.
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"
Kodda, kullanarak azidentityerişim belirtecini alın ve ardından Bunu, Service Connector tarafından sağlanan bağlantı bilgileriyle birlikte Azure PostgreSQL'e bağlanmak için parola olarak kullanın. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünü açıklamayı kaldırın.
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()
Kodda kullanarak erişim belirtecini @azure/identity ve Service Connector hizmeti tarafından eklenen ortam değişkenlerinden PostgreSQL bağlantı bilgilerini alın. Bağlantıyı kurmak için bunları birleştirin. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünü açıklamayı kaldırın.
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 için parolasız bağlantılar için bir eklenti veya kitaplık yoktur. Yönetilen kimlik veya hizmet sorumlusu için bir erişim belirteci alabilir ve veritabanına bağlanmak için parola olarak kullanabilirsiniz. Erişim belirteci Azure REST API kullanılarak edinilebilir.
Kodda, sık kullandığınız kitaplıkla REST API kullanarak erişim belirtecini alın.
Kullanıcı tarafından atanan kimlik ve sistem tarafından atanan kimlik için App Service ve Container Apps, iki ortam değişkeni tanımlayarak yönetilen kimlikler için belirteçleri almak üzere dahili olarak erişilebilir bir REST uç noktası sağlar: IDENTITY_ENDPOINT ve IDENTITY_HEADER. Daha fazla bilgi için bkz . REST uç nokta başvurusu.
Kimlik uç noktasına HTTP GET isteğinde bulunarak erişim belirtecini alın ve sorguda olduğu gibi resource kullanınhttps://ossrdbms-aad.database.windows.net. Kullanıcı tarafından atanan kimlik için lütfen sorguya Service Connector tarafından eklenen ortam değişkenlerinden istemci kimliğini de ekleyin.
Bağlantı kurmak için Service Connector hizmeti tarafından eklenen ortam değişkenlerinden erişim belirtecini ve PostgreSQL bağlantı sokmasını birleştirin.
Ruby için parolasız bağlantılar için bir eklenti veya kitaplık yoktur. Yönetilen kimlik veya hizmet sorumlusu için bir erişim belirteci alabilir ve veritabanına bağlanmak için parola olarak kullanabilirsiniz. Erişim belirteci Azure REST API kullanılarak edinilebilir.
Bağımlılıkları yükleyin.
gem install pg
Kodda, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden REST API ve PostgreSQL bağlantı bilgilerini kullanarak erişim belirtecini alın. Bağlantıyı kurmak için bunları birleştirin. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünü açıklamayı kaldırın.
App Service ve kapsayıcı Uygulamaları, yönetilen kimliklere yönelik belirteçleri almak için dahili olarak erişilebilir bir REST uç noktası sağlar. Daha fazla bilgi için bkz . REST uç nokta başvurusu.
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,
)
Diğer diller için, Service Connector'ın veritabanını bağlamak için ortam değişkenlerine ayarlayıp ayarlayacak bağlantı özelliklerini kullanın. Ortam değişkeni ayrıntıları için bkz. PostgreSQL için Azure Veritabanı Service Connector ile tümleştirme.
Ardından, Hizmet Bağlayıcısı'nı kullanmadan önce PostgreSQL esnek sunucusunda tablolar ve diziler oluşturduysanız, sahip olarak bağlanmanız ve Hizmet Bağlayıcısı tarafından oluşturulma izni <aad-username> vermeniz gerekir. Hizmet Bağlayıcısı tarafından ayarlanan bağlantı dizesi veya yapılandırmadaki kullanıcı adı gibi aad_<connection name>görünmelidir. Azure portalını kullanıyorsanız sütunun yanındaki Service Type genişlet düğmesini seçin ve değeri alın. Azure CLI kullanıyorsanız CLI komut çıkışını denetleyin configurations .
Ardından, izin vermek için sorguyu yürütür
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>\";"
<owner-username> ve<owner-password>, başkalarına izin verebilen mevcut tablonun sahibidir. <aad-username> , Service Connector tarafından oluşturulan kullanıcıdır. Bunları gerçek değerle değiştirin.
Sonucu şu komutla doğrulayın:
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
Bağlantı Dizesi
Uyarı
Microsoft, kullanılabilir en güvenli kimlik doğrulama akışını kullanmanızı önerir. Bu yordamda açıklanan kimlik doğrulama akışı, uygulamada çok yüksek düzeyde güven gerektirir ve diğer akışlarda mevcut olmayan riskleri taşır. Bu akışı yalnızca yönetilen kimlikler gibi diğer daha güvenli akışlar uygun olmadığında kullanmalısınız.
Kodda, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden PostgreSQL bağlantı dizesi alın. PostgreSQL sunucusu için TSL yapılandırmalarını ayarlamak için şu adımlara bakın.
using System;
using Npgsql;
string connectionString = Environment.GetEnvironmentVariable("AZURE_POSTGRESQL_CONNECTIONSTRING");
using (NpgsqlConnection connection = new NpgsqlConnection(connectionString))
{
connection.Open();
}
Bağımlılıkları yükleyin. pgJDBC'yi yüklemek için yönergeleri izleyin.
Kodda, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden PostgreSQL bağlantı dizesi alın. PostgreSQL sunucusu için TSL yapılandırmalarını ayarlamak için şu adımlara bakın.
Dosyanıza pom.xml aşağıdaki bağımlılıkları ekleyerek Spring Cloud Azure Starter JDBC PostgreSQL modülünü yükleyin. Spring Cloud Azure sürümünü burada bulabilirsiniz.
Spring App uygulaması ayarlama, bu bölümdeki diğer ayrıntılar. PostgreSQL sunucusu için TSL yapılandırmalarını ayarlamak için şu adımlara bakın.
Bağımlılıkları yükleyin. psycopg2'yi yüklemek için yönergeleri izleyin.
Kodda, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden PostgreSQL bağlantı bilgilerini alın. PostgreSQL sunucusu için TSL yapılandırmalarını ayarlamak için şu adımlara bakın.
Bağımlılıkları yükleyin. Django ve psycopg2'yi yüklemek için yönergeleri izleyin.
pip install django
pip install psycopg2
Dosya ayarlama bölümünde, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden PostgreSQL veritabanı bilgilerini alın. PostgreSQL sunucusu için TSL yapılandırmalarını ayarlamak için şu adımlara bakın.
# 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'},
}
}
Bağımlılıkları yükleyin.
go get github.com/lib/pq
Kodda, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden PostgreSQL bağlantı dizesi alın. PostgreSQL sunucusu için TSL yapılandırmalarını ayarlamak için şu adımlara bakın.
Kodda, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden PostgreSQL bağlantı bilgilerini alın. PostgreSQL sunucusu için TSL yapılandırmalarını ayarlamak için şu adımlara bakın.
Kodda, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden PostgreSQL bağlantı bilgilerini alın. PostgreSQL sunucusu için TSL yapılandırmalarını ayarlamak için şu adımlara bakın.
Kodda, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden PostgreSQL bağlantı bilgilerini alın. PostgreSQL sunucusu için TSL yapılandırmalarını ayarlamak için şu adımlara bakın.
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
Diğer diller için, Service Connector'ın veritabanını bağlamak için ortam değişkenlerine ayarlayıp ayarlayacak bağlantı özelliklerini kullanın. Ortam değişkeni ayrıntıları için bkz. PostgreSQL için Azure Veritabanı Service Connector ile tümleştirme.
.NET için parolasız bağlantıları destekleyen bir eklenti veya kitaplık yoktur. Azure.Identity gibi istemci kitaplığını kullanarak yönetilen kimlik veya hizmet sorumlusu için erişim belirteci alabilirsiniz. Ardından veritabanına bağlanmak için parola olarak erişim belirtecini kullanabilirsiniz. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünü açıklamayı kaldırın.
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();
}
pom.xml dosyanıza aşağıdaki bağımlılıkları ekleyin:
Spring uygulaması için seçeneğiyle --client-type springbootbağlantı oluşturursanız, Hizmet Bağlayıcısı , spring.datasource.urlve spring.datasource.username özelliklerini spring.datasource.azure.passwordless-enabledAzure Spring Apps olarak ayarlar.
Azure Spring Apps'te uygulamanıza bir PostgreSQL için Azure Veritabanı bağlama öğreticisini izleyerek uygulamanızı güncelleştirin. Daha önce ayarlanmışsa yapılandırma özelliğini kaldırmayı spring.datasource.password ve Spring uygulamanıza doğru bağımlılıkları eklemeyi unutmayın.
pip install azure-identity
pip install psycopg2-binary
pip freeze > requirements.txt # Save the dependencies to a file
Kitaplığı kullanarak azure-identity erişim belirteci alın ve belirteci parola olarak kullanın. Service Connector tarafından eklenen ortam değişkenlerinden bağlantı bilgilerini alın. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünü açıklamayı kaldırın.
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)
Bağımlılıkları yükleyin.
pip install azure-identity
Hizmet Bağlayıcısı tarafından eklenen ortam değişkenlerini kullanarak kitaplık kullanarak azure-identity erişim belirteci alın. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünü açıklamayı kaldırın.
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')
Dosya ayarlama bölümünde, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden Azure PostgreSQL veritabanı bilgilerini alın. Veritabanına erişmek için önceki adımda alınan öğesini kullanın accessToken .
# 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'},
}
}
Bağımlılıkları yükleyin.
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"
Kodda, kullanarak azidentityerişim belirtecini alın ve ardından Bunu, Service Connector tarafından sağlanan bağlantı bilgileriyle birlikte Azure PostgreSQL'e bağlanmak için parola olarak kullanın. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünü açıklamayı kaldırın.
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()
Kodda kullanarak erişim belirtecini @azure/identity ve Service Connector hizmeti tarafından eklenen ortam değişkenlerinden PostgreSQL bağlantı bilgilerini alın. Bağlantıyı kurmak için bunları birleştirin. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünü açıklamayı kaldırın.
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 için parolasız bağlantılar için bir eklenti veya kitaplık yoktur. Yönetilen kimlik veya hizmet sorumlusu için bir erişim belirteci alabilir ve veritabanına bağlanmak için parola olarak kullanabilirsiniz. Erişim belirteci Azure REST API kullanılarak edinilebilir.
Kodda, sık kullandığınız kitaplıkla REST API kullanarak erişim belirtecini alın.
Kullanıcı tarafından atanan kimlik ve sistem tarafından atanan kimlik için App Service ve Container Apps, iki ortam değişkeni tanımlayarak yönetilen kimlikler için belirteçleri almak üzere dahili olarak erişilebilir bir REST uç noktası sağlar: IDENTITY_ENDPOINT ve IDENTITY_HEADER. Daha fazla bilgi için bkz . REST uç nokta başvurusu.
Kimlik uç noktasına HTTP GET isteğinde bulunarak erişim belirtecini alın ve sorguda olduğu gibi resource kullanınhttps://ossrdbms-aad.database.windows.net. Kullanıcı tarafından atanan kimlik için lütfen sorguya Service Connector tarafından eklenen ortam değişkenlerinden istemci kimliğini de ekleyin.
Bağlantı kurmak için Service Connector hizmeti tarafından eklenen ortam değişkenlerinden erişim belirtecini ve PostgreSQL bağlantı sokmasını birleştirin.
Ruby için parolasız bağlantılar için bir eklenti veya kitaplık yoktur. Yönetilen kimlik veya hizmet sorumlusu için bir erişim belirteci alabilir ve veritabanına bağlanmak için parola olarak kullanabilirsiniz. Erişim belirteci Azure REST API kullanılarak edinilebilir.
Bağımlılıkları yükleyin.
gem install pg
Kodda, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden REST API ve PostgreSQL bağlantı bilgilerini kullanarak erişim belirtecini alın. Bağlantıyı kurmak için bunları birleştirin. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünü açıklamayı kaldırın.
App Service ve kapsayıcı Uygulamaları, yönetilen kimliklere yönelik belirteçleri almak için dahili olarak erişilebilir bir REST uç noktası sağlar. Daha fazla bilgi için bkz . REST uç nokta başvurusu.
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,
)
Diğer diller için, Service Connector'ın veritabanını bağlamak için ortam değişkenlerine ayarlayıp ayarlayacak bağlantı özelliklerini kullanın. Ortam değişkeni ayrıntıları için bkz. PostgreSQL için Azure Veritabanı Service Connector ile tümleştirme.
Ardından, Hizmet Bağlayıcısı'nı kullanmadan önce PostgreSQL esnek sunucusunda tablolar ve diziler oluşturduysanız, sahip olarak bağlanmanız ve Hizmet Bağlayıcısı tarafından oluşturulma izni <aad-username> vermeniz gerekir. Hizmet Bağlayıcısı tarafından ayarlanan bağlantı dizesi veya yapılandırmadaki kullanıcı adı gibi aad_<connection name>görünmelidir. Azure portalını kullanıyorsanız sütunun yanındaki Service Type genişlet düğmesini seçin ve değeri alın. Azure CLI kullanıyorsanız CLI komut çıkışını denetleyin configurations .
Ardından, izin vermek için sorguyu yürütür
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>\";"
<owner-username> ve<owner-password>, başkalarına izin verebilen mevcut tablonun sahibidir. <aad-username> , Service Connector tarafından oluşturulan kullanıcıdır. Bunları gerçek değerle değiştirin.
Sonucu şu komutla doğrulayın:
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
Sonraki adımlar
Service Connector hakkında daha fazla bilgi edinmek için aşağıda listelenen öğreticileri izleyin.