Utilice Microsoft Entra ID y roles nativos de PostgreSQL para la autenticación con Azure Cosmos DB for PostgreSQL
SE APLICA A: Azure Cosmos DB for PostgreSQL (con tecnología de la extensión de base de datos de Citus en PostgreSQL)
En este artículo, configurará los métodos de autenticación para Azure Cosmos DB for PostgreSQL. Administra usuarios administradores de Microsoft Entra ID y roles nativos de PostgreSQL para la autenticación con Azure Cosmos DB for PostgreSQL. También aprenderá a utilizar un token de Microsoft Entra ID con Azure Cosmos DB for PostgreSQL.
Se crea un clúster de Azure Cosmos DB for PostgreSQL con un rol nativo integrado de PostgreSQL denominado "citus". Puede agregar más roles nativos de PostgreSQL una vez completado el aprovisionamiento del clúster.
También puedes configurar la autenticación de Microsoft Entra ID (anteriormente Azure Active Directory) para Azure Cosmos DB for PostgreSQL. Puedes habilitar la autenticación Microsoft Entra ID además o en lugar de la autenticación PostgreSQL nativa en su clúster. Puede cambiar los métodos de autenticación habilitados en el clúster en cualquier momento después de aprovisionar el clúster. Cuando la autenticación de Microsoft Entra ID está habilitada, puede agregar varios usuarios de Microsoft Entra ID a un clúster de Azure Cosmos DB for PostgreSQL y convertir a cualquiera de ellos en administrador. El usuario de Microsoft Entra ID puede ser un usuario o una entidad de servicio.
Elegir el método de autenticación
Debe usar Azure Portal para configurar los métodos de autenticación en un clúster de Azure Cosmos DB for PostgreSQL.
Completa los siguientes elementos en tu clúster Azure Cosmos DB for PostgreSQL para habilitar o deshabilitar la autenticación de Microsoft Entra ID y la autenticación nativa de PostgreSQL.
- En la página del clúster, en el encabezado Administración de clústeres, elija Autenticación para abrir las opciones de administración de autenticación.
- En la sección Métodos de autenticación, elija Autenticación PostgreSQL únicamente, Autenticación de Microsoft Entra ID o Autenticación de PostgreSQL y Microsoft Entra ID como método de autenticación en función de sus necesidades.
Una vez hecho esto, proceda a configurar la autenticación de Microsoft Entra ID o a agregar roles nativos de PostgreSQL en la página de Autenticación.
Configuración de la autenticación de Microsoft Entra ID
Requisitos previos
Es necesario permitir que los usuarios inicien sesión en Azure Cosmos DB for PostgreSQL en el inquilino de Microsoft Entra ID. Estos pasos se deben realizar una vez para el inquilino de Microsoft Entra ID que se va a usar para la autenticación en clústeres de Azure Cosmos DB para PostgreSQL.
Importante
Los permisos de administrador de inquilinos de Microsoft Entra ID son necesarios para realizar el cambio. Consulte la guía para solucionar problemas con los permisos.
- Busca “Microsoft Entra ID” en el Azure Portal.
- Abra el servicio “Microsoft Entra ID”.
- En la página de información general del servicio Microsoft Entra ID en la sección Información general , busca el identificador de aplicación “b4fa09d8-5da5-4352-83d9-05c2a44cf431”.
- Elige la aplicación empresarial “Azure Cosmos DB for PostgreSQL AAD Authentication” en los resultados de búsqueda.
- En la aplicación empresarial Autenticación AAD de Azure Cosmos DB for PostgreSQL, elija la página de Propiedades.
- En ¿Habilitado para que los usuarios inicien sesión?, selecciona Sí y guarda los cambios.
Nota:
La edición de las propiedades de la aplicación empresarial, como "Habilitada para que los usuarios inicien sesión" requiere permisos concedidos a un rol con privilegios para actualizar las propiedades de la aplicación empresarial. Los roles, como Propietario de la aplicación empresarial, deben tener el permiso "actualizar las propiedades de la aplicación empresarial". Para obtener más información, consulte Roles con privilegios mínimos de Microsoft Entra por tarea: aplicaciones empresariales.
Añadir administradores de Microsoft Entra ID al clúster Azure Cosmos DB for PostgreSQL
Para agregar o eliminar roles de Microsoft Entra ID en el clúster, sigue estos pasos en la página de Autenticación:
- En la sección Autenticación de Microsoft Entra ID, seleccione Agregar administradores de Microsoft Entra ID.
- En el panel Seleccionar administradores de Microsoft Entra ID, selecciona uno o más usuarios o aplicaciones empresariales válidos de Microsoft Entra en el inquilino de AD actual para que sean administradores de Microsoft Entra ID en tu clúster Azure Cosmos DB for PostgreSQL.
- Para confirmar su elección, use Seleccionar.
- En la página Autenticación, seleccione Guardar en la barra de herramientas para guardar los cambios o continúe con la adición de roles nativos de PostgreSQL.
Configuración de la autenticación nativa de PostgreSQL
Para agregar roles de Postgres en el clúster, siga estos pasos en la página Autenticación:
- En la sección Autenticación de PostgreSQL, seleccione Agregar rol de PostgreSQL.
- Introduzca el nombre y la contraseña del rol. Seleccione Guardar.
- En la página de Autenticación, selecciona Guardar en la barra de herramientas para guardar los cambios o continuar con la adición de usuarios administradores de Microsoft Entra ID.
El usuario nativo de PostgreSQL se crea en el nodo de coordinación del clúster y se propaga a todos los nodos de trabajo. Los roles creados a través de Azure Portal tienen el atributo LOGIN, lo que significa que son verdaderos usuarios que pueden iniciar sesión en la base de datos.
Conéctate a Azure Cosmos para PostgreSQL utilizando la autenticación de Microsoft Entra ID
La integración de Microsoft Entra funciona con herramientas cliente PostgreSQL estándar como psql, que no son conscientes de Microsoft Entra ID y solo permiten especificar el nombre de usuario y la contraseña cuando te conectas a PostgreSQL. En tales casos, el token de Microsoft Entra ID se pasa como contraseña.
Hemos probado los clientes siguientes:
- Línea de comandos de psql: use la variable
PGPASSWORD
para pasar el token. - 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.
Utilice los siguientes procedimientos para autenticarse con Microsoft Entra ID como usuario de Azure Cosmos DB 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 ID. Requiere que proporcione el nombre de usuario y la contraseña de Microsoft Entra ID.
El nombre de la cuenta de usuario que usa para autenticarse (por ejemplo, user@tenant.onmicrosoft.com) es aquel para el que generará el token de acceso en el paso siguiente.
Recuperación del token de acceso de Microsoft Entra ID
Utiliza la CLI de Azure para adquirir un token de acceso para el usuario autenticado de Microsoft Entra ID para acceder a Azure Cosmos para PostgreSQL. Este es un ejemplo:
az account get-access-token --resource https://token.postgres.cosmos.azure.com
Una vez realizada la autenticación, Microsoft Entra ID devuelve un token de acceso para la suscripción actual a Azure:
{
"accessToken": "[TOKEN]",
"expiresOn": "[expiration_date_and_time]",
"subscription": "[subscription_id]",
"tenant": "[tenant_id]",
"tokenType": "Bearer"
}
El token es una cadena de Base64. Codifica toda la información sobre el usuario autenticado y se asocia con el servicio de Azure Cosmos DB for PostgreSQL. El token es válido durante al menos 5 minutos con un máximo de 90 minutos. expiresOn define el tiempo de expiración real del token.
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=<TOKEN value from the previous step>
$env:PGPASSWORD='<TOKEN value from the previous step>'
Este es un ejemplo de Linux/macOS:
export PGPASSWORD=<TOKEN value from the previous step>
También puede combinar los dos pasos anteriores 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 https://token.postgres.cosmos.azure.com --query "[accessToken]" -o tsv)
Nota:
Asegúrate de que la variable PGPASSWORD se establece en el token de acceso de Microsoft Entra ID para tu suscripción para la autenticación de Microsoft Entra ID. Si necesita realizar la autenticación de roles de Postgres desde la misma sesión, puede establecer PGPASSWORD en la contraseña del rol de Postgres o borrar el valor de la variable PGPASSWORD para escribir la contraseña de forma interactiva. La autenticación produciría un error con el valor incorrecto en PGPASSWORD.
Ahora puede iniciar una conexión con Azure Cosmos DB for PostgreSQL mediante la cuenta de usuario de Microsoft Entra ID para la que se generó el token de acceso. Lo haría de la misma forma en que lo haría normalmente con la cuenta de usuario como el usuario y sin el parámetro "password" en la línea de comandos:
psql "host=mycluster.[uniqueID].postgres.cosmos.azure.com user=user@tenant.onmicrosoft.com dbname=[db_name] sslmode=require"
Uso de un token como contraseña para iniciar sesión con PgAdmin
Para conectarte mediante un token de Microsoft Entra ID con PgAdmin, sigue estos pasos:
- Desactive la opción Conectarse ahora al crear el servidor.
- Escriba los detalles del servidor en la pestaña Conexión y seleccione Guardar.
- Asegúrese de que se especifica un usuario válido de Microsoft Entra ID en Nombre de usuario.
- En el menú Objeto de pgAdmin, seleccione Conectar servidor.
- Escribe la contraseña del token de Microsoft Entra ID cuando se te pida.
Estas son algunas consideraciones esenciales al conectarse:
user@tenant.onmicrosoft.com
es el nombre del usuario de Microsoft Entra ID.- Asegúrese de usar la forma exacta en que se escribe el usuario de Azure. Los nombres de usuario y grupo de Microsoft Entra ID distinguen mayúsculas de minúsculas.
- 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 90 minutos. Debe obtener el token de acceso antes de iniciar sesión en Azure Cosmos for PostgreSQL.
Ahora estás autenticado en el servidor Azure Cosmos para PostgreSQL a través de la autenticación Microsoft Entra ID.
Administración de roles nativos de PostgreSQL
Cuando la autenticación nativa de PostgreSQL está habilitada en el clúster, puede agregar y eliminar roles de Postgres además del rol integrado "citus". También puede restablecer la contraseña y modificar los privilegios de Postgres para roles nativos.
Cómo eliminar un rol de usuario nativo de PostgreSQL o cambiar su contraseña
Para actualizar un usuario, visite la página Autenticación del clúster y seleccione los puntos suspensivos ... que se encuentran al lado del usuario. Los puntos suspensivos abren un menú para eliminar el usuario o restablecer su contraseña.
El rol citus
tiene privilegios y no se puede eliminar. Sin embargo, el rol citus
se deshabilitará si se seleccionas el método de autenticación "Solo autenticación de Microsoft Entra ID" para el clúster.
Modificación de los privilegios de los roles de usuario
Los nuevos roles se usan comúnmente para proporcionar acceso a la base de datos con privilegios restringidos. Para modificar los privilegios de usuario, use los comandos estándar de PostgreSQL con una herramienta como PgAdmin o psql. Para más información, consulte Conexión a un clúster.
Por ejemplo, para permitir que db_user
de PostgreSQL lea mytable
, conceda el permiso:
GRANT SELECT ON mytable TO db_user;
Para conceder los mismos permisos al rol user@tenant.onmicrosoft.com
Microsoft Entra ID, utiliza el siguiente comando:
GRANT SELECT ON mytable TO "user@tenant.onmicrosoft.com";
Azure Cosmos DB for PostgreSQL propaga las instrucciones GRANT de tabla única a través de todo el clúster y las aplica a todos los nodos de trabajo. También propaga instrucciones GRANT que están en todo el sistema (por ejemplo, para todas las tablas de un esquema):
-- 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;
O para el rol de 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";
Pasos siguientes
- Obtenga más información sobre la autenticación en Azure Cosmos DB for PostgreSQL
- Compruebe los límites y limitaciones de Microsoft Entra ID en Azure Cosmos DB for PostgreSQL
- Revisión de los fundamentos de Microsoft Entra ID
- Obtenga más información sobre SQL GRANT en PostgreSQL