La configurazione di Active Directory in AlloyDB Omni è facoltativa ed è disabilitata per impostazione predefinita. Solo gli ambienti che utilizzano Active Directory Server per l'autenticazione possono utilizzare questo meccanismo di configurazione.
Prima di iniziare
Prima di integrare Active Directory, assicurati di soddisfare i seguenti requisiti:
- Assicurati che Active Directory sia configurato.
- Ottieni il
REALMdel server Active Directory. - Ottieni il nome host del centro di distribuzione chiavi (KDC) del server Active Directory. Il nome host è archiviato nelle immagini Docker.
- Ottieni il nome host del server di amministrazione del server Active Directory. Questo nome host è archiviato nelle immagini Docker.
- Assicurati di avere accesso al server Active Directory in modo da poter generare un file
.keytab. - Scegli un utente Active Directory da utilizzare per i test e l'accesso.
- Ottieni un file
.keytabdal server Active Directory esistente.
Ottenere un file .keytab dal server Active Directory esistente
Per ottenere un keytab da Active Directory Server:
- Accedi come amministratore al terminale PowerShell del server di directory Active Directory.
- Crea un utente denominato
postgreseseguendo il seguente comando, o utilizzando l'interfaccia utente di Active Directory. - Genera un keytab dell'entità di servizio che esegue il mapping a questo server Active Directory.
- Copia il file keytab sul computer Linux.
New-ADUser -Name "postgres" `
-SamAccountName "postgres" `
-UserPrincipalName "postgres@REALM" `
-Description "Service Account for AlloyDB Omni PostgreSQL Kerberos Authentication" `
-AccountPassword (Read-Host -AsSecureString "Set a strong password for the postgres service account") `
-Enabled $true `
-PasswordNeverExpires $true
ktpass /princ postgres/ALLOYDB_HOST_NAME@REALM /Pass ChangeMe123 /mapuser postgres /crypto ALL /ptype KRB5_NT_PRINCIPAL /mapOp set /out C:\Users\Public\postgres.keytab
Dove <HOST> è il nome di dominio completo del
server su cui prevedi di eseguire il deployment di AlloyDB Omni, ad esempio
alloydb-server.ad.example.com. Devi configurare lo stesso host in
il krb5.conf file nel mapping del realm del dominio.
Abilitare l'autenticazione di Active Directory
Per abilitare l'autenticazione di Active Directory in AlloyDB Omni, segui questi passaggi, che includono la configurazione dell' interfaccia di programmazione dell'applicazione del servizio di sicurezza generico (GSSAPI), un'interfaccia di programmazione di un'applicazione che consente ai programmi di accedere ai servizi di sicurezza.
Aggiungi le seguenti voci al file
/var/lib/postgresql/data/pg_hba.conf, prima della
host all all all scram-sha-256.Esegui il seguente comando Docker per aggiungere
gssall'interno del container:docker exec CONTAINER_NAME sed -i 's;^host all all all scram-sha-256$;hostgssenc all all 0.0.0.0/0 gss map=gssmap\n&;' /var/lib/postgresql/data/pg_hba.conf
Esegui il seguente comando Docker per verificare che il file
pg_hba.confsi trovi all'interno del container:docker exec CONTAINER_NAME cat /var/lib/postgresql/data/pg_hba.conf
Verifica che nel file sia presente la seguente voce:
hostgssenc all all 0.0.0.0/0 gss map=gssmap
Per ulteriori informazioni, consulta Il file pg_hba.conf.
Copia il file keytab nella directory dei dati all'interno dell'immagine AlloyDB Omni.
docker cp PATH TO KEYTAB FILE CONTAINER_NAME:/var/lib/postgresql/data/alloydb.keytab docker exec CONTAINER_NAME chmod 600 /var/lib/postgresql/data/alloydb.keytab docker exec CONTAINER_NAME chown postgres:postgres /var/lib/postgresql/data/alloydb.keytab
Il file keytab viene generato da Kerberos per il server PostgreSQL. Per saperne di più sull'autenticazione, consulta Autenticazione GSSAPI.
Aggiungi una voce per il file keytab al
/var/lib/postgresql/data/DATA_DIR/postgresql.conffile.Esegui il seguente comando Docker per aggiungere la voce all'interno del container:
docker exec CONTAINER_NAME sed -i '$akrb_server_keyfile='"'"'/var/lib/postgresql/data/alloydb.keytab'"'" /var/lib/postgresql/data/postgresql.conf
Esegui il seguente comando Docker per verificare il file
postgresql.confall'interno del container:docker exec CONTAINER_NAME tail /var/lib/postgresql/data/postgresql.conf
Assicurati che nel file sia presente la seguente voce:
krb_server_keyfile=/var/lib/postgresql/data/alloydb.keytab
Per ulteriori informazioni, consulta krb_server_keyfile.
(Facoltativo) Aggiungi voci al file
/var/lib/postgresql/data/DATA_DIR/pg_ident.conf.Quando utilizzi un sistema di autenticazione esterno come GSSAPI, il nome dell'utente del sistema operativo che ha avviato la connessione potrebbe non essere lo stesso dell'utente del database (ruolo) che vuoi utilizzare.
In questo caso, specifica il mapping utente di sistema-utente PostgreSQL nel
/var/lib/postgresql/data/DATA_DIR/pg_ident.conffile:docker exec -it CONTAINER_NAME bash $ echo -e " gssmap /^(.*)@EXAMPLE\.COM$ \1 gssmap /^(.*)@example\.com$ \1 " | column -t | tee -a /var/lib/postgresql/data/pg_ident.conf
Per implementare il mapping dei nomi utente, specifica
map=gssmapnel campo Options del filepg_hba.conf.Per ulteriori informazioni sull'autenticazione basata su ident, consulta Mappe ident.
Ricarica le configurazioni di PostgreSQL utilizzando il seguente comando:
docker exec -it CONTAINER_NAME psql -h localhost -U postgres psql (16.3) Type "help" for help. postgres=# select pg_reload_conf();
Testare l'autenticazione di Active Directory
Per verificare che l'autenticazione di Active Directory funzioni:
- Accedi ad Active Directory utilizzando
kinit. Esegui il seguente comando
psqldal computer su cui esegui di solitokinit:root@4f6414ad02ef:/# kinit AD_USER_NAME Password for user1@YOUR.REALM: root@4f6414ad02ef:/# psql --h ALLOYDB_SERVER_HOST_NAME -U AD_USER_NAME psql (16.6 (Ubuntu 16.6-0ubuntu0.24.04.1), server 16.3) GSSAPI-encrypted connection Type "help" for help. user1=#
Disabilitare l'autenticazione di Active Directory
Per disabilitare l'autenticazione di Active Directory in AlloyDB Omni, segui questi passaggi, che disabilitano GSSAPI:
Rimuovi le voci nel file
pg_hba.confche rimandano al metodo di autenticazionegss:docker exec CONTAINER_NAME sed -i '/hostgssenc all all 0.0.0.0\/0 gss map=gssmap/d' /var/lib/postgresql/data/pg_hba.conf
Ricarica le configurazioni di PostgreSQL utilizzando il seguente comando:
docker exec -it CONTAINER_NAME psql -h localhost -U postgres psql (16.3) Type "help" for help. postgres=# select pg_reload_conf();
Passaggi successivi
- Integra il supporto dei gruppi di Active Directory con AlloyDB Omni.
- Risolvi i problemi di Active Directory in AlloyDB Omni.