Compartir vía


Uso de Microsoft Entra ID para la autenticación con Azure Database for PostgreSQL: Flexible Server

SE APLICA A: Azure Database for PostgreSQL: servidor flexible

En este artículo, configurará el acceso a Microsoft Entra ID para la autenticación con el servidor flexible de Azure Database for PostgreSQL. También aprenderá a usar un token de Microsoft Entra con el servidor flexible de Azure Database for PostgreSQL.

Puede configurar la autenticación de Microsoft Entra para el servidor flexible de Azure Database for PostgreSQL durante el aprovisionamiento del servidor o posteriormente. Los usuarios administradores de Microsoft Entra son los únicos que pueden crear o habilitar usuarios para la autenticación basada en Microsoft Entra ID. Se recomienda no usar el administrador de Microsoft Entra para las operaciones habituales de base de datos porque ese rol tiene permisos de usuario elevados (por ejemplo, CREATEDB).

Puede tener varios usuarios administradores de Microsoft Entra con el servidor flexible de Azure Database for PostgreSQL. Los usuarios administradores de Microsoft Entra pueden ser un usuario, un grupo o una entidad de servicio.

Requisitos previos

Configuración de los requisitos de red

Microsoft Entra ID es una multiinquilino. Requiere conectividad de salida para realizar ciertas operaciones, como agregar grupos de administradores de Microsoft Entra. Además, se deben aplicar reglas de red para que la conectividad de Microsoft Entra funcione, en función de la topología de red:

  • Acceso público (direcciones IP permitidas): no se requieren reglas de red adicionales.

  • Acceso privado (integración de red virtual):

    • Necesita una regla de grupo de seguridad de red (NSG) de salida para permitir que el tráfico de red virtual llegue solo a la etiqueta de servicio AzureActiveDirectory.
    • Si usa una tabla de rutas, debe crear una regla con la etiqueta de servicio de destino AzureActiveDirectory y el próximo salto Internet.
    • Opcionalmente, si usa un proxy, puede agregar una nueva regla de firewall para permitir que el tráfico HTTP/S llegue solo a la etiqueta de servicio AzureActiveDirectory.
  • DNS personalizados: existen consideraciones adicionales si está usando DNS personalizados en su red virtual (VNET). En estos casos, es crucial asegurarse de que los siguientes puntos de conexión se resuelven a sus direcciones IP correspondientes: login.microsoftonline.com: este punto de conexión se usa con fines de autenticación. Compruebe que su configuración de DNS personalizado permite resolver login.microsoftonline.com a sus direcciones IP correctas graph.microsoft.com: este punto de conexión se usa para acceder a Microsoft Graph API. Asegúrese de que la configuración de DNS personalizado permite la resolución de graph.microsoft.com a las direcciones IP correctas.

Para establecer el administrador de Microsoft Entra durante el aprovisionamiento del servidor, siga estos pasos:

  1. En Azure Portal, durante el aprovisionamiento del servidor, seleccione autenticación de PostgreSQL y Microsoft Entra o autenticación de Microsoft Entra solo como método de autenticación.
  2. En la pestaña Establecer administrador, seleccione un usuario, grupo, entidad de servicio o identidad administrada válidos de Microsoft Entra en el inquilino del cliente que quiera que actúen como administrador de Microsoft Entra.

Opcionalmente, puede agregar una cuenta de administrador de PostgreSQL local, en caso de que prefiera usar el método de autenticación de PostgreSQL y Microsoft Entra.

Nota:

Solo puede agregar un usuario administrador de Azure durante el aprovisionamiento del servidor. Tras crear el servidor se pueden agregar varios usuarios administradores de Microsoft Entra.

Captura de pantalla que muestra las selecciones para establecer un administrador de Microsoft Entra durante el aprovisionamiento del servidor.

Para establecer el administrador de Microsoft Entra después de la creación del servidor, siga estos pasos:

  1. En Azure Portal, seleccione la instancia del servidor flexible de Azure Database for PostgreSQL que quiere habilitar para Microsoft Entra ID.
  2. En Seguridad, seleccione Autenticación. A continuación, elija Autenticación de PostgreSQL y Microsoft Entra o Autenticación de Microsoft Entra solo como método de autenticación, en función de sus necesidades.
  3. Seleccione Agregar administradores de Microsoft Entra. A continuación, seleccione un usuario, grupo, entidad de servicio o identidad administrada válidos de Microsoft Entra en el inquilino del cliente que quiera que actúen como un administrador de Microsoft Entra.
  4. Seleccione Guardar.

