Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A rendszer által hozzárendelt és a felhasználó által hozzárendelt felügyelt identitásokkal is hitelesítheti magát egy rugalmas Azure Database for PostgreSQL-kiszolgálópéldányon. Ez a cikk bemutatja, hogyan használhat rendszer által hozzárendelt felügyelt identitást egy Azure-beli virtuális géphez (VM) egy rugalmas Azure Database for PostgreSQL-kiszolgálópéldány eléréséhez. A felügyelt identitásokat az Azure automatikusan felügyeli, és lehetővé teszi a Microsoft Entra-hitelesítést támogató szolgáltatások hitelesítését anélkül, hogy hitelesítő adatokat kellene beszúrnia a kódba.
Megtudhatja, hogyan:
- Adjon hozzáférést a virtuális gépnek egy rugalmas Azure Database for PostgreSQL-kiszolgálópéldányhoz.
- Hozzon létre egy felhasználót az adatbázisban, amely a virtuális gép rendszer által hozzárendelt identitását jelöli.
- Szerezze be a hozzáférési jogkivonatot a virtuálisgép-identitással, és használja egy rugalmas Azure Database for PostgreSQL-kiszolgálópéldány lekérdezéséhez.
- Implementálja a jogkivonat-lekérést egy C# példaalkalmazásban.
Előfeltételek
- Ha nem ismeri az Azure-erőforrások felügyelt identitásainak funkcióját, tekintse meg ezt az áttekintést. Ha nem rendelkezik Azure-fiókkal, a folytatás előtt regisztráljon egy ingyenes fiókra .
- A szükséges erőforrás-létrehozás és szerepkör-kezelés végrehajtásához a fióknak "Tulajdonos" engedélyre van szüksége a megfelelő hatókörben (az előfizetésben vagy az erőforráscsoportban). Ha segítségre van szüksége egy szerepkör-hozzárendeléshez, olvassa el az Azure-szerepkörök hozzárendelése az Azure-előfizetés erőforrásaihoz való hozzáférés kezeléséhez című témakört.
- Szüksége van egy Azure-beli virtuális gépre (például Ubuntu Linux futtatására), amelyet használni szeretne az adatbázis felügyelt identitással való eléréséhez
- Rugalmas Azure Database for PostgreSQL-kiszolgálópéldányra van szüksége, amely konfigurálta a Microsoft Entra-hitelesítést
- A C#-példa követéséhez először töltse ki a C# használatával való csatlakozásról szóló útmutatót
Rendszer által hozzárendelt felügyelt identitás létrehozása a virtuális géphez
Az az vm identity assign with the identity assign command lehetővé teszi a rendszer által hozzárendelt identitást egy meglévő virtuális gép számára:
az vm identity assign -g myResourceGroup -n myVm
Kérje le a rendszer által hozzárendelt felügyelt identitás alkalmazásazonosítóját, amelyre a következő néhány lépésben szüksége lesz:
# Get the client ID (application ID) of the system-assigned managed identity
az ad sp list --display-name vm-name --query [*].appId --out tsv
Azure Database for PostgreSQL-felhasználó létrehozása a felügyelt identitáshoz
Most csatlakozzon Microsoft Entra rendszergazdai felhasználóként a rugalmas Azure Database for PostgreSQL-kiszolgálóadatbázishoz, és futtassa a következő SQL-utasításokat azon erőforrások nevére cserélve <identity_name> , amelyekhez rendszer által hozzárendelt felügyelt identitást hozott létre:
Vegye figyelembe , hogy pgaadauth_create_principal a Postgres-adatbázisban kell futnia.
select * from pgaadauth_create_principal('<identity_name>', false, false);
A siker a következőképpen néz ki:
pgaadauth_create_principal
-----------------------------------
Created role for "<identity_name>"
(1 row)
A Microsoft Entra ID-kompatibilis adatbázis-szerepkörök kezelésével kapcsolatos további információkért lásd: Microsoft Entra-szerepkörök kezelése az Azure Database for PostgreSQL-ben.
A felügyelt identitás mostantól hozzáféréssel rendelkezik, amikor az identitásnévvel szerepkörnévként, jelszóként pedig a Microsoft Entra-jogkivonattal hitelesíti az identitást.
Megjegyzés:
Ha a felügyelt identitás érvénytelen, a rendszer hibát ad vissza: ERROR: Could not validate AAD user <ObjectId> because its name is not found in the tenant. [...].
Ha a "Nincs függvény egyezés..." hibaüzenet jelenik meg, győződjön meg arról, hogy az postgres adatbázishoz csatlakozik, nem pedig egy másik, szintén létrehozott adatbázishoz.
A hozzáférési jogkivonat lekérése az Azure Instance Metadata szolgáltatásból
Az alkalmazás mostantól lekérhet egy hozzáférési jogkivonatot az Azure Instance Metadata szolgáltatásból, és használhatja az adatbázissal való hitelesítéshez.
Ez a jogkivonat-lekérés a következő paraméterekre HTTP irányuló kéréssel és átadással történikhttp://169.254.169.254/metadata/identity/oauth2/token:
api-version=2018-02-01resource=https://ossrdbms-aad.database.windows.net-
client_id=CLIENT_ID(amelyet korábban lekért)
Egy mezőt tartalmazó access_token JSON-eredményt kap vissza – ez a hosszú szöveges érték a felügyelt identitás hozzáférési jogkivonata, amelyet jelszóként kell használnia az adatbázishoz való csatlakozáskor.
Tesztelési célokra a következő parancsokat futtathatja a rendszerhéjban.
Megjegyzés:
Vegye figyelembe, hogy a szükséges , curlés az jq ügyfél telepítve vanpsql.
# Retrieve the access token
export PGPASSWORD=`curl -s 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fossrdbms-aad.database.windows.net&client_id=CLIENT_ID' -H Metadata:true | jq -r .access_token`
# Connect to the database
psql -h SERVER --user USER DBNAME
Most már csatlakozik a korábban konfigurált adatbázishoz.
Csatlakozás felügyelt identitással
Ez a szakasz bemutatja, hogyan szerezhet be hozzáférési tokent egy virtuális gép felhasználó által hozzárendelt felügyelt identitásával, és hogyan használhatja azt egy rugalmas Azure Database for PostgreSQL-kiszolgálópéldány meghívásához. Az Azure Database for PostgreSQL natív módon támogatja a Microsoft Entra-hitelesítést, így közvetlenül elfogadhatja az Azure-erőforrásokhoz tartozó felügyelt identitásokkal beszerzett hozzáférési jogkivonatokat. Amikor kapcsolatot hoz létre egy Azure Database for PostgreSQL-hez, a jelszó mezőben adja át az access tokent.
Csatlakozás felügyelt identitással a Pythonban
Egy Python-kód példájáért tekintse meg a rövid útmutatót: Adatok csatlakoztatása és lekérdezése a Python használatával az Azure Database for PostgreSQL-ben
Csatlakozás felügyelt identitással Java-ban
Egy Java-kód példájáért tekintse meg a rövid útmutatót: Java és JDBC használata az Azure Database for PostgreSQL-lel
Csatlakozás felügyelt identitással a C-ben#
Íme egy .NET-kód példa egy rugalmas Azure Database for PostgreSQL-kiszolgálópéldányhoz való csatlakozás hozzáférési jogkivonat használatával történő megnyitására. Ennek a kódnak a virtuális gépen kell futnia ahhoz, hogy a rendszer által hozzárendelt felügyelt identitással szerezze be a hozzáférési jogkivonatot a Microsoft Entra-azonosítóból. Cserélje le a HOST, a USER (a <identity_name>) és DATABASEa .
using Azure.Identity;
using Npgsql;
using System;
class Program
{
static void Main(string[] args)
{
try
{
// Obtain an access token using the system-assigned managed identity
var tokenCredential = new DefaultAzureCredential();
var accessToken = tokenCredential.GetToken(
new Azure.Core.TokenRequestContext(new[] { "https://ossrdbms-aad.database.windows.net/.default" })
);
// Build the connection string
string host = "your-server-name.postgres.database.azure.com"; // Replace with your flexible server's host
string database = "your-database-name"; // Replace with your database name
string user = "<identity_name>"; // Replace with your identity name (e.g., "myManagedIdentity")
var connectionString = $"Host={host};Database={database};Username={user};Password={accessToken.Token};SSL Mode=Require;Trust Server Certificate=true";
// Open a connection to the database
using var connection = new NpgsqlConnection(connectionString);
connection.Open();
Console.WriteLine("Connection successful!");
// Optional: Perform a simple query
using var command = new NpgsqlCommand("SELECT version();", connection);
using var reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine($"PostgreSQL version: {reader.GetString(0)}");
}
}
catch (Exception ex)
{
Console.WriteLine($"An error occurred: {ex.Message}");
}
}
}
A következő helyőrzőket kell kitöltenie:
- Cserélje le a 'your-server-name.postgres.database.azure.com' részt a példánya hosztnevére.
- FELHASZNÁLÓ: Cserélje le <a identity_name> a felügyelt identitás nevére.
-
DATABASE: Cserélje le az adatbázis nevét az Azure Database for PostgreSQL-példány nevére. - Microsoft Entra-hitelesítés: A kód a virtuális gép rendszer által hozzárendelt felügyelt identitásával kéri le a hozzáférési jogkivonatot a Microsoft Entra-azonosítóból.
Futtatáskor ez a parancs a következőhöz hasonló kimenetet ad:
Getting access token from Azure AD...
Opening connection using access token...
Connected!
Postgres version: PostgreSQL 11.11, compiled by Visual C++ build 1800, 64-bit