Integra il supporto utenti di Active Directory su Kubernetes

Seleziona una versione della documentazione:

Questo documento descrive come abilitare l'integrazione di Active Directory nel cluster di database AlloyDB Omni basato su Kubernetes in modo da consentire agli utenti esistenti basati su Active Directory di accedere al tuo database AlloyDB Omni. L'integrazione di Active Directory fornisce l'autorizzazione tramite GSSAPI per gli utenti autenticati utilizzando il meccanismo Kerberos per accedere ad AlloyDB Omni.

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:

  1. Esegui l'upgrade dell'operatore AlloyDB Omni alla versione 1.5.0.
  2. Crea una risorsa di autenticazione definita dall'utente.
    1. Crea un nuovo manifest della risorsa UserDefinedAuthentication.
    2. Compila spec.dbclusterRef con il nome del DBCluster di destinazione.
    3. Inserisci in spec.keytabSecretRef il nome del secret keytab.
    4. Copia le regole pg_hba.conf esistenti pertinenti per l'autenticazione Active Directory e Kerberos nel campo spec.pgHbaEntries.
    5. Copia l'eventuale pg_ident.conf rules esistente nel campo spec.pgIdentEntries.
    6. Applica questo nuovo manifest, ad esempio kubectl apply -f user-auth-crd.yaml.
  3. Rimuovi la configurazione di anteprima e esegui nuovamente il deployment del cluster.
    1. 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.
    2. Elimina le mappe di configurazione pg_hba e pg_ident che hai creato.
    3. Applica di nuovo il manifest DBCluster aggiornato.

Configurare il supporto di Active Directory

  1. 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.

  2. 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 esempio DB_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 in pg_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, specifica map= nel campo delle opzioni del file pg_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

  1. 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;
    
  2. Accedi al database utilizzando l'utente Active Directory. Devi aver attivato kinit nel client a cui ti stai connettendo. In questo esempio, il pod postgres-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.
    
  3. 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