Per ulteriori informazioni, vedi Panoramica di Active Directory.
Questo documento presuppone che tu abbia familiarità con l'applicazione dei file manifest Kubernetes e con l'utilizzo dello strumento a riga di comando kubectl. Per saperne di più, consulta Strumento a riga di comando (kubectl).
Prima di iniziare
Per attivare l'integrazione di Active Directory, devi disporre di:
- Un cluster AlloyDB Omni di cui è stato eseguito il deployment in un ambiente Kubernetes
- Un file keytab del server Active Directory
Esegui la migrazione dall'operatore AlloyDB Omni Kubernetes 1.4.0 alla versione 1.5.0
Se utilizzi l'integrazione di Active Directory nell'operatore AlloyDB Omni versione 1.4.0 o precedente, devi eseguire la migrazione all'operatore AlloyDB Omni versione 1.5.0.
Per eseguire la migrazione all'operatore AlloyDB Omni versione 1.5.0:
- Esegui l'upgrade dell'operatore AlloyDB Omni alla versione 1.5.0.
- Crea una risorsa di autenticazione definita dall'utente.
- Crea un nuovo manifest della risorsa UserDefinedAuthentication.
- Compila
spec.dbclusterRef
con il nome del DBCluster di destinazione. - Inserisci in
spec.keytabSecretRef
il nome del secret keytab. - Copia le regole
pg_hba.conf
esistenti pertinenti per l'autenticazione Active Directory e Kerberos nel campospec.pgHbaEntries
. - Copia l'eventuale
pg_ident.conf rules
esistente nel campospec.pgIdentEntries
. - Applica questo nuovo manifest, ad esempio
kubectl apply -f user-auth-crd.yaml
.
- Rimuovi la configurazione di anteprima e esegui nuovamente il deployment del cluster.
- Nella definizione della risorsa DBCluster, rimuovi tutte le annotazioni che hai utilizzato in precedenza per configurare l'integrazione di Active Directory, ad esempio, regole di autenticazione basata sull'host (HBA), regole ident e annotazione del file keytab.
- Elimina le mappe di configurazione
pg_hba
epg_ident
che hai creato. - Applica di nuovo il manifest DBCluster aggiornato.
Configurare il supporto di Active Directory
Crea e applica un secret con il keytab:
apiVersion: v1 kind: Secret metadata: name: KEYTAB_SECRET_NAME namespace: DB_CLUSTER_NAMESPACE type: Opaque data: krb5.keytab: | KEYTAB_FILE_CONTENT
Di seguito è riportato un comando di esempio che genera un file keytab sul server Active Directory:
ktpass /princ postgres/DBCLUSTER_HOST@REALM /Pass PASSWORD /mapuser postgres /crypto ALL /ptype KRB5_NT_Principal /out OUTPUT_PATH
ALLOYDB_HOST
è l'host che punta al DBCluster o all'indirizzo IP DBCluster.Applica il seguente manifest della risorsa personalizzata di autenticazione definita dall'utente:
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
Sostituisci quanto segue:
USER_DEFINED_AUTHENTICATION_NAME
: il nome di UserDefinedConfiguration, ad esempioDB_CLUSTER_NAME-ad-auth
.DB_CLUSTER_NAMESPACE
: lo spazio dei nomi Kubernetes per questo piano di backup. Lo spazio dei nomi deve corrispondere a quello del cluster di database.DB_CLUSTER_NAME
: il nome del cluster di database che hai assegnato quando l'hai creato.KEYTAB_SECRET_NAME
: il nome del file keytab che hai creato.PG_HBA_ENTRIES
:pg_hba.conf
voci come elenco di stringhe. Queste voci sovrascrivono le voci predefinite inpg_hba.conf
. Se aggiungi una configurazione non valida, gli utenti non possono accedere.Nell'esempio precedente, hai aggiunto voci per l'autenticazione basata su GSS seguita dall'autenticazione basata su password. Ciò significa che l'utente ha eseguito l'accesso utilizzando l'API GSS. Se questo approccio di accesso non va a buon fine, viene utilizzata l'autenticazione basata su password come fallback.
Per saperne di più, consulta Il file pg_hba.conf.
PG_IDENT_ENTRIES
:pg_ident.conf
voci come elenco di stringhe. Per implementare il mapping dei nomi utente, specificamap=
nel campo delle opzioni del filepg_hba.conf
. Per ulteriori informazioni, consulta Ident Maps.Vedi il seguente esempio:
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
Creare ruoli del database come utente Active Directory
Crea un ruolo nel database che corrisponda all'utente Active Directory. Per creare un ruolo per l'utente Active Directory, connettiti al cluster ed esegui questi comandi:
username=# CREATE ROLE "USERNAME@REALM" WITH LOGIN;
Accedi al database utilizzando l'utente Active Directory. Devi aver attivato
kinit
nel client a cui ti stai connettendo. In questo esempio, il podpostgres-client
ha installato kinit e psql ed è configurato per connettersi al cluster AlloyDB Omni utilizzando il client 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.
Esegui query SQL.
username=# select * from TABLE_NAME;
Disattiva l'autenticazione di Active Directory
Per disattivare l'autenticazione Active Directory, esegui questo comando Helm:
helm upgrade alloydbomni-operator PATH_TO_CHART -n alloydb-omni-system --set userDefinedAuthentication.enabled=false
Il comando restituisce il seguente output:
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
Passaggi successivi
- Integrare il supporto utenti di Active Directory con AlloyDB Omni.
- Integra il supporto dei gruppi Active Directory con AlloyDB Omni.
- Integra il supporto dei gruppi Active Directory su Kubernetes.
- Risolvi i problemi relativi all'integrazione di Active Directory in AlloyDB Omni.