Utilizzo delle crittografia password SCRAM per PostgreSQL - Amazon Aurora

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo delle crittografia password SCRAM per PostgreSQL

Il Salted Challenge Response Authentication Mechanism (SCRAM) è un'alternativa all'algoritmo Message Digest (MD5) predefinito di PostgreSQL per la crittografia delle password. Il meccanismo di autenticazione SCRAM è considerato più sicuro di. MD5 Per ulteriori informazioni su questi due diversi approcci di protezione delle password, consulta la sezione relativa alla autenticazione password nella documentazione di PostgreSQL.

Si consiglia di utilizzare SCRAM anziché MD5 come schema di crittografia delle password per il cluster Aurora PostgreSQL DB. SCRAM è supportato in Aurora PostgreSQL versione 10 e in tutte le versioni principali e secondarie successive. È un meccanismo crittografico di richiesta/risposta che utilizza l'algoritmo scram-sha-256 per l'autenticazione e la crittografia delle password.

Potrebbe essere necessario aggiornare le librerie per le applicazioni client per supportare SCRAM. Ad esempio, le versioni JDBC precedenti alla 42.2.0 non supportano SCRAM. Per ulteriori informazioni, consulta PostgreSQL JDBC Driver nella documentazione di PostgreSQL JDBC Driver. Per un elenco di altri driver PostgreSQL e il supporto SCRAM, consulta Elenco dei driver nella documentazione di PostgreSQL.

Aurora PostgreSQL versione 14 e successive supportano scram-sha-256 per la crittografia password per impostazione predefinita per nuovi cluster database. Per queste versioni, il parametro predefinito del cluster DB group (default.aurora-postgresql14) ha il valore impostato su scram-sha-256. password_encryption SCRAM non è supportato per Aurora Serverless v1.

Configurazione di cluster database Aurora PostgreSQL per richiedere SCRAM

Per Aurora PostgreSQL 14.3 e versioni successive, puoi richiedere che il cluster database Aurora PostgreSQL accetti solo password che utilizzano l'algoritmo scram-sha-256.

Importante

Per i proxy RDS esistenti con database PostgreSQL, se si modifica l'autenticazione del database in modo da utilizzare solo SCRAM, il proxy diventa non disponibile per un massimo di 60 secondi. Per evitare il problema, procedi in uno dei seguenti modi:

  • Assicurati che il database consenta entrambe le autenticazioni SCRAM e MD5.

  • Per utilizzare solo l'autenticazione SCRAM, crea un nuovo proxy, esegui la migrazione del traffico dell'applicazione sul nuovo proxy, quindi elimina il proxy precedentemente associato al database.

Prima di apportare modifiche al sistema, assicurati di comprendere il processo completo, come segue:

  • Ottieni informazioni su tutti i ruoli e la crittografia password per tutti gli utenti del database.

  • Verifica le impostazioni dei parametri per il cluster database Aurora PostgreSQL per i parametri che controllano la crittografia password.

  • Se il cluster database Aurora PostgreSQL utilizza un gruppo di parametri predefinito, devi creare un gruppo di parametri cluster database e applicarlo al cluster database Aurora PostgreSQL in modo da poter modificare i parametri quando necessario. Se il cluster database Aurora PostgreSQL utilizza un gruppo di parametri personalizzati, puoi modificare i parametri necessari in seguito nel processo, in base alle esigenze.

  • Modifica il parametro password_encryption in scram-sha-256.

  • Invia una notifica a tutti gli utenti del database per informarli che devono aggiornare le password. Esegui la stessa operazione per l'account postgres. Le nuove password sono crittografate e archiviate utilizzando l'algoritmo scram-sha-256.

  • Verifica che tutte le password siano crittografate utilizzando come il tipo di crittografia.

  • Se tutte le password utilizzano scram-sha-256, puoi modificare il rds.accepted_password_auth_method da md5+scram a scram-sha-256.

avvertimento

Dopo aver modificato rds.accepted_password_auth_method in scram-sha-256, gli eventuali utenti (ruoli) con password crittografate md5 non potranno connettersi.

Preparazione alla richiesta di SCRAM per il cluster database Aurora PostgreSQL

Prima di apportare modifiche al cluster database Aurora PostgreSQL, controlla tutti gli account utente del database esistenti. Inoltre, controlla il tipo di crittografia utilizzato per le password. Puoi eseguire queste attività utilizzando l'estensione rds_tools. Per vedere quali versioni di PostgreSQL sono rds_tools supportate, consulta Versioni di estensione per Amazon RDS for PostgreSQL.

