Gestire l'autenticazione integrata utilizzando i criteri delle password

Seleziona una versione della documentazione:

Questa pagina descrive come impostare e gestire le policy per le password per AlloyDB Omni.

Informazioni sulle policy per le password

Se gli utenti del database della tua applicazione si autenticano con AlloyDB Omni utilizzando il metodo integrato basato su password, puoi rendere l'autenticazione più sicura applicando password efficaci. Puoi definire e abilitare l'applicazione delle password impostando una policy delle password di AlloyDB Omni.

Limitazioni delle policy per le password

Le norme relative alle password di AlloyDB Omni presentano le seguenti limitazioni:

  • I criteri per le password si applicano solo alle password create dopo l'impostazione dei criteri. Le password utente esistenti non sono interessate da una modifica dei criteri per le password.

  • I criteri per le password si applicano solo alle password inserite come testo normale. I criteri per le password non si applicano alle password inserite come stringhe criptate.

Imposta una policy delle password di AlloyDB Omni

Imposti un criterio per le password aggiornando i parametri della password GUC (Grand Unified Configuration) nel file di configurazione postgresql.conf. Per scoprire come impostare un parametro GUC, consulta Configurare i flag di database AlloyDB Omni.

Una norma relativa alle password per AlloyDB Omni può includere le seguenti opzioni:

  • Non consentire il nome utente: impedisce l'utilizzo del nome utente nella password.

  • Complessità della password: verifica se la password contiene il numero consentito di caratteri minuscoli, maiuscoli, numerici e non alfanumerici. Controlla anche se la lunghezza della password è valida.

  • Scadenza password: assicurati che le password vengano ruotate periodicamente.

Per un elenco dei flag dei criteri per le password supportati da AlloyDB Omni, consulta Flag dei criteri per le password.

Precaricare la libreria di convalida delle password

Affinché un criterio per le password venga applicato in AlloyDB Omni, deve essere caricata la libreria alloydb_password_validation. Per caricare questa libreria, segui questi passaggi:

  1. Individua il file di configurazione postgresql.conf per la tua installazione di AlloyDB Omni e aprilo in un editor di testo.

  2. Individua la riga shared_preload_libraries e controlla se include alloydb_password_validation. In caso contrario, devi aggiungerlo. Al termine, la riga shared_preload_libraries sarà simile alla seguente:

    shared_preload_libraries='google_columnar_engine,google_job_scheduler,google_storage,alloydb_password_validation'
    

Imponi la complessità delle password

Per applicare una policy di complessità della password:

  1. Verifica che il file postgresql.conf precarichi la libreria di convalida della password.

  2. Imposta il flag password.enforce_complexity su ON.

  3. Utilizza i flag della policy per le password per definire la tua policy per le password.

Ad esempio, per applicare un criterio per le password che prevede che una password debba contenere almeno una lettera maiuscola, un numero e avere una lunghezza di almeno 10 caratteri, imposta quanto segue nel file postgresql.conf:

  • password.enforce_complexity = ON
  • password.min_uppercase_letters = 1
  • password.min_numerical_chars = 1
  • password.min_pass_length = 10

Una volta impostati questi flag, il tentativo di impostare una password utente del database che non è conforme a questa policy delle password non va a buon fine. Ad esempio, con questo criterio impostato, il seguente comando client psql non va a buon fine perché la password foo è inferiore a 10 caratteri e non contiene un numero o un carattere maiuscolo.

CREATE USER USERNAME WITH PASSWORD foo;

Imponi la scadenza delle password

Per applicare la policy di scadenza della password:

  1. Verifica che il file postgresql.conf precarichi la libreria di convalida della password.

  2. Imposta il flag password.enforce_expiration su ON.

  3. Imposta il flag password.expiration_in_days sul numero di giorni dopo l'impostazione di una password prima che scada.

  4. Imposta il flag password.notify_expiration_in_days sul numero di giorni prima della scadenza di una password in cui un utente inizia a ricevere notifiche di scadenza della password.

Ad esempio, per applicare un criterio per le password che prevede la scadenza delle password dopo 30 giorni e che gli utenti vengano avvisati 15 giorni prima della scadenza della password, devi impostare quanto segue nel file postgresql.conf:

  • password.enforce_expiration = ON
  • password.expiration_in_days = 30
  • password.notify_expiration_in_days = 15

Se la password di un utente scade, l'utente non può connettersi ad AlloyDB Omni. Per reimpostare la password di un utente:

  1. Connettiti ad AlloyDB Omni utilizzando psql. Ad esempio, se hai installato AlloyDB Omni utilizzando Docker, esegui il seguente comando:

    sh docker exec -it CONTAINER-NAME psql -h localhost -U postgres

  2. Al prompt postgres=#, esegui questo comando:

    ALTER USER USERNAME WITH 'NEW-PASSWORD';
    

