Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Spravované identity přiřazené systémem i uživatelem můžete použít k ověřování v instanci flexibilního serveru Azure Database for PostgreSQL. V tomto článku se dozvíte, jak použít spravovanou identitu přiřazenou systémem pro virtuální počítač Azure pro přístup k instanci flexibilního serveru Azure Database for PostgreSQL. Spravované identity se automaticky spravují v Azure a umožňují ověřování ve službách, které podporují ověřování Microsoft Entra, aniž byste museli do kódu vkládat přihlašovací údaje.
Naučíte se:
- Udělte virtuálnímu počítači přístup k instanci flexibilního serveru Azure Database for PostgreSQL.
- Vytvořte uživatele v databázi, který představuje identitu přiřazenou systémem virtuálního počítače.
- Získejte přístupový token pomocí identity virtuálního počítače a použijte ho k dotazování instance flexibilního serveru Azure Database for PostgreSQL.
- Implementujte načtení tokenu v ukázkové aplikaci jazyka C#.
Požadavky
- Pokud neznáte funkci spravovaných identit pro prostředky Azure, prohlédni si tento přehled. Pokud nemáte účet Azure, před pokračováním si zaregistrujte bezplatný účet .
- K vytvoření požadovaného prostředku a správě rolí váš účet potřebuje oprávnění Vlastník v příslušném oboru (vaše předplatné nebo skupina prostředků). Pokud potřebujete pomoc s přiřazením role, přečtěte si téma Přiřazení rolí Azure ke správě přístupu k prostředkům předplatného Azure.
- Potřebujete virtuální počítač Azure (například s Ubuntu Linuxem), který chcete použít pro přístup k databázi pomocí spravované identity.
- Potřebujete instanci flexibilního serveru Azure Database for PostgreSQL s nakonfigurovaným ověřováním Microsoft Entra .
- Pokud chcete postupovat podle příkladu jazyka C#, nejprve dokončete průvodce připojením pomocí jazyka C#
Vytvoření spravované identity přiřazené systémem pro virtuální počítač
Pomocí příkazu az vm identity assignidentity assign povolíte identitu přiřazenou systémem k existujícímu virtuálnímu počítači:
az vm identity assign -g myResourceGroup -n myVm
Načtěte ID aplikace pro spravovanou identitu přiřazenou systémem, kterou potřebujete v několika dalších krocích:
# Get the client ID (application ID) of the system-assigned managed identity
az ad sp list --display-name vm-name --query [*].appId --out tsv
Vytvořte uživatele pro Azure Database for PostgreSQL ve spravované identitě
Teď se připojte jako uživatel správce Microsoft Entra k flexibilní serverové databázi Azure Database for PostgreSQL a spusťte následující příkazy SQL, přičemž nahraďte <identity_name> názvem prostředků, pro které jste vytvořili spravovanou identitu přiřazenou systémem:
Poznámka : Pgaadauth_create_principal musí být spuštěn v databázi Postgres.
select * from pgaadauth_create_principal('<identity_name>', false, false);
Úspěch vypadá takto:
pgaadauth_create_principal
-----------------------------------
Created role for "<identity_name>"
(1 row)
Další informace o správě databázových rolí s podporou ID Microsoft Entra naleznete v tématu Správa rolí Microsoft Entra ve službě Azure Database for PostgreSQL.
Spravovaná identita teď má přístup při ověřování s názvem identity jako názvem role a tokenem Microsoft Entra jako heslem.
Poznámka:
Pokud spravovaná identita není platná, vrátí se chyba: ERROR: Could not validate AAD user <ObjectId> because its name is not found in the tenant. [...].
Pokud se zobrazí chyba typu Žádná funkce neodpovídá, ujistěte se, že se připojujete k postgres databázi, ne k jiné databázi, kterou jste vytvořili.
Načtení přístupového tokenu ze služby Azure Instance Metadata
Vaše aplikace teď může načíst přístupový token ze služby Azure Instance Metadata a použít ho k ověřování v databázi.
Načtení tohoto tokenu se provádí provedením HTTP požadavku na http://169.254.169.254/metadata/identity/oauth2/token následující parametry a předáním následujících parametrů:
api-version=2018-02-01resource=https://ossrdbms-aad.database.windows.net-
client_id=CLIENT_ID(které jste získali dříve)
Vrátíte výsledek JSON obsahující access_token pole – tato dlouhá textová hodnota je přístupový token spravované identity, který byste měli použít jako heslo při připojování k databázi.
Pro účely testování můžete v prostředí spustit následující příkazy.
Poznámka:
Všimněte si, že potřebujete curl, jqa psql klient nainstalovaný.
# 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
Teď jste připojení k databázi, kterou jste nakonfigurovali dříve.
Připojení pomocí spravované identity
Tato část ukazuje, jak získat přístupový token pomocí spravované identity přiřazené uživatelem virtuálního počítače a jak ho použít k volání instance flexibilního serveru Azure Database for PostgreSQL. Azure Database for PostgreSQL nativně podporuje ověřování Microsoft Entra, takže může přímo přijímat přístupové tokeny získané pomocí spravovaných identit pro prostředky Azure. Při vytváření připojení ke službě Azure Database for PostgreSQL předáte přístupový token do pole hesla.
Připojení pomocí spravované identity v Pythonu
Příklad kódu Pythonu najdete v rychlém startu: Připojení a dotazování dat ve službě Azure Database for PostgreSQL pomocí Pythonu
Připojení pomocí spravované identity v Javě
Příklad kódu v Javě najdete v rychlém startu: Použití Javy a JDBC se službou Azure Database for PostgreSQL
Připojení pomocí spravované identity v jazyce C#
Tady je příklad kódu .NET pro otevření připojení k instanci flexibilního serveru Azure Database for PostgreSQL pomocí přístupového tokenu. Tento kód musí běžet na virtuálním počítači, aby pomocí spravované identity přiřazené systémem získal přístupový token z ID Microsoft Entra. Nahraďte hodnoty HOST, USER (za <identity_name>) a DATABASE.
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}");
}
}
}
Musíte vyplnit následující zástupné symboly:
- HOSTITEL: Nahraďte your-server-name.postgres.database.azure.com názvem hostitele vaší instance.
- UŽIVATEL: Nahraďte <identity_name> názvem vaší spravované identity.
-
DATABASE: Nahraďte název databáze názvem vaší instance Azure Database for PostgreSQL. - Ověřování Microsoft Entra: Kód používá spravovanou identitu přiřazenou systémem virtuálního počítače k načtení přístupového tokenu z Id Microsoft Entra.
Při spuštění tento příkaz zobrazí výstup podobný tomuto:
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