Per ottenere un elenco di utenti del database (ruoli) e metodi di crittografia password
  1. Utilizza psql per connetterti all'istanza database principale del cluster database Aurora PostgreSQL , come mostrato di seguito.

    psql --host=cluster-name-instance-1.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
  2. Installa l'estensione rds_tools.

    postgres=> CREATE EXTENSION rds_tools; CREATE EXTENSION
  3. Ottieni un elenco di ruoli e crittografia.

    postgres=> SELECT * FROM rds_tools.role_password_encryption_type();

    L'output visualizzato è simile al seguente.

    rolname | encryption_type ----------------------+----------------- pg_monitor | pg_read_all_settings | pg_read_all_stats | pg_stat_scan_tables | pg_signal_backend | lab_tester | md5 user_465 | md5 postgres | md5 (8 rows)

Creazione di un gruppo di parametri del cluster DB personalizzato

Nota

Se il cluster database Aurora PostgreSQL utilizza già un gruppo di parametri personalizzati, non è necessario crearne uno nuovo.

Per una panoramica dei gruppi di parametri per Aurora, consulta Creazione di un gruppo di parametri del cluster DB in Amazon Aurora.

Il tipo di crittografia password utilizzato per le password è impostato in un parametro, password_encryption. La crittografia consentita dal cluster database Aurora PostgreSQL è impostata in un altro parametro, rds.accepted_password_auth_method. La modifica di uno di questi rispetto ai valori predefiniti richiede la creazione di un gruppo di parametri del cluster database personalizzato e l'applicazione al cluster.

Per ulteriori informazioni, consulta Creazione di un gruppo di parametri del cluster DB in Amazon Aurora.

Ora puoi associare il gruppo di parametri personalizzati all'istanza database.

Creare un gruppo di parametri del cluster database personalizzato
  1. Utilizza il comando CLI create-db-cluster-parameter-group per creare il gruppo di parametri personalizzati per il cluster. Il seguente esempio utilizza aurora-postgresql13 come l'origine per questo gruppo di parametri personalizzati.

    In Linux, macOS, oppure Unix:

    aws rds create-db-cluster-parameter-group --db-cluster-parameter-group-name 'docs-lab-scram-passwords' \ --db-parameter-group-family aurora-postgresql13 --description 'Custom DB cluster parameter group for SCRAM'

    In Windows:

    aws rds create-db-cluster-parameter-group --db-cluster-parameter-group-name "docs-lab-scram-passwords" ^ --db-parameter-group-family aurora-postgresql13 --description "Custom DB cluster parameter group for SCRAM"

    Ora puoi associare il gruppo di parametri personalizzati al cluster.

  2. Utilizza il comando CLI modify-db-cluster per applicare questo gruppo di parametri personalizzati al cluster database Aurora PostgreSQL.

    In Linux, macOS, oppure Unix:

    aws rds modify-db-cluster --db-cluster-identifier 'your-instance-name' \ --db-cluster-parameter-group-name "docs-lab-scram-passwords

    In Windows:

    aws rds modify-db-cluster --db-cluster-identifier "your-instance-name" ^ --db-cluster-parameter-group-name "docs-lab-scram-passwords

    Per ripetere la sincronizzazione del cluster database Aurora PostgreSQL con il gruppo di parametri del cluster DB personalizzati, è necessario riavviare l'istanza principale e tutte le altre istanze del cluster.

Configurazione della crittografia password per utilizzare SCRAM

Il meccanismo di crittografia password utilizzato da un cluster database Aurora PostgreSQL è impostato nel gruppo di parametri del cluster DB nel parametro password_encryption. I valori consentiti sono unset, md5 o scram-sha-256. Il valore predefinito dipende dalla versione di Aurora PostgreSQL come segue:

  • Aurora PostgreSQL 14:-l'impostazione predefinita è scram-sha-256

  • Aurora PostgreSQL 13: l'impostazione predefinita è md5

Con un gruppo di parametri del cluster database personalizzato collegato al cluster database Aurora PostgreSQL, puoi modificare i valori per il parametro di crittografia password.

