Microsoft Entra ID en systeemeigen PostgreSQL-rollen gebruiken voor verificatie met Azure Cosmos DB for PostgreSQL
VAN TOEPASSING OP: Azure Cosmos DB for PostgreSQL (mogelijk gemaakt door de Citus-database-extensie naar PostgreSQL)
In dit artikel configureert u verificatiemethoden voor Azure Cosmos DB voor PostgreSQL. U beheert microsoft Entra ID-beheerders en systeemeigen PostgreSQL-rollen voor verificatie met Azure Cosmos DB for PostgreSQL. U leert ook hoe u een Microsoft Entra ID-token gebruikt met Azure Cosmos DB for PostgreSQL.
Er wordt een Azure Cosmos DB for PostgreSQL-cluster gemaakt met één ingebouwde PostgreSQL-rol met de naam citus. U kunt meer systeemeigen PostgreSQL-rollen toevoegen nadat het inrichten van clusters is voltooid.
U kunt ook Microsoft Entra ID-verificatie (voorheen Azure Active Directory) configureren voor Azure Cosmos DB voor PostgreSQL. U kunt Microsoft Entra ID-verificatie inschakelen in plaats van de systeemeigen PostgreSQL-verificatie in uw cluster. U kunt verificatiemethoden die zijn ingeschakeld op het cluster op elk moment wijzigen nadat het cluster is ingericht. Wanneer Microsoft Entra ID-verificatie is ingeschakeld, kunt u meerdere Microsoft Entra ID-gebruikers toevoegen aan een Azure Cosmos DB for PostgreSQL-cluster en deze beheerders maken. Microsoft Entra ID-gebruiker kan een gebruiker of een service-principal zijn.
Verificatiemethode kiezen
U moet Azure Portal gebruiken om verificatiemethoden te configureren in een Azure Cosmos DB for PostgreSQL-cluster.
Voltooi de volgende items in uw Azure Cosmos DB for PostgreSQL-cluster om Microsoft Entra ID-verificatie en systeemeigen PostgreSQL-verificatie in of uit te schakelen.
- Kies op de clusterpagina, onder de kop Clusterbeheer, Verificatie om opties voor verificatiebeheer te openen.
- Kies in de sectie Verificatiemethoden alleen PostgreSQL-verificatie, Microsoft Entra ID-verificatie of PostgreSQL- en Microsoft Entra ID-verificatie als verificatiemethode op basis van uw vereisten.
Zodra u klaar bent, gaat u verder met het configureren van Microsoft Entra ID-verificatie of het toevoegen van systeemeigen PostgreSQL-rollen op dezelfde verificatiepagina .
Microsoft Entra ID-verificatie configureren
Vereisten
Gebruikers moeten zich kunnen aanmelden bij Azure Cosmos DB for PostgreSQL in de Microsoft Entra ID-tenant. Deze stappen moeten eenmaal worden uitgevoerd voor de Microsoft Entra ID-tenant die wordt gebruikt voor verificatie in Azure Cosmos DB voor PostgreSQL-clusters.
Belangrijk
Microsoft Entra ID-tenantbeheerdersmachtigingen zijn nodig om de wijziging aan te brengen. Zie de richtlijnen voor het oplossen van problemen met machtigingen.
- Zoek in Azure Portal naar 'Microsoft Entra ID'.
- Open de service 'Microsoft Entra ID'.
- Zoek op de overzichtspagina van de Microsoft Entra ID-service in de sectie Overzicht naar de toepassings-id b4fa09d8-5da5-4352-83d9-05c2a44cf431.
- Kies 'Azure Cosmos DB for PostgreSQL AAD Authentication' in de zoekresultaten.
- Kies de pagina Eigenschappen in de bedrijfstoepassing Azure Cosmos DB for PostgreSQL AAD Authentication.
- Stel Ingeschakeld in voor gebruikers om zich aan te melden? op Ja en sla de wijziging op.
Notitie
Voor het bewerken van de eigenschappen van de bedrijfstoepassing, zoals 'Ingeschakeld voor gebruikers om zich aan te melden', zijn machtigingen vereist die zijn verleend aan een rol met bevoegdheden voor het bijwerken van bedrijfstoepassingseigenschappen. Rollen, zoals de eigenaar van de bedrijfstoepassing, moeten beschikken over de machtiging 'Eigenschappen van bedrijfstoepassing bijwerken' . Zie Microsoft Entra least privileged roles by task - Enterprise applications voor meer informatie.
Microsoft Entra ID-beheerders toevoegen aan een Azure Cosmos DB for PostgreSQL-cluster
Volg deze stappen op de pagina Verificatie om Microsoft Entra ID-rollen toe te voegen aan of te verwijderen uit het cluster:
- Selecteer Microsoft Entra ID-beheerders toevoegen in de sectie Verificatie van Microsoft Entra-id's.
- Selecteer in het deelvenster Microsoft Entra ID-beheerders een of meer geldige Microsoft Entra ID-gebruiker of ondernemingstoepassing in de huidige AD-tenant als beheerder van Microsoft Entra ID in uw Azure Cosmos DB for PostgreSQL-cluster.
- Gebruik Selecteren om uw keuze te bevestigen.
- Selecteer Opslaan op de werkbalk op de pagina Verificatie om wijzigingen op te slaan of door te gaan met het toevoegen van systeemeigen PostgreSQL-rollen.
Systeemeigen PostgreSQL-verificatie configureren
Volg deze stappen op de pagina Verificatie om Postgres-rollen toe te voegen aan het cluster:
- Selecteer postgreSQL-rol toevoegen in de sectie PostgreSQL-verificatie.
- Voer de rolnaam en het wachtwoord in. Selecteer Opslaan.
- Selecteer Opslaan op de werkbalk op de pagina Verificatie om wijzigingen op te slaan of ga verder met het toevoegen van beheerdersgebruikers van Microsoft Entra ID.
De systeemeigen PostgreSQL-gebruiker wordt gemaakt op het coördinatorknooppunt van het cluster en doorgegeven aan alle werkknooppunten. Rollen die zijn gemaakt via Azure Portal hebben het kenmerk LOGIN, wat betekent dat ze echte gebruikers zijn die zich kunnen aanmelden bij de database.
Verbinding maken met Azure Cosmos for PostgreSQL met behulp van Microsoft Entra ID-verificatie
Microsoft Entra ID-integratie werkt met standaard PostgreSQL-clienthulpprogramma's zoals psql, die niet op de hoogte zijn van Microsoft Entra-id en ondersteuning bieden voor het opgeven van de gebruikersnaam en het wachtwoord wanneer u verbinding maakt met PostgreSQL. In dergelijke gevallen wordt het Microsoft Entra ID-token doorgegeven als het wachtwoord.
We hebben de volgende clients getest:
- psql-opdrachtregel: gebruik de
PGPASSWORD
variabele om het token door te geven. - Andere clients op basis van libpq: voorbeelden zijn algemene toepassingsframeworks en object-relationele mappers (ORM's).
- pgAdmin: Wis Nu verbinding maken bij het maken van de server.
Gebruik de volgende procedures om te verifiëren met Microsoft Entra ID als een Azure Cosmos DB for PostgreSQL-gebruiker. U kunt meegaan in Azure Cloud Shell, op een virtuele Azure-machine of op uw lokale computer.
Aanmelden bij het Azure-abonnement van de gebruiker
Begin met verificatie met Microsoft Entra ID met behulp van de Azure CLI. Deze stap is niet vereist in Azure Cloud Shell.
az login
Met de opdracht wordt een browservenster geopend op de verificatiepagina van Microsoft Entra ID. Hiervoor moet u uw Microsoft Entra ID-gebruikersnaam en -wachtwoord opgeven.
De naam van het gebruikersaccount dat u gebruikt voor verificatie (bijvoorbeeld user@tenant.onmicrosoft.com) is de naam waarvoor het toegangstoken wordt gegenereerd in de volgende stap.
Het Microsoft Entra ID-toegangstoken ophalen
Gebruik de Azure CLI om een toegangstoken te verkrijgen voor de geverifieerde Microsoft Entra-id voor toegang tot Azure Cosmos for PostgreSQL. Hier volgt een voorbeeld:
az account get-access-token --resource https://token.postgres.cosmos.azure.com
Nadat de verificatie is geslaagd, retourneert Microsoft Entra-id een toegangstoken voor het huidige Azure-abonnement:
{
"accessToken": "[TOKEN]",
"expiresOn": "[expiration_date_and_time]",
"subscription": "[subscription_id]",
"tenant": "[tenant_id]",
"tokenType": "Bearer"
}
Het TOKEN is een Base64-tekenreeks. Het codeert alle informatie over de geverifieerde gebruiker en is gekoppeld aan de Azure Cosmos DB for PostgreSQL-service. Het token is minimaal 5 minuten geldig met het maximum van 90 minuten. De expiresOn definieert de werkelijke verlooptijd van het token.
Een token gebruiken als wachtwoord voor aanmelding met client psql
Wanneer u verbinding maakt, kunt u het toegangstoken het beste gebruiken als het PostgreSQL-gebruikerswachtwoord.
Tijdens het gebruik van de psql-opdrachtregelclient moet het toegangstoken worden doorgegeven via de PGPASSWORD
omgevingsvariabele. De reden hiervoor is dat het toegangstoken de wachtwoordlengte overschrijdt die psql rechtstreeks kan accepteren.
Hier volgt een Windows-voorbeeld:
set PGPASSWORD=<TOKEN value from the previous step>
$env:PGPASSWORD='<TOKEN value from the previous step>'
Hier volgt een Voorbeeld van Linux/macOS:
export PGPASSWORD=<TOKEN value from the previous step>
U kunt de vorige twee stappen ook combineren met behulp van opdrachtvervanging. Het ophalen van tokens kan worden ingekapseld in een variabele en rechtstreeks worden doorgegeven als een waarde voor PGPASSWORD
de omgevingsvariabele:
export PGPASSWORD=$(az account get-access-token --resource https://token.postgres.cosmos.azure.com --query "[accessToken]" -o tsv)
Notitie
Zorg ervoor dat de variabele PGPASSWORD is ingesteld op het toegangstoken voor Microsoft Entra ID voor uw abonnement voor Microsoft Entra ID-verificatie. Als u Postgres-rolverificatie wilt uitvoeren vanuit dezelfde sessie, kunt u PGPASSWORD instellen op het Postgres-rolwachtwoord of de waarde van de PGPASSWORD-variabele wissen om het wachtwoord interactief in te voeren. Verificatie mislukt met de verkeerde waarde in PGPASSWORD.
U kunt nu een verbinding met Azure Cosmos DB for PostgreSQL initiëren met behulp van het Microsoft Entra ID-gebruikersaccount waarvoor het toegangstoken is gegenereerd. U doet dit zoals gewoonlijk met het gebruikersaccount als de gebruiker en zonder wachtwoordparameter in de opdrachtregel:
psql "host=mycluster.[uniqueID].postgres.cosmos.azure.com user=user@tenant.onmicrosoft.com dbname=[db_name] sslmode=require"
Een token gebruiken als wachtwoord voor aanmelding met PgAdmin
Voer de volgende stappen uit om verbinding te maken met behulp van een Microsoft Entra ID-token met PgAdmin:
- Wis de optie Nu verbinding maken bij het maken van de server.
- Voer de servergegevens in op het tabblad Verbinding en sla deze op.
- Zorg ervoor dat een geldige Microsoft Entra ID-gebruiker is opgegeven in gebruikersnaam.
- Selecteer Verbinding maken met server in het menu pgAdmin-object.
- Voer het wachtwoord voor het Microsoft Entra ID-token in wanneer u hierom wordt gevraagd.
Hier volgen enkele belangrijke overwegingen wanneer u verbinding maakt:
user@tenant.onmicrosoft.com
is de naam van de Microsoft Entra ID-gebruiker.- Zorg ervoor dat u de exacte manier gebruikt waarop de Azure-gebruiker is gespeld. Microsoft Entra ID-gebruikers- en groepsnamen zijn hoofdlettergevoelig.
- Als de naam spaties bevat, gebruikt u een backslash (
\
) voor elke spatie om deze te escapen. - De geldigheid van het toegangstoken is 5 minuten tot 90 minuten. U moet het toegangstoken ophalen voordat u de aanmelding bij Azure Cosmos for PostgreSQL start.
U bent nu geverifieerd bij uw Azure Cosmos for PostgreSQL-server via Microsoft Entra ID-verificatie.
Systeemeigen PostgreSQL-rollen beheren
Wanneer systeemeigen PostgreSQL-verificatie is ingeschakeld op het cluster, kunt u naast de ingebouwde 'citus'-rol Postgres-rollen toevoegen en verwijderen. U kunt ook het wachtwoord opnieuw instellen en Postgres-bevoegdheden voor systeemeigen rollen wijzigen.
Een systeemeigen PostgreSQL-gebruikersrol verwijderen of hun wachtwoord wijzigen
Als u een gebruiker wilt bijwerken, gaat u naar de pagina Verificatie voor uw cluster en selecteert u het beletselteken ... naast de gebruiker. Het beletselteken opent een menu om de gebruiker te verwijderen of het wachtwoord opnieuw in te stellen.
De citus
rol is bevoegd en kan niet worden verwijderd. De citus
rol wordt echter uitgeschakeld als alleen verificatiemethode voor Microsoft Entra-id's is geselecteerd voor het cluster.
Bevoegdheden voor gebruikersrollen wijzigen
Nieuwe gebruikersrollen worden vaak gebruikt om databasetoegang met beperkte bevoegdheden te bieden. Als u gebruikersbevoegdheden wilt wijzigen, gebruikt u standaard PostgreSQL-opdrachten met behulp van een hulpprogramma zoals PgAdmin of psql. Zie Verbinding maken met een cluster voor meer informatie.
Als u bijvoorbeeld Wilt toestaan dat PostgreSQL db_user
kan lezen mytable
, verleent u de volgende machtiging:
GRANT SELECT ON mytable TO db_user;
Als u dezelfde machtigingen wilt verlenen aan de rol user@tenant.onmicrosoft.com
Microsoft Entra ID, gebruikt u de volgende opdracht:
GRANT SELECT ON mytable TO "user@tenant.onmicrosoft.com";
Azure Cosmos DB for PostgreSQL geeft grant-instructies met één tabel door via het hele cluster en past deze toe op alle werkknooppunten. Het geeft ook GRANT's door die systeembreed zijn (bijvoorbeeld voor alle tabellen in een schema):
-- applies to the coordinator node and propagates to worker nodes for Postgres role db_user
GRANT SELECT ON ALL TABLES IN SCHEMA public TO db_user;
Of voor de rol Microsoft Entra-id
-- applies to the coordinator node and propagates to worker nodes for Azure AD role user@tenant.onmicrosoft.com
GRANT SELECT ON ALL TABLES IN SCHEMA public TO "user@tenant.onmicrosoft.com";