Utilizzo SCRAM per la crittografia delle password Postgree SQL - Amazon Relational Database Service

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 SCRAM per la crittografia delle password Postgree SQL

Il meccanismo di autenticazione Salted Challenge Response (SCRAM) è un'alternativa all'algoritmo Message Digest () predefinito SQL di Postgre per la crittografia delle password. MD5 Il meccanismo di SCRAM autenticazione è considerato più sicuro di. MD5 Per saperne di più su questi due diversi approcci alla protezione delle password, consulta Autenticazione tramite password nella documentazione di SQL Postgre.

Si consiglia di utilizzare SCRAM piuttosto che MD5 come schema di crittografia delle password per il cluster DB. RDSper l'istanza DB di SQL Postgre. È 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 il supporto delle applicazioni client. SCRAM Ad esempio, JDBC le versioni precedenti alla 42.2.0 non supportanoSCRAM. Per ulteriori informazioni, consulta Postgre SQL JDBC Driver nella documentazione del driver SQL JDBC Postgre. Per un elenco di altri driver e SCRAM supporto per Postgre, consulta Elenco SQL dei driver nella documentazione di Postgre. SQL

Nota

RDSper Postgre versione 13.1 e successive supportano scram-sha-256. SQL Queste versioni consentono inoltre di configurare l'istanza DB su requireSCRAM, come illustrato nelle seguenti procedure.

Configurazione del cluster da richiedere SQL SCRAM

è possibile richiedere che il accetti solo password che utilizzano l'algoritmo SQL scram-sha-256.

Importante

Per i RDS proxy esistenti con database Postgre, se si modifica l'autenticazione del SQL database per utilizzarla esclusivamente, il proxy diventa non disponibile per un massimo di 60 secondi. SCRAM 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.

  • Ricontrolla le impostazioni dei parametri per il RDScluster per i SQL parametri che controllano la crittografia delle password.

  • Se il per l'istanza SQL DB Postgre utilizza un gruppo di parametri predefinito, è necessario creare un gruppo di in modo da poter modificare i parametri quando necessario. RDS SQL Se il per l'istanza Postgre SQL DB utilizza un gruppo di parametri personalizzato, è possibile modificare i parametri necessari più avanti nel processo, se necessario.

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

Prepararsi a richiedere il SQL

Prima di apportare modifiche al controlla tutti gli account utente del SQL database esistenti. Inoltre, controlla il tipo di crittografia utilizzato per le password. Puoi eseguire queste attività utilizzando l'estensione rds_tools. Questa estensione è supportata su e versioni successive.

Per ottenere un elenco di utenti del database (ruoli) e metodi di crittografia password
  1. Usa psql per connetterti all', la tua istanza database RDS per Postgre SQL, come illustrato di seguito.

    psql --host=db-name.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 DB personalizzato

Nota

Se il per l'istanza Postgre SQL DB utilizza già un gruppo di parametri personalizzato, non è necessario crearne uno nuovo.

Per una panoramica dei gruppi di parametri per AmazonRDS, consultaUtilizzo dei parametri sull'istanza database RDS for PostgreSQL.

Il tipo di crittografia password utilizzato per le password è impostato in un parametro, password_encryption. La crittografia consentita dal per l'istanza Postgre SQL DB è 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 database personalizzato e l'applicazione all'istanza.

Puoi anche usare il AWS Management Console oppure RDS API per creare un gruppo di di parametri DB. Per ulteriori informazioni, consulta

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

Creare un gruppo di parametri database personalizzato
  1. Utilizzate il create-db-parameter-group CLI comando per creare il gruppo di parametri DB personalizzato. Questo esempio utilizza postgres13 come l'origine per questo gruppo di parametri personalizzati.

    In Linux, macOS, oppure Unix:

    aws rds create-db-parameter-group --db-parameter-group-name 'docs-lab-scram-passwords' \ --db-parameter-group-family postgres13 --description 'Custom parameter group for SCRAM'

    In Windows:

    aws rds create-db-parameter-group --db-parameter-group-name "docs-lab-scram-passwords" ^ --db-parameter-group-family postgres13 --description "Custom DB parameter group for SCRAM"
  2. Usa il modify-db-instance CLI comando per applicare questo gruppo di parametri personalizzato al tuo cluster RDS for Postgre SQL DB.

    In Linux, macOS, oppure Unix:

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

    In Windows:

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

    Per risincronizzare l'istanza SQL DB RDS for Postgre con il gruppo di parametri DB personalizzato, è necessario riavviare l'istanza primaria e tutte le altre istanze del cluster. Per ridurre al minimo l'impatto sugli utenti, pianifica questa operazione in modo che si verifichi durante la normale finestra di manutenzione.

Configurazione della crittografia delle password da utilizzare SCRAM

Il meccanismo di crittografia della password utilizzato da un per un'istanza di Postgre SQL DB è impostato nel . password_encryption I valori consentiti sono unset, md5 o scram-sha-256. Il valore predefinito dipende dalla versione di , come segue:

  • RDSper Postgre SQL 14 e versioni successive — L'impostazione predefinita è scram-sha-256

  • RDSper Postgre SQL 13 — L'impostazione predefinita è md5

Con un gruppo di di parametri DB) collegato al è possibile modificare i valori per il parametro di crittografia della password.

Di seguito, la RDS console mostra i valori predefiniti per i password_encryption parametri di Postgre. RDS SQL
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-parameter-group --db-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

È possibile migrare le password per i ruoli utente nel modo descritto di SCRAM seguito.

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

    psql --host=db-name.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
  2. Controlla l'impostazione del password_encryption parametro sulla tua istanza di RDS For Postgre SQL DB usando il seguente comando.

    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 del tuo cluster DB. RDSper un'istanza DB di SQL Postgre.

Modifica del parametro in modo da richiedere SCRAM

Questo è il passaggio finale del processo. Dopo aver apportato la modifica nella procedura seguente, tutti gli account utente (ruoli) che utilizzano ancora la md5 crittografia per le password non possono accedere al cluster DB. RDSper un'istanza Postgre DB. SQL

rds.accepted_password_auth_methodspecifica il metodo di crittografia che il RDScluster accetta per una SQL 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 RDS console 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.

Per modificare il valore del parametro in modo da richiedere SCRAM l'autenticazione per le password
  1. Verifica che tutte le password utente del database per tutti i database del RDScluster utilizzate per la SQL crittografia delle password. scram-sha-256 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 DB del cluster DB . RDSper l'istanza DB di Postgre. SQL

    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-parameter-group --db-parameter-group-name 'docs-lab-scram-passwords' \ --parameters 'ParameterName=rds.accepted_password_auth_method,ParameterValue=scram,ApplyMethod=immediate'

    In Windows:

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