En esta página se describe cómo se integra PostgreSQL con Active Directory en AlloyDB Omni mediante la interfaz de programación de aplicaciones de servicios de seguridad genéricos (GSSAPI) y se presentan los conceptos clave de Kerberos. Kerberos es el protocolo de autenticación que usa Active Directory.
Active Directory es un servicio de directorio desarrollado por Microsoft para redes de dominio de Windows. Active Directory es un sistema centralizado y estandarizado que automatiza la gestión de redes de datos de usuarios, seguridad y recursos distribuidos. Este servicio de directorio proporciona un único punto de administración para las cuentas de usuario, los grupos y otros objetos de la red. Una función clave de Active Directory es la autenticación, que confirma la identidad y la autorización de un usuario, y le concede acceso a recursos específicos de la red.
Componentes de Active Directory
Un realm
es el dominio administrativo de la autenticación de Kerberos. En el contexto de Active Directory, un realm equivale a un dominio de Active Directory. Los reinos representan un grupo lógico de usuarios, ordenadores y servicios que comparten una base de datos de autenticación común. Cuando configures Kerberos, debes especificar el reino al que pertenecen tus clientes y servicios. Un realm es la versión en mayúsculas del nombre de dominio. Por ejemplo, si el dominio es ad.example.com
, el realm es AD.EXAMPLE.COM
.
El centro de distribución de claves (KDC) es un servicio principal de Kerberos que se ejecuta en todos los controladores de dominio de Active Directory. El KDC tiene las siguientes funciones principales:
- Servicio de autenticación (AS): verifica la identidad de un usuario en el inicio de sesión inicial, por ejemplo, cuando inicias sesión en Windows, y emite un ticket de concesión de tickets (TGT).
- Servicio de concesión de tickets (TGS): emite tickets de servicio a usuarios autenticados que presentan un TGT válido. Estas incidencias de servicio conceden acceso a servicios específicos, como una base de datos PostgreSQL.
Un principal es una identidad única en un dominio de Kerberos al que se pueden asignar tickets. Estos son los principales tipos de principales:
- Principales de usuario: representan a usuarios humanos; por ejemplo,
username@REALM
. - Nombres principales de servicio (SPN): representan un servicio específico en un host específico. Por ejemplo,
postgres/db-server.ad.example.com@REALM
. Para que un cliente pueda solicitar un ticket de servicio para tu base de datos, el servicio de base de datos debe tener un SPN registrado.
Un archivo de keytab o tabla de claves contiene una lista de principales y sus claves secretas correspondientes, que se derivan de las contraseñas de los principales. Los servicios usan un archivo keytab para demostrar su identidad al KDC y para descifrar los tickets de servicio que presentan los clientes.
Este enfoque permite que un servicio como PostgreSQL se autentique en el sistema Kerberos sin necesidad de interacción humana ni de almacenar una contraseña de texto sin cifrar en el servidor. El archivo keytab es muy sensible y debe almacenarse y protegerse de forma segura.
Integración de PostgreSQL con Active Directory
Al integrar PostgreSQL con Active Directory, obtienes una gestión de usuarios centralizada basada en identidades corporativas, lo que mejora la seguridad de tu base de datos.
Para admitir la autenticación, PostgreSQL ofrece los siguientes métodos para integrarse con Active Directory:
Protocolo ligero de acceso a directorios (LDAP): puedes configurar PostgreSQL para autenticar usuarios en un servidor de Active Directory mediante el protocolo LDAP. Cuando un usuario intenta conectarse a la base de datos, PostgreSQL se comunica con el servidor de Active Directory a través de LDAP para verificar las credenciales del usuario, que suelen ser un nombre de usuario y una contraseña. Este método usa Active Directory como proveedor de autenticación externo.
Interfaz de programación de aplicaciones de servicios de seguridad genéricos (GSSAPI) con Kerberos: es un método más seguro y complejo que usa el protocolo Kerberos, que es el mecanismo de autenticación predeterminado en Active Directory. GSSAPI proporciona una interfaz estándar para que las aplicaciones accedan a los servicios de seguridad.
Aunque tanto LDAP como GSSAPI consiguen el objetivo de integrar Active Directory, GSSAPI con Kerberos es el método más seguro y robusto para entornos empresariales, ya que utiliza una autenticación criptográfica sólida basada en tickets. En esta página se explica cómo implementar la integración de Active Directory en AlloyDB Omni mediante el método GSSAPI.
Autenticación de Active Directory con GSSAPI
AlloyDB Omni te permite autenticarte a través de Kerberos usando Active Directory como backend de autenticación. Los pasos para conseguir la autenticación se muestran en el siguiente diagrama.
- El cliente
psql
inicia una solicitud de autenticación mediante el servicio de autenticación (AS) del centro de distribución de claves (KDC). - El AS autentica al cliente y le emite un vale de concesión de vales (TGT) (T1). A continuación, se usa el TGT para solicitar las entradas de servicio.
- El cliente usa el TGT para solicitar un ticket de servicio al servicio de concesión de tickets (TGS) del KDC para el servicio PostgreSQL. El cliente ahora solicita acceso al servidor de PostgreSQL específico.
- El TGS valida el TGT y emite un ticket de servicio (T2) al cliente. Este ticket contiene una clave de sesión (T3) y se cifra con la clave secreta del servidor PostgreSQL.
- El cliente envía el ticket de servicio cifrado (T2) al servidor de PostgreSQL.
- El servidor PostgreSQL usa su clave (del archivo keytab) para descifrar el ticket de servicio (T2). A continuación, el servidor recupera la clave de sesión (T3) y verifica la autenticidad del ticket. Si esta operación se realiza correctamente, el servidor concede acceso y establece un canal de comunicación seguro con el cliente mediante la clave de sesión.
Siguientes pasos
- Integra la compatibilidad con usuarios de Active Directory en AlloyDB Omni.
- Integra la compatibilidad con usuarios de Active Directory en Kubernetes.
- Integra la compatibilidad con grupos de Active Directory en AlloyDB Omni.
- Integra la compatibilidad con grupos de Active Directory en Kubernetes.
- Soluciona problemas de integración de Active Directory en AlloyDB Omni.