Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Dans cet article, vous allez configurer l’accès à l’ID Microsoft Entra pour l’authentification avec Azure Database pour PostgreSQL. Vous allez également apprendre à utiliser un jeton Microsoft Entra avec une instance de serveur flexible Azure Database pour PostgreSQL.
Vous pouvez configurer l’authentification Microsoft Entra pour une instance de serveur flexible Azure Database pour PostgreSQL soit lors de l'approvisionnement du serveur, soit plus tard. Seuls les utilisateurs administrateurs Microsoft Entra peuvent créer ou activer des utilisateurs pour l’authentification basée sur Microsoft Entra ID. N’utilisez pas l’administrateur Microsoft Entra pour les opérations de base de données régulières, car ce rôle dispose d’autorisations utilisateur élevées (par exemple, CREATEDB).
Vous pouvez avoir plusieurs utilisateurs d’administrateur Microsoft Entra avec Azure Database pour PostgreSQL. Un administrateur Microsoft Entra peut correspondre à un utilisateur, un groupe ou un principal de service.
Prerequisites
- Vous avez besoin d’un compte Azure associé à un abonnement actif. Créez un compte gratuitement.
Configurer les exigences réseau
Microsoft Entra ID est une application multilocataire. Elle a besoin d’une connectivité sortante pour les opérations telles que l’ajout de groupes d’administration Microsoft Entra.
Les exigences de mise en réseau varient selon la topologie :
- Accès public (adresses IP autorisées) : aucune règle de trafic sortant supplémentaire n’est requise.
-
Accès privé (intégration de réseau virtuel) :
- Ajoutez une règle NSG sortante autorisant le trafic uniquement vers le tag de service
AzureActiveDirectory. - Si vous utilisez une table de routage, ajoutez un itinéraire avec la destination
AzureActiveDirectoryet le tronçonInternetsuivant. - Si vous utilisez un proxy, autorisez uniquement le trafic HTTPS vers la balise de
AzureActiveDirectoryservice.
- Ajoutez une règle NSG sortante autorisant le trafic uniquement vers le tag de service
-
DNS personnalisé :
- Vérifiez que ces noms d’hôte sont résolus publiquement :
login.microsoftonline.com(authentification) etgraph.microsoft.com(API Microsoft Graph). - En cas d’échec de la résolution, les opérations d’attribution d’administrateur et d’acquisition de jeton échouent.
- Vérifiez que ces noms d’hôte sont résolus publiquement :
Pour définir l’administrateur Microsoft Entra pendant le provisionnement du serveur, suivez ces étapes :
- Dans le portail Azure, lors du provisionnement du serveur, sélectionnez Authentification PostgreSQL et Microsoft Entra ou Authentification Microsoft Entra uniquement comme méthode d’authentification.
- Sous l’onglet Définir l’administrateur, sélectionnez un utilisateur, un groupe, un principal de service ou une identité managée Microsoft Entra valide en vue d’en faire un administrateur Microsoft Entra dans le tenant du client.
Vous pouvez éventuellement ajouter un compte d’administrateur PostgreSQL local si vous préférez la méthode d’authentification PostgreSQL et Microsoft Entra.
Note
Vous ne pouvez ajouter qu’un seul administrateur Microsoft Entra pendant l’approvisionnement du serveur. Vous pouvez ajouter plusieurs utilisateurs administrateurs Microsoft Entra une fois le serveur créé.
Pour définir l’administrateur Microsoft Entra après avoir créé le serveur, suivez ces étapes :
- Dans le Portail Azure, sélectionnez l’instance Azure Database pour PostgreSQL – Serveur flexible que vous souhaitez activer pour Microsoft Entra ID.
- Sous Sécurité, sélectionnez Authentification. Sélectionnez ensuite Authentification PostgreSQL et Microsoft Entra ou Authentification Microsoft Entra uniquement comme méthode d’authentification en fonction de vos besoins.
- Sélectionnez Ajouter des administrateurs Microsoft Entra. Sélectionnez un utilisateur, un groupe, un principal de service ou une identité managée Microsoft Entra valide en vue d’en faire un administrateur Microsoft Entra dans le tenant du client.
- Cliquez sur Enregistrer.
Important
Lorsque vous définissez l’administrateur, un nouvel utilisateur est ajouté à votre instance de serveur flexible Azure Database pour PostgreSQL avec des autorisations d’administrateur complètes.
Se connecter à Azure Database pour PostgreSQL à l’aide de Microsoft Entra ID
L’intégration Microsoft Entra fonctionne avec les outils PostgreSQL standard comme psql, qui ne reconnaissent pas Microsoft Entra et qui prennent uniquement en charge la spécification du nom d’utilisateur et du mot de passe lors de la connexion à PostgreSQL.
Nous avons testé les clients suivants :
-
Ligne de commande psql : utilisez la variable
PGPASSWORDpour passer le jeton. - Azure Data Studio : Utilisez l’extension PostgreSQL.
- Autres clients basés sur libpq : par exemple, les frameworks d’application courants et les mappeurs relationnels d’objets (ORM).
- PgAdmin : désactivez l’option Se connecter maintenant lors de la création du serveur.
S’authentifier avec Microsoft Entra ID
Utilisez les procédures suivantes pour s’authentifier auprès de Microsoft Entra ID en tant qu’utilisateur d’instance de serveur flexible Azure Database pour PostgreSQL.
Vous pouvez suivre en utilisant :
- Azure Cloud Shell
- Machine virtuelle Azure
- Votre ordinateur local
Connexion à Azure
Commencez par vous authentifier avec Microsoft Entra ID en utilisant Azure CLI. Cette étape n’est pas obligatoire dans Azure Cloud Shell.
az login
La commande ouvre une fenêtre de navigateur dans la page d’authentification Microsoft Entra. Pour ce faire, vous devez fournir votre ID d’utilisateur Microsoft Entra et le mot de passe.
Récupérer un jeton d’accès Microsoft Entra
Utilisez Azure CLI pour obtenir un jeton d’accès pour l’utilisateur authentifié Microsoft Entra pour accéder à Azure Database pour PostgreSQL. Voici un exemple du cloud public :
az account get-access-token --resource https://ossrdbms-aad.database.windows.net
La valeur de la ressource précédente doit être spécifiée comme indiqué. Pour les autres clouds, vous pouvez rechercher la valeur de la ressource à l’aide de la commande suivante :
az cloud show
Pour Azure CLI version 2.0.71 et les versions ultérieures, vous pouvez spécifier la commande dans la version commode suivante pour tous les clouds :
az account get-access-token --resource-type oss-rdbms
Une fois que l’authentification a réussi, Microsoft Entra ID retourne un jeton d’accès :
{
"accessToken": "TOKEN",
"expiresOn": "...",
"subscription": "...",
"tenant": "...",
"tokenType": "Bearer"
}
Le jeton est une chaîne Base64. Il encode toutes les informations sur l’utilisateur authentifié et qui est ciblée sur le service Azure Database pour PostgreSQL.
Utiliser un jeton comme mot de passe pour la connexion avec un client psql
Lors de la connexion, utilisez le jeton d’accès comme mot de passe utilisateur PostgreSQL.
Lorsque vous utilisez le client de ligne de commande psql, vous devez transmettre le jeton d’accès via la variable d’environnement PGPASSWORD . Le jeton d’accès est plus long que la longueur du mot de passe que psql peut accepter directement.
Voici un exemple Windows :
set PGPASSWORD=<copy/pasted TOKEN value from step 2>
$env:PGPASSWORD='<copy/pasted TOKEN value from step 2>'
Voici un exemple Linux ou macOS :
export PGPASSWORD=<copy/pasted TOKEN value from step 2>
Vous pouvez également combiner l’étape 2 et l’étape 3 ensemble à l’aide de la substitution de commandes. Vous pouvez placer la récupération du jeton dans une variable et la transmettre directement en tant que valeur pour la variable d’environnement PGPASSWORD :
export PGPASSWORD=$(az account get-access-token --resource-type oss-rdbms --query "[accessToken]" -o tsv)
Connectez-vous maintenant à Azure Database pour PostgreSQL :
psql "host=mydb.postgres... user=user@tenant.onmicrosoft.com dbname=postgres sslmode=require"
Utiliser un jeton comme mot de passe pour la connexion avec PgAdmin
Pour vous connecter à l’aide d’un jeton Microsoft Entra avec PgAdmin, suivez ces étapes :
- Ouvrez PgAdmin et sélectionnez Enregistrer>le serveur.
- Sous l’onglet Général , entrez un nom de connexion et désactivez Connect maintenant.
- Sous l’onglet Connexion , entrez les détails de l’hôte. Définissez le nom d’utilisateur sur votre UPN Microsoft Entra (par exemple).
user@tenant.onmicrosoft.comEnregistrer. - Dans l’arborescence, sélectionnez le serveur et choisissez Se connecter au serveur.
- Lorsque vous y êtes invité, collez le jeton d’accès en tant que mot de passe.
Voici quelques considérations essentielles lorsque vous vous connectez :
user@tenant.onmicrosoft.comest le nom d’utilisateur principal (userPrincipalName) de l’utilisateur Microsoft Entra.Veillez à orthographier l’utilisateur Azure avec exactitude. Les noms d’utilisateur et de groupe Microsoft Entra respectent la casse.
Si le nom contient des espaces, insérez une barre oblique inverse (
\) devant chaque espace pour l’échapper. Vous pouvez utiliser Azure CLI pour obtenir l’utilisateur connecté et définir la valeur de la variable d’environnementPGUSER:export PGUSER=$(az ad signed-in-user show --query "[userPrincipalName]" -o tsv | sed 's/ /\\ /g')La validité du jeton d’accès est comprise entre 5 minutes et 60 minutes. Vous avez tout intérêt à obtenir le jeton d’accès juste avant d’établir la connexion à Azure Database pour PostgreSQL.
Vous êtes maintenant authentifié sur votre serveur Azure Database pour PostgreSQL avec l’authentification Microsoft Entra.
S’authentifier auprès de Microsoft Entra ID en tant que membre d’un groupe
Cette section montre comment se connecter à l’aide d’un groupe Microsoft Entra. Vous devez être membre du groupe et le groupe doit être créé (mappé) dans la base de données.
Créer un principal de groupe
Créez le groupe principal (rôle) dans la base de données (remplacez le nom d'affichage si nécessaire) :
select * from pgaadauth_create_principal('Prod DB Readonly', false, false).
Si la synchronisation de groupe est désactivée, les membres peuvent se connecter à l’aide de leurs jetons d’accès et spécifier le nom du groupe en tant que nom d’utilisateur.
Si la synchronisation de groupe est activée (via pgaadauth.enable_group_sync paramètre de serveur défini sur « ON »), les membres doivent se connecter avec leurs informations d’identification Entra ID individuelles, mais peuvent toujours se connecter avec le nom du groupe comme nom d’utilisateur.
Les connexions de groupe restent disponibles pour des raisons de compatibilité, mais peuvent être désactivées avec :
ALTER ROLE "ROLE_NAME" NOLOGIN;Le rôle de groupe ne doit pas être supprimé pour maintenir la synchronisation.
Les groupes sont automatiquement asynchrones toutes les 30 minutes.
La synchronisation manuelle peut être déclenchée avec :
SELECT * FROM pgaadauth_sync_roles_for_group_members();( parampgaadauth.enable_group_syncdoit être « ON »).Les modifications apportées aux métadonnées de groupe telles que le nom du groupe ne sont pas synchronisées
Les modifications d’appartenance au groupe sont synchronisées
Note
Les identités managées et les principaux de service sont pris en charge en tant que membres du groupe.
Connexion à Azure
Authentifiez-vous avec Microsoft Entra ID en utilisant Azure CLI. Cette étape n’est pas obligatoire dans Azure Cloud Shell. L’utilisateur doit être membre du groupe Microsoft Entra.
az login
Récupérer un jeton d’accès Microsoft Entra
Utilisez Azure CLI pour obtenir un jeton d’accès pour l’utilisateur authentifié Microsoft Entra pour accéder à Azure Database pour PostgreSQL. Voici un exemple du cloud public :
az account get-access-token --resource https://ossrdbms-aad.database.windows.net
Vous devez spécifier la valeur de ressource initiale exactement comme indiqué. Pour les autres clouds, vous pouvez rechercher la valeur de la ressource à l’aide de la commande suivante :
az cloud show
Pour Azure CLI version 2.0.71 et les versions ultérieures, vous pouvez spécifier la commande dans la version commode suivante pour tous les clouds :
az account get-access-token --resource-type oss-rdbms
Une fois que l’authentification a réussi, Microsoft Entra ID retourne un jeton d’accès :
{
"accessToken": "TOKEN",
"expiresOn": "...",
"subscription": "...",
"tenant": "...",
"tokenType": "Bearer"
}
Utiliser un jeton comme mot de passe pour la connexion avec psql ou PgAdmin
Ces considérations sont essentielles quand vous vous connectez en tant que membre du groupe :
- Le nom du groupe doit correspondre exactement au nom d’affichage du groupe Microsoft Permet (respectant la casse).
- Utilisez uniquement le nom du groupe, et non un alias de membre.
- Espaces d’échappement lorsque cela est nécessaire (par exemple,
Prod\ DB\ Readonly). - La validité du jeton est de 5 à 60 minutes. Acquérez-le immédiatement avant de vous connecter ; ne stockez pas de jetons dans des scripts.
Conseil / Astuce
Si l’authentification échoue, vérifiez que le rôle de base de données existe (par exemple, avec \du) et confirmez le pgaadauth.enable_group_sync paramètre.
Vous êtes maintenant authentifié sur votre serveur PostgreSQL avec l’authentification Microsoft Entra.