Informazioni sulle policy relative alle password
Se gli utenti del database della tua applicazione eseguono l'autenticazione in AlloyDB Omni utilizzando il metodo integrato basato su password, puoi rendere l'autenticazione più sicura applicando l'utilizzo di password efficaci. Puoi definire e attivare l'applicazione delle password impostando una policy per le password di AlloyDB Omni.
Limitazioni delle policy relative alle password
Le policy 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 della policy relativa alle password.
Le policy relative alle password si applicano alle password inserite solo come testo normale. I criteri delle password non si applicano alle password inserite come stringhe criptate.
Imposta una policy delle password di AlloyDB Omni
Per impostare una policy per le password, aggiorna i parametri delle password GUC (Grand Unified Configuration) nel file di configurazione postgresql.conf. Per scoprire come impostare un parametro GUC, consulta Configura i flag di database AlloyDB Omni.
Una policy per le 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 delle password: assicurati che le password vengano ruotate periodicamente.
Per un elenco dei flag delle policy relative alle password supportati da AlloyDB Omni, consulta Flag delle policy relative alle password.
Per rispettare gli standard di sicurezza e seguire le indicazioni del motore per suggerimenti sulla sicurezza, devi attivare tutte e tre le opzioni insieme configurando i relativi flag di applicazione principali su ON:
password.enforce_password_does_not_contain_usernamepassword.enforce_complexitypassword.enforce_expiration
Se imposti uno di questi tre flag su OFF o li ometti, il motore per suggerimenti di sicurezza segnala che l'istanza non ha una policy per le password attivata.
Precarica la libreria di convalida delle password
Affinché una policy per le password venga applicata in AlloyDB Omni, è necessario caricare la libreria alloydb_password_validation. Per caricare questa libreria,
procedi nel seguente modo:
Individua il file di configurazione
postgresql.confper l'installazione di AlloyDB Omni e aprilo in un editor di testo.Individua la riga
shared_preload_librariese controlla se includealloydb_password_validation. In caso contrario, devi aggiungerlo. Al termine, la rigashared_preload_librariessarà 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 sulla complessità delle password, segui questi passaggi:
Verifica che il file
postgresql.confprecarichi la libreria di convalida delle password.Imposta il flag
password.enforce_complexitysuON.Utilizza i flag delle policy relative alle password per definire la tua policy relativa alle password.
Ad esempio, per applicare una policy per le password che stabilisce che una password deve 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 = ONpassword.min_uppercase_letters = 1password.min_numerical_chars = 1password.min_pass_length = 10
Dopo aver impostato questi flag, un tentativo di impostare una password utente del database che non è conforme a questa policy delle password non va a buon fine. Ad esempio, con questa policy impostata, il seguente comando client psql non va a buon fine perché la password foo è composta da meno di 10 caratteri e non contiene un numero o un carattere maiuscolo.
CREATE USER USERNAME WITH PASSWORD foo;
Imponi la scadenza della password
Per applicare la policy di scadenza delle password, segui questi passaggi:
Verifica che il file
postgresql.confprecarichi la libreria di convalida delle password.Imposta il flag
password.enforce_expirationsuON.Imposta il flag
password.expiration_in_dayssul numero di giorni dopo i quali una password scade.Imposta il flag
password.notify_expiration_in_dayssul 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 una policy per le password che prevede che le password scadano dopo 30 giorni e che gli utenti ricevano una notifica 15 giorni prima della scadenza della password, devi impostare quanto segue nel file postgresql.conf:
password.enforce_expiration = ONpassword.expiration_in_days = 30password.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, segui questi passaggi:
Connettiti ad AlloyDB Omni utilizzando
psql. Ad esempio, se hai installato AlloyDB Omni utilizzando Docker, esegui questo comando:sh docker exec -it CONTAINER-NAME psql -h localhost -U postgresAl 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, di solito utilizzando uno strumento esterno come Vault. Questa funzionalità consente di rispettare la policy Zero Trust applicando l'autenticazione basata su password per gli account amministratore critici che AlloyDB Omni utilizza per gestire vari processi interni.
L'applicazione delle password è supportata per i seguenti account di database:
alloydbadmin: l'account super utente 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 di questi account. Questo processo migliora la sicurezza e riduce l'overhead manuale necessario per gestire le credenziali degli account amministratore interni del database.
Abilita l'applicazione forzata delle password
Per abilitare l'applicazione delle password durante la creazione di un cluster, segui questi passaggi:
- Assicurati di avere un cluster Kubernetes che esegue l'operatore AlloyDB Omni Kubernetes 1.7.0 o versioni successive.
- Aggiungi l'attributo
systemUserPasswordRefsalla specifica DBCluster. Questo attributo deve contenere coppie chiave-valore che collegano ogni nome di account di sistema interno, ad esempioalloydbadminealloydbmonitor, al nome dell'oggetto secret di Kubernetes corrispondente. Prima di creare il database, assicurati che il secret Kubernetes a cui viene fatto riferimento contenga la password di seed per l'utente e che il formato dell'attributo segua questa struttura:
systemUserPasswordRefs: USER_NAME:USER_NAME-PASSWORD-DATABASE_NAME
Gestisci 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.
- Aggiorna la password del database. Lo strumento esterno aggiorna la password per l'account di sistema direttamente in AlloyDB Omni.
Aggiorna il secret di Kubernetes. Lo strumento esterno aggiorna quindi l'oggetto secret di 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 al 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.
Disattiva l'applicazione forzata delle password per un utente specifico
Per disattivare l'applicazione delle password per un account di sistema specifico, devi rimuovere l'utente dall'elenco systemUserPasswordRefs nella specifica DBCluster.
- Rimuovi l'utente. Nella specifica DBCluster, elimina la coppia chiave-valore corrispondente all'utente che vuoi escludere dall'applicazione della password. Ad esempio, se la disattivi per
alloydbadmin, rimuovialloydbadmin: alloydbadmin-pw-dbcluster-sample. Applica la specifica DBCluster modificata utilizzando
kubectl apply.Dopo aver applicato la specifica aggiornata, l'applicazione della password viene disabilitata per quell'utente.
Non consentire i nomi utente nelle password
Per applicare la policy che impedisce a una password di contenere un nome utente, segui questi passaggi:
Verifica che il file
postgresql.confprecarichi la libreria di convalida delle password.Imposta
password.enforce_password_does_not_contain_usernamesuON.
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, la seguente operazione non va a buon fine perché la password alex-secret contiene il nome utente alex:
CREATE USER alex WITH PASSWORD 'alex-secret';