Captura de pantalla que muestra las selecciones para establecer un administrador de Microsoft Entra después de la creación del servidor.

Importante

Al establecer el administrador, se agrega un nuevo usuario al servidor del servidor flexible de Azure Database for PostgreSQL con permisos de administrador completos.

Conexión a Azure Database for PostgreSQL con Microsoft Entra ID

En el siguiente diagrama de alto nivel se resume el flujo de trabajo del uso de la autenticación de Microsoft Entra con Azure Database for PostgreSQL:

Diagrama de flujo de autenticación entre Microsoft Entra ID, el equipo del usuario y el servidor.

La integración de Microsoft Entra funciona con herramientas estándar de PostgreSQL, como psql, que no son compatibles con Microsoft Entra y solo admiten la especificación de nombre de usuario y contraseña al conectarse a PostgreSQL. Como se muestra en el diagrama anterior, el token de Microsoft Entra se pasa como contraseña.

Hemos probado los clientes siguientes:

  • Línea de comandos de psql: use la variable PGPASSWORD para pasar el token.
  • Azure Data Studio: use la extensión de PostgreSQL.
  • Otros clientes basados en libpq: entre los ejemplos se incluyen marcos de aplicaciones comunes y asignadores relacionales de objetos (ORM).
  • PgAdmin: desactive Conectarse ahora al crear el servidor.

Autenticación con Microsoft Entra ID

Use los procedimientos siguientes para autenticarse con Microsoft Entra ID como un usuario del servidor flexible de Azure Database for PostgreSQL. Puede seguir en Azure Cloud Shell, en una máquina virtual de Azure o en su equipo local.

Inicio de sesión en la suscripción de Azure del usuario

Para empezar, autentíquese en Microsoft Entra ID con la CLI de Azure. Este paso no es necesario en Azure Cloud Shell.

az login

El comando abre una ventana del explorador en la página de autenticación de Microsoft Entra. Requiere que proporcione el identificador de usuario y contraseña de Microsoft Entra.

Recuperación del token de acceso de Microsoft Entra

Use la CLI de Azure a fin de adquirir un token de acceso para el usuario autenticado de Microsoft Entra y acceder a Azure Database for PostgreSQL. Este es un ejemplo de la nube pública:

az account get-access-token --resource https://ossrdbms-aad.database.windows.net

El valor del recurso anterior debe especificarse como se muestra. Para otras nubes, puede buscar el valor del recurso con el comando siguiente:

az cloud show

En la versión 2.0.71 y posteriores de la CLI de Azure, puede especificar el comando en la práctica versión para todas las nubes que se muestra a continuación:

az account get-access-token --resource-type oss-rdbms

Una vez que la autenticación se realiza correctamente, Microsoft Entra ID devuelve un token de acceso:

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

El token es una cadena de Base64. Codifica toda la información sobre el usuario autenticado y está dirigida al servicio Azure Database for PostgreSQL.

Uso de un token como contraseña para iniciar sesión con el cliente psql

Al conectarse, es mejor usar el token de acceso como contraseña de usuario de PostgreSQL.

Al usar el cliente de línea de comandos psql, el token de acceso debe pasarse mediante la variable de entorno PGPASSWORD. El motivo es que el token de acceso supera la longitud de contraseña que psql puede aceptar directamente.

Este es un ejemplo de Windows:

set PGPASSWORD=<copy/pasted TOKEN value from step 2>
$env:PGPASSWORD='<copy/pasted TOKEN value from step 2>'

Este es un ejemplo de Linux/macOS:

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

También puede combinar los pasos 2 y 3 mediante la sustitución de comandos. La recuperación de tokens se puede encapsular en una variable y pasarse directamente como un valor para la variable de entorno PGPASSWORD:

export PGPASSWORD=$(az account get-access-token --resource-type oss-rdbms --query "[accessToken]" -o tsv)

Ahora puede iniciar una conexión con Azure Database for PostgreSQL como lo haría normalmente:

psql "host=mydb.postgres... user=user@tenant.onmicrosoft.com dbname=postgres sslmode=require"

Uso de un token como contraseña para iniciar sesión con PgAdmin