Per saperne di più sulla modifica della password di un utente, consulta ALTER ROLE nella documentazione di PostgreSQL.

Applica l'autenticazione basata su password per gli account amministratore interni

L'applicazione delle password per gli account amministratore automatizza e centralizza la rotazione e l'aggiornamento sicuri delle password di sistema critiche, in genere utilizzando uno strumento esterno come Vault. Questa funzionalità consente l'applicazione della policy zero-trust forzando l'autenticazione basata su password per gli account amministratore critici che AlloyDB Omni utilizza per gestire vari processi interni.

L'applicazione della password è supportata per i seguenti account di database:

  • alloydbadmin: l'account superutente per il controller Kubernetes (K8s).
  • alloydbmonitor: un account di sola lettura per la raccolta delle metriche del database.

Per abilitare l'applicazione, configura la specifica del cluster di database in modo che faccia riferimento agli oggetti secret di Kubernetes che archiviano le password per questi account. Questa procedura migliora la sicurezza e riduce l'overhead manuale necessario per gestire le credenziali per gli account di amministrazione interni del database.

Abilita l'applicazione delle password

Per abilitare l'applicazione delle password durante la creazione di un cluster:

  1. Assicurati di avere un cluster Kubernetes che esegue l'operatore AlloyDB Omni Kubernetes versione 1.7.0 o successive.
  2. Aggiungi l'attributo systemUserPasswordRefs alla specifica DBCluster. Questo attributo deve contenere coppie chiave-valore che collegano ogni nome account di sistema interno, ad esempio alloydbadmin e alloydbmonitor, al nome dell'oggetto secret Kubernetes corrispondente.
  3. Prima di creare il database, assicurati che il secret Kubernetes a cui viene fatto riferimento contenga la password iniziale per l'utente e che il formato dell'attributo segua questa struttura:

    systemUserPasswordRefs: USER_NAME:USER_NAME-PASSWORD-DATABASE_NAME
    

Gestire la rotazione delle password in modo sicuro

Dopo aver attivato l'applicazione, utilizza uno strumento esterno come Vault per gestire in modo sicuro la rotazione continua delle password.

  1. Aggiorna la password del database. Lo strumento esterno aggiorna la password per l'account di sistema direttamente in AlloyDB Omni.
  2. Aggiorna il secret Kubernetes. Lo strumento esterno aggiorna l'oggetto secret Kubernetes associato con la nuova password.

    • Il contenuto dell'oggetto secret deve essere una coppia chiave-valore in cui la chiave è il nome del database e il valore è la nuova password codificata in base64.
    • Ti consigliamo di utilizzare la seguente convenzione per il nome del secret:

      USER_NAME-pw-DATABASE_NAME
      

    L'operatore AlloyDB Omni rileva la modifica del secret Kubernetes e aggiorna automaticamente la cache delle password utilizzata dall'agente del database in esecuzione nel pod del database. L'agente utilizza quindi questa nuova password memorizzata nella cache per tutte le operazioni future sul database.

Disattivare l'applicazione forzata della password per un utente specifico

Per disattivare l'applicazione della password per un account di sistema specifico, devi rimuovere l'utente dall'elenco systemUserPasswordRefs nella specifica DBCluster.

  1. Rimuovi l'utente. Nella specifica DBCluster, elimina la coppia chiave-valore corrispondente all'utente che vuoi escludere dall'applicazione della password. Ad esempio, se lo disattivi per alloydbadmin, rimuovi alloydbadmin: alloydbadmin-pw-dbcluster-sample.
  2. Applica la specifica DBCluster modificata utilizzando kubectl apply.

    Dopo aver applicato la specifica aggiornata, l'applicazione della password viene disattivata per l'utente.

Non consentire i nomi utente nelle password

Per applicare il criterio che impedisce a una password di contenere un nome utente, segui questi passaggi:

  1. Verifica che il file postgresql.conf precarichi la libreria di convalida della password.

  2. Imposta password.enforce_password_does_not_contain_username su ON.

Ad esempio, per assicurarti che una password non contenga un nome utente come sottostringa, imposta quanto segue nel file postgresql.conf:

  • password.enforce_password_does_not_contain_username = ON

Se questo flag è impostato, l'operazione seguente non va a buon fine perché la password alex-secret contiene il nome utente alex:

CREATE USER alex WITH PASSWORD 'alex-secret';

Passaggi successivi