Para obtener más información, consulta la descripción general de Active Directory.
En este documento se da por hecho que sabes cómo aplicar archivos de manifiesto de Kubernetes y usar la herramienta de línea de comandos kubectl. Para obtener más información, consulta Herramienta de línea de comandos (kubectl).
Antes de empezar
Para habilitar la integración de Active Directory, debes tener lo siguiente:
- Un clúster de AlloyDB Omni desplegado en un entorno de Kubernetes
- Un archivo keytab del servidor de Active Directory
Migrar del operador de AlloyDB Omni Kubernetes 1.4.0 a 1.5.0
Si utilizas 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 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 recursos UserDefinedAuthentication.
- Rellena
spec.dbclusterRef
con el nombre de DBCluster de destino. - Rellena
spec.keytabSecretRef
con el nombre del secreto de keytab. - Copia las reglas de
pg_hba.conf
que sean relevantes para la autenticación de Active Directory y Kerberos en el campospec.pgHbaEntries
. - Copia el
pg_ident.conf rules
(si lo hay) en el campospec.pgIdentEntries
. - Aplica este nuevo manifiesto, por ejemplo,
kubectl apply -f user-auth-crd.yaml
.
- Elimina la configuración de vista previa y vuelve a implementar el clúster.
- En la definición del recurso DBCluster, elimina todas las anotaciones que hayas usado anteriormente para configurar la integración de Active Directory, como las reglas de autenticación basada en host (HBA), las reglas de identidad y la anotación del archivo keytab.
- Elimina los mapas de configuración
pg_hba
ypg_ident
que has creado. - Vuelve a aplicar el archivo de manifiesto de DBCluster actualizado.
Configurar 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
A continuación, se muestra un ejemplo de 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
Haz los cambios siguientes:
USER_DEFINED_AUTHENTICATION_NAME
: el nombre de UserDefinedConfiguration. Por ejemplo,DB_CLUSTER_NAME-ad-auth
.DB_CLUSTER_NAMESPACE
: el espacio de nombres de Kubernetes de 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
: el nombre del clúster de la base de datos, que asignaste cuando lo creaste.KEYTAB_SECRET_NAME
: el nombre del archivo keytab que has creado.PG_HBA_ENTRIES
:pg_hba.conf
entradas como una lista de cadenas. Estas entradas sobrescriben las entradas predeterminadas depg_hba.conf
. Si añades una configuración no válida, los usuarios no podrán iniciar sesión.En el ejemplo anterior, has añadido entradas para la autenticación basada en GSS seguida de la autenticación basada en contraseñas. Esto significa que el usuario ha iniciado sesión mediante la API GSS. Si este método de inicio de sesión falla, se usará la autenticación basada en contraseñas como alternativa.
Para obtener más información, consulta el artículo El archivo pg_hba.conf.
PG_IDENT_ENTRIES
:pg_ident.conf
entradas 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
Crear 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;
Inicia sesión en la base de datos con el usuario de Active Directory. Debes tener
kinit
habilitado en el cliente al que te conectes. En este ejemplo, el podpostgres-client
tiene instalados kinit y psql, y está configurado para conectarse al clúster de AlloyDB Omni mediante 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 de SQL.
username=# select * from TABLE_NAME;
Inhabilitar 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 devuelve 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
Siguientes pasos
- Integra la compatibilidad con grupos de Active Directory en Kubernetes.
- Soluciona problemas de integración de Active Directory en AlloyDB Omni.