Para conectarse mediante un token de Microsoft Entra con PgAdmin, siga estos pasos:

  1. Abra Pgadmin, haga clic en Registrar en el menú de la izquierda y seleccione Servidor
  2. En la pestaña General, proporcione un nombre de conexión y desactive la opción Conectar ahora.
  3. Haga clic en la pestaña Conexión e indique los detalles de su instancia de servidor flexible de Azure Database for PostgreSQL para Nombre de host/dirección y nombre de usuario y guarde. nombre de usuario es el identificador o el correo electrónico de Microsoft Entra
  4. En el menú del explorador, seleccione la conexión de servidor flexible de Azure Database for PostgreSQL y haga clic en Conectar al servidor
  5. Escriba la contraseña del token de Active Directory cuando se le solicite.

Captura de pantalla que muestra el proceso de inicio de sesión mediante el administrador de PG.

Estas son algunas consideraciones esenciales al conectarse:

  • user@tenant.onmicrosoft.com es el valor userPrincipalName del usuario de Microsoft Entra.
  • Asegúrese de usar la forma exacta en que se escribe el usuario de Azure. Los nombres de usuario y grupo de Microsoft Entra distinguen mayúsculas de minúsculas.
  • Si el nombre contiene espacios, use una barra diagonal inversa (\) delante de cada espacio para aplicarle escape. Puede usar la CLI de Azure para obtener el usuario que ha iniciado sesión y establecer el valor de la variable de entorno PGUGSER:
    export PGUSER=$(az ad signed-in-user show --query "[userPrincipalName]" -o tsv | sed 's/ /\\ /g')
    
  • La validez del token de acceso es de entre 5 y 60 minutos. Debe obtener el token de acceso antes de iniciar sesión en Azure Database for PostgreSQL.

Ahora está autenticado en el servidor de Azure Database for PostgreSQL mediante la autenticación de Microsoft Entra.

Autenticación con el Microsoft Entra ID como miembro del grupo

Creación de grupos de Microsoft Entra en Azure Database for PostgreSQL: servidor flexible

Para habilitar el acceso de un grupo de Microsoft Entra a la base de datos, use el mismo mecanismo que usó para los usuarios, pero en su lugar especifique el nombre del grupo. Por ejemplo:

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

Cuando los miembros del grupo inician sesión, usan sus tokens de acceso pero especifican el nombre del grupo como nombre de usuario.

Nota:

El servidor flexible de Azure Database for PostgreSQL es compatible con identidades administradas y entidades de servicio como miembros del grupo.

Inicio de sesión en la suscripción de Azure del usuario

Autentíquese con Microsoft Entra ID mediante la CLI de Azure. Este paso no es necesario en Azure Cloud Shell. El usuario debe ser miembro del grupo de Microsoft Entra.

az login

Recuperación del token de acceso de Microsoft Entra

Use la CLI de Azure a fin de adquirir un token de acceso para el usuario autenticado de Microsoft Entra y acceder a Azure Database for PostgreSQL. Este es un ejemplo de la nube pública:

az account get-access-token --resource https://ossrdbms-aad.database.windows.net

Debe especificar el valor del recurso inicial exactamente como se muestra. Para otras nubes, puede buscar el valor del recurso con el comando siguiente:

az cloud show

En la versión 2.0.71 y posteriores de la CLI de Azure, puede especificar el comando en la práctica versión para todas las nubes que se muestra a continuación:

az account get-access-token --resource-type oss-rdbms

Una vez que la autenticación se realiza correctamente, Microsoft Entra ID devuelve un token de acceso:

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

Uso de un token como contraseña para iniciar sesión con psql o PgAdmin

Estas consideraciones son indispensables al conectarse como miembro de un grupo:

  • El nombre del grupo es el nombre del grupo de Microsoft Entra al que se intenta conectar.
  • Asegúrese de usar la forma exacta en que se escribe el nombre del grupo de Microsoft Entra. Los nombres de usuario y grupo de Microsoft Entra distinguen mayúsculas de minúsculas.
  • Al conectarse como grupo, use solo el nombre del grupo y no el alias de un miembro del grupo.
  • Si el nombre contiene espacios, use una barra diagonal inversa (\) delante de cada espacio para aplicarle escape.
  • La validez del token de acceso es de entre 5 y 60 minutos. Lo recomendable es que obtenga el token de acceso antes de que inicie sesión en Azure Database for PostgreSQL.

Ahora está autenticado en el servidor de PostgreSQL mediante la autenticación de Microsoft Entra.

Pasos siguientes