Di seguito, la console RDS mostra i valori predefiniti per i parametri password_encryption per Aurora PostgreSQL.
Per modificare l'impostazione di crittografia password in scram-sha-256
  • Modifica il valore della crittografia password in scram-sha-256, come mostrato di seguito. La modifica può essere applicata immediatamente perché il parametro è dinamico, quindi non è necessario un riavvio per rendere effettiva la modifica.

    In Linux, macOS, oppure Unix:

    aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name \ 'docs-lab-scram-passwords' --parameters 'ParameterName=password_encryption,ParameterValue=scram-sha-256,ApplyMethod=immediate'

    In Windows:

    aws rds modify-db-parameter-group --db-parameter-group-name ^ "docs-lab-scram-passwords" --parameters "ParameterName=password_encryption,ParameterValue=scram-sha-256,ApplyMethod=immediate"

Migrazione delle password per i ruoli utente in SCRAM

Puoi migrare le password per i ruoli utente a SCRAM come descritto di seguito.

Per migrare le password degli utenti (ruoli) del database da a SCRAM MD5
  1. Accedi come utente amministratore (nome utente predefinito, postgres) come mostrato di seguito.

    psql --host=cluster-name-instance-1.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
  2. Controlla l'impostazione del parametro password_encryption sull'istanza database RDS per PostgreSQL utilizzando il comando seguente.

    postgres=> SHOW password_encryption; password_encryption --------------------- md5 (1 row)
  3. Modifica il valore di questo parametro in scram-sha-256. Si tratta di un parametro dinamico, quindi non è necessario riavviare l'istanza dopo aver apportato questa modifica. Controlla nuovamente il valore per essere certo che ora sia impostato su scram-sha-256, come descritto di seguito.

    postgres=> SHOW password_encryption; password_encryption --------------------- scram-sha-256 (1 row)
  4. Invia una notifica a tutti gli utenti del database con la richiesta di modificare le password. Assicurati di modificare anche la password per l'account postgres (l'utente del database con privilegi rds_superuser).

    labdb=> ALTER ROLE postgres WITH LOGIN PASSWORD 'change_me'; ALTER ROLE
  5. Ripeti il processo per tutti i database sul cluster database Aurora PostgreSQL.

Modifica del parametro per richiedere SCRAM

Questo è il passaggio finale del processo. Dopo aver apportato la modifica nella procedura seguente, gli eventuali account utente (ruoli) che ancora utilizzano la crittografia md5 per le password non possono accedere al cluster database Aurora PostgreSQL.

Il rds.accepted_password_auth_method specifica il metodo di crittografia accettato dal cluster database Aurora PostgreSQL per una password utente durante il processo di accesso. Il valore predefinito è md5+scram, il che significa che entrambi i metodi sono accettati. Nell'immagine seguente, è disponibile l'impostazione predefinita per questo parametro.

La console RDS che mostra i valori predefiniti e consentiti per i parametri rds.accepted_password_auth_method.

I valori consentiti per questo parametro sono md5+scram o scram. La modifica del valore di questo parametro in scram lo rende un requisito.

Modificare il valore del parametro per richiedere l'autenticazione SCRAM per le password
  1. Verifica che tutte le password degli utenti del database per tutti i database sul cluster database Aurora PostgreSQL utilizzino scram-sha-256 per la crittografia password. A questo proposito, esegui la query su rds_tools per il ruolo (utente) e il tipo di crittografia, come segue.

    postgres=> SELECT * FROM rds_tools.role_password_encryption_type(); rolname | encryption_type ----------------------+----------------- pg_monitor | pg_read_all_settings | pg_read_all_stats | pg_stat_scan_tables | pg_signal_backend | lab_tester | scram-sha-256 user_465 | scram-sha-256 postgres | scram-sha-256 ( rows)
  2. Ripeti la query su tutte le istanze database nel cluster database Aurora PostgreSQL.

    Se tutte le password utilizzano scram-sha-256, puoi procedere.

  3. Modifica il valore dell'autenticazione password accettata in scram-sha-256, come riportato di seguito.

    In Linux, macOS, oppure Unix:

    aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name 'docs-lab-scram-passwords' \ --parameters 'ParameterName=rds.accepted_password_auth_method,ParameterValue=scram,ApplyMethod=immediate'

    In Windows:

    aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name "docs-lab-scram-passwords" ^ --parameters "ParameterName=rds.accepted_password_auth_method,ParameterValue=scram,ApplyMethod=immediate"