Para obtener más información, consulta Descripción general de Active Directory.
En este documento, se supone que estás familiarizado con la aplicación de archivos de manifiesto de Kubernetes y el uso de la herramienta de línea de comandos de kubectl. Para obtener más información, consulta Herramienta de línea de comandos (kubectl).
Antes de comenzar
Para habilitar la integración de Active Directory, debes cumplir con los siguientes requisitos:
- Un clúster de AlloyDB Omni implementado en un entorno de Kubernetes
- Un archivo keytab del servidor de Active Directory
Migra del operador de Kubernetes de AlloyDB Omni 1.4.0 a 1.5.0
Si usas la integración de Active Directory en el operador de AlloyDB Omni versión 1.4.0 o anterior, debes migrar al operador de AlloyDB Omni versión 1.5.0.
Para migrar a la versión 1.5.0 del operador de AlloyDB Omni, sigue estos pasos:
- Actualiza el operador de AlloyDB Omni a la versión 1.5.0.
- Crea un recurso de autenticación definido por el usuario.
- Crea un manifiesto de recurso UserDefinedAuthentication nuevo.
- Propaga
spec.dbclusterRef
con el nombre del DBCluster de destino. - Completa
spec.keytabSecretRef
con el nombre del Secret de keytab. - Copia las reglas
pg_hba.conf
existentes que sean pertinentes para la autenticación de Active Directory y Kerberos en el campospec.pgHbaEntries
. - Copia el
pg_ident.conf rules
existente (si hay alguno) en el campospec.pgIdentEntries
. - Aplica este nuevo manifiesto, por ejemplo,
kubectl apply -f user-auth-crd.yaml
.
- Quita la configuración de vista previa y vuelve a implementar el clúster.
- En la definición del recurso DBCluster, quita todas las anotaciones que usaste anteriormente para configurar la integración de Active Directory, por ejemplo, las reglas de autenticación basadas en host (HBA), las reglas de ident y la anotación del archivo keytab.
- Borra los mapas de configuración
pg_hba
ypg_ident
que creaste. - Vuelve a aplicar el manifiesto de DBCluster actualizado.
Configura la compatibilidad con Active Directory
Crea y aplica un secreto con el archivo keytab:
apiVersion: v1 kind: Secret metadata: name: KEYTAB_SECRET_NAME namespace: DB_CLUSTER_NAMESPACE type: Opaque data: krb5.keytab: | KEYTAB_FILE_CONTENT
El siguiente es un ejemplo de un comando que genera un archivo keytab en el servidor de Active Directory:
ktpass /princ postgres/DBCLUSTER_HOST@REALM /Pass PASSWORD /mapuser postgres /crypto ALL /ptype KRB5_NT_Principal /out OUTPUT_PATH
ALLOYDB_HOST
es el host que apunta a DBCluster o a la dirección IP de DBCluster.Aplica el siguiente manifiesto de recurso personalizado de autenticación definido por el usuario:
apiVersion: alloydbomni.dbadmin.goog/v1 kind: UserDefinedAuthentication metadata: name: USER_DEFINED_AUTHENTICATION_NAME namespace: DB_CLUSTER_NAMESPACE spec: dbclusterRef: name: DB_CLUSTER_NAME keytabSecretRef: name: KEYTAB_SECRET_NAME pgHbaEntries: PG_HBA_ENTRIES pgIdentEntries: PG_IDENT_ENTRIES
Reemplaza lo siguiente:
USER_DEFINED_AUTHENTICATION_NAME
: Es el nombre de UserDefinedConfiguration, por ejemplo,DB_CLUSTER_NAME-ad-auth
.DB_CLUSTER_NAMESPACE
: Es el espacio de nombres de Kubernetes para este plan de copia de seguridad. El espacio de nombres debe coincidir con el del clúster de la base de datos.DB_CLUSTER_NAME
: Es el nombre del clúster de la base de datos que asignaste cuando lo creaste.KEYTAB_SECRET_NAME
: Es el nombre del archivo keytab que creaste.PG_HBA_ENTRIES
: Entradas depg_hba.conf
como una lista de cadenas. Estas entradas reemplazan las entradas predeterminadas enpg_hba.conf
. Si agregas una configuración no válida, los usuarios no podrán acceder.En el ejemplo anterior, agregaste entradas para la autenticación basada en GSS y, luego, para la autenticación basada en contraseñas. Esto significa que el usuario accedió con la API de GSS. Si este enfoque de acceso falla, se usa la autenticación basada en contraseña como alternativa.
Para obtener más información, consulta El archivo pg_hba.conf.
PG_IDENT_ENTRIES
: Entradas depg_ident.conf
como una lista de cadenas. Para implementar la asignación de nombres de usuario, especificamap=
en el campo de opciones del archivopg_hba.conf
. Para obtener más información, consulta Ident Maps.Consulta el siguiente ejemplo:
apiVersion: v1 kind: Secret metadata: name: db-keytab-dbcluster-sample type: Opaque data: krb5.keytab: | DUMMY_KEYTAB --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: UserDefinedAuthentication metadata: name: dbcluster-sample-ad-auth spec: dbclusterRef: name: dbcluster-sample keytabSecretRef: name: db-keytab-dbcluster-sample pgHbaEntries: - hostgssenc all all 0.0.0.0/0 gss - hostgssenc all all ::1/128 gss - hostssl all all 0.0.0.0/0 scram-sha-256 - hostssl all all ::/0 scram-sha-256 pgIdentEntries: - usermap active_directory_user postgres_user
Crea roles de base de datos como usuario de Active Directory
Crea un rol en tu base de datos que coincida con el usuario de Active Directory. Para crear un rol para tu usuario de Active Directory, conéctate al clúster y ejecuta los siguientes comandos:
username=# CREATE ROLE "USERNAME@REALM" WITH LOGIN;
Accede a la base de datos con el usuario de Active Directory. Debes tener
kinit
habilitado en el cliente al que te conectas. En este ejemplo, el podpostgres-client
tiene instalados kinit y psql, y está configurado para conectarse al clúster de AlloyDB Omni con el cliente psql.kubectl exec -it postgres-client -n DB_CLUSTER_NAMESPACE -- bash root:/# kinit USERNAME Password for USERNAME@REALM: root:/# psql -h HOSTNAME -d DB_NAME -U USERNAME@REALM psql (16.6 (Ubuntu 16.6-0ubuntu0.24.04.1), server 16.3) GSSAPI-encrypted connection Type "help" for help.
Ejecutar consultas en SQL
username=# select * from TABLE_NAME;
Inhabilita la autenticación de Active Directory
Para inhabilitar la autenticación de Active Directory, ejecuta el siguiente comando de Helm:
helm upgrade alloydbomni-operator PATH_TO_CHART -n alloydb-omni-system --set userDefinedAuthentication.enabled=false
El comando muestra el siguiente resultado:
Release "alloydbomni-operator" has been upgraded. Happy Helming! NAME: alloydbomni-operator LAST DEPLOYED: CURRENT_TIMESTAMP NAMESPACE: alloydb-omni-system STATUS: deployed REVISION: 2 TEST SUITE: None
¿Qué sigue?
- Integra la compatibilidad con usuarios de Active Directory en AlloyDB Omni.
- Integra la compatibilidad con grupos de Active Directory en AlloyDB Omni.
- Integra la compatibilidad con grupos de Active Directory en Kubernetes.
- Soluciona problemas de la integración de Active Directory en AlloyDB Omni.