Utiliser Microsoft Entra ID pour l’authentification avec Azure Database pour PostgreSQL - Serveur flexible

S’APPLIQUE À : Azure Database pour PostgreSQL – Serveur flexible

Dans cet article, vous configurez l’accès Microsoft Entra ID pour l’authentification avec Azure Database pour PostgreSQL – Serveur flexible. Vous allez également apprendre à utiliser un jeton Microsoft Entra avec Azure Database pour PostgreSQL – Serveur flexible.

Vous pouvez configurer l’authentification Microsoft Entra pour Azure Database pour PostgreSQL – Serveur flexible pendant le provisionnement du serveur ou ultérieurement. Seuls les utilisateurs administrateurs Microsoft Entra peuvent créer ou activer des utilisateurs pour l’authentification basée sur Microsoft Entra ID. Nous vous déconseillons de faire appel à l’administrateur Microsoft Entra pour les opérations de base de données courantes, car il dispose d’autorisations utilisateur élevées (par exemple, CREATEDB).

Vous pouvez avoir plusieurs utilisateurs administrateurs Microsoft Entra avec Azure Database pour PostgreSQL – Serveur flexible. Un administrateur Microsoft Entra peut correspondre à un utilisateur, un groupe ou un principal de service.

Prérequis

Configurer les exigences réseau

Microsoft Entra ID est une application multilocataire. Il nécessite une connectivité sortante pour effectuer certaines opérations comme ajouter des groupes d’administrateurs Microsoft Entra. Vous avez également besoin de règles réseau pour que la connectivité Microsoft Entra fonctionne, selon la topologie de votre réseau :

  • Accès public (adresses IP autorisées) : aucune règle réseau supplémentaire n’est requise.

  • Accès privé avec intégration de réseau virtuel :

    • Vous avez besoin d’une règle de groupe de sécurité réseau (NSG) de trafic sortant pour autoriser le trafic de réseau virtuel à atteindre uniquement l’étiquette de service AzureActiveDirectory.
    • Si vous utilisez une table de routage, vous devez créer une règle avec l’étiquette de service de destination AzureActiveDirectory et le tronçon suivant Internet.
    • Si vous utilisez un proxy, vous pouvez éventuellement ajouter une nouvelle règle de pare-feu pour autoriser le trafic HTTP/S à atteindre l’étiquette de service AzureActiveDirectory uniquement.
  • DNS personnalisé : il existe d’autres considérations à prendre en compte si vous utilisez un DNS personnalisé dans votre réseau virtuel (VNet). Dans de tels cas, il est important de veiller à ce que les points de terminaison suivants soient résolus en adresses IP correspondantes : login.microsoftonline.com : ce point de terminaison est utilisé à des fins d’authentification. Vérifiez que votre configuration de DNS personnalisé permet la résolution de login.microsoftonline.com en adresses IP appropriées graph.microsoft.com : ce point de terminaison est utilisé pour accéder à l’API Microsoft Graph. Veillez à ce que votre configuration de DNS personnalisé permette la résolution de graph.microsoft.com en adresses IP appropriées.

Pour définir l’administrateur Microsoft Entra pendant le provisionnement du serveur, suivez ces étapes :

  1. 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.
  2. 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.

Remarque

Vous ne pouvez ajouter qu’un seul utilisateur administrateur Azure lors de l’approvisionnement du serveur. Vous pouvez ajouter plusieurs utilisateurs administrateurs Microsoft Entra une fois le serveur créé.

Screenshot that shows selections for setting a Microsoft Entra admin during server provisioning.]

Pour définir l’administrateur Microsoft Entra après avoir créé le serveur, suivez ces étapes :

  1. Dans le Portail Azure, sélectionnez l’instance Azure Database pour PostgreSQL – Serveur flexible que vous souhaitez activer pour Microsoft Entra ID.
  2. 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.
  3. 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.
  4. Sélectionnez Enregistrer.

Screenshot that shows selections for setting a Microsoft Entra admin after server creation.

Important

Lorsque vous définissez l’administrateur, un nouvel utilisateur est ajouté à Azure Database pour PostgreSQL – Serveur flexible avec des autorisations d’administrateur complètes.

Se connecter à Azure Database pour PostgreSQL à l’aide de Microsoft Entra ID

Le diagramme global suivant résume le workflow de l’utilisation de l’authentification Microsoft Entra avec Azure Database pour PostgreSQL :

Diagram of authentication flow between Microsoft Entra ID, the user's computer, and the server.

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. Comme illustré dans le diagramme précédent, le jeton Microsoft Entra est passé en tant que mot de passe.

Nous avons testé les clients suivants :

  • Ligne de commande psql : utilisez la variable PGPASSWORD pour 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 vous authentifier avec Microsoft Entra ID en tant qu’utilisateur Azure Database pour PostgreSQL – Serveur flexible. Vous pouvez poursuivre dans Azure Cloud Shell, sur une machine virtuelle Azure ou sur votre ordinateur local.

Se connecter à l’abonnement Azure de l’utilisateur

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 le jeton d’accès Microsoft Entra

Utilisez Azure CLI pour obtenir un jeton d’accès pour l’utilisateur authentifié Microsoft Entra afin d’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

Pendant la connexion, il est préférable d’utiliser le jeton d’accès comme mot de passe utilisateur PostgreSQL.

Lorsque vous utilisez le client en ligne de commande psql, le jeton d’accès a besoin d’être transmis par le biais de la variable d’environnement PGPASSWORD. La raison en est que le jeton d’accès dépasse 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/macOS :

export PGPASSWORD=<copy/pasted TOKEN value from step 2>

Vous pouvez également combiner les étapes 2 et 3 à l’aide de la substitution de commande. La récupération de jeton peut être encapsulée dans une variable et passée 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)

Vous pouvez maintenant établir une connexion à Azure Database pour PostgreSQL comme vous le feriez normalement :

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 :

  1. Ouvrez Pgadmin, cliquez sur Inscrire dans le menu de gauche, puis sélectionnez Serveur
  2. Sous l’onglet Général, fournissez un nom de connexion et désactivez l’option Se connecter maintenant.
  3. Cliquez sur l’onglet Connexion, fournissez les informations de votre instance Azure Database pour PostgreSQL – Service flexible relatifs à Nom d’hôte/adresse et Nom d’utilisateur, puis enregistrez. Le nom d’utilisateur est votre Microsoft Entra ID ou votre e-mail
  4. Dans le menu du navigateur, sélectionnez votre connexion Azure Database pour PostgreSQL – Serveur flexible et cliquez sur Se connecter au serveur
  5. Entrez le mot de passe de votre jeton Active Directory une fois invité.

Screenshot that shows login process using PG admin.

Voici quelques considérations essentielles lorsque vous vous connectez :

  • user@tenant.onmicrosoft.com est 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’environnement PGUGSER :
    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 avec Microsoft Entra ID comme membre de groupe

Créer des groupes Microsoft Entra dans Azure Database pour PostgreSQL – Serveur flexible

Pour permettre à un groupe Microsoft Entra d’accéder à votre base de données, utilisez le même mécanisme que pour les utilisateurs, mais spécifiez le nom du groupe à la place. Par exemple :

select * from  pgaadauth_create_principal('Prod DB Readonly', false, false).

Pendant la connexion, les membres du groupe utilisent leurs jetons d’accès, mais ils se connectent avec le nom du groupe spécifié comme nom d’utilisateur.

Remarque

Azure Database pour PostgreSQL – Serveur flexible prend en charge les identités managées et les principaux de service en tant que membres de groupe.

Se connecter à l’abonnement Azure de l’utilisateur

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 le jeton d’accès Microsoft Entra

Utilisez Azure CLI pour obtenir un jeton d’accès pour l’utilisateur authentifié Microsoft Entra afin d’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 de groupe est le nom du groupe Microsoft Entra auquel vous tentez de vous connecter.
  • Veillez à bien orthographier le nom du groupe Microsoft Entra. Les noms d’utilisateur et de groupe Microsoft Entra respectent la casse.
  • Quand vous vous connectez en tant que groupe, utilisez uniquement le nom du groupe et non l’alias d’un membre de celui-ci.
  • Si le nom contient des espaces, insérez une barre oblique inverse (\) devant chaque espace pour l’échapper.
  • La validité du jeton d’accès est comprise entre 5 minutes et 60 minutes. Nous vous recommandons d’obtenir le jeton d’accès avant d’établir la connexion à Azure Database pour PostgreSQL.

Vous êtes maintenant authentifié sur votre serveur PostgreSQL avec l’authentification Microsoft Entra.

Étapes suivantes