Uwierzytelnianie SCRAM w usłudze Azure Database for PostgreSQL — serwer elastyczny
DOTYCZY: Azure Database for PostgreSQL — serwer elastyczny
Salted Challenge Response Authentication Mechanism (SCRAM) to oparty na hasłach protokół wzajemnego uwierzytelniania. Jest to schemat odpowiedzi na żądanie, który dodaje kilka poziomów zabezpieczeń i uniemożliwia wąchanie haseł na niezaufanych połączeniach. Funkcja SCRAM obsługuje przechowywanie haseł na serwerze w postaci skrótów kryptograficznych, która zapewnia zaawansowane zabezpieczenia.
Uwaga
Aby uzyskać dostęp do elastycznego wystąpienia serwera usługi Azure Database for PostgreSQL przy użyciu metody uwierzytelniania SCRAM, biblioteki klienckie muszą obsługiwać protokół SCRAM. Zapoznaj się z listą sterowników obsługujących protokół SCRAM.
Uwaga
Uwierzytelnianie SCRAM nakłada dodatkowe obciążenie obliczeniowe na serwery aplikacji, które muszą obliczyć dowód klienta dla każdego uwierzytelniania. Wprowadzenie protokołu SCRAM narzut na wydajność może zostać złagodzone przez ograniczenie liczby połączeń w puli połączeń aplikacji (zmniejszenie liczby czattiness w aplikacji) lub ograniczenie liczby współbieżnych transakcji dozwolonych przez klienta (transakcje fragmenterów). Zaleca się przetestowanie obciążeń przed migracją do uwierzytelniania SCRAM.
Konfigurowanie uwierzytelniania PROTOKOŁU SCRAM
Zmień password_encryption na SCRAM-SHA-256. Obecnie elastyczny serwer usługi Azure Database for PostgreSQL obsługuje tylko protokół SCRAM przy użyciu algorytmu SHA-256.
Zezwalaj na użycie protokołu SCRAM-SHA-256 jako metody uwierzytelniania.
Ważne
Możesz wymusić tylko uwierzytelnianie SCRAM, wybierając tylko metodę SCRAM-SHA-256. Dzięki temu użytkownicy z uwierzytelnianiem MD5 mogą dłużej łączyć się z serwerem. W związku z tym przed wymusiniem protokołu SCRAM zaleca się stosowanie metod uwierzytelniania MD5 i SCRAM-SHA-256 do momentu zaktualizowania wszystkich haseł użytkowników do protokołu SCRAM-SHA-256. Typ uwierzytelniania dla użytkowników można sprawdzić przy użyciu zapytania wymienionego w kroku 7.
Zapisz zmiany. Są to właściwości dynamiczne i nie wymagają ponownego uruchomienia serwera.
Z poziomu klienta serwera elastycznego usługi Azure Database for PostgreSQL nawiąż połączenie z elastycznym wystąpieniem serwera usługi Azure Database for PostgreSQL. Na przykład:
psql "host=myPGServer.postgres.database.azure.com port=5432 dbname=postgres user=myDemoUser password=<password> sslmode=require" psql (12.3 (Ubuntu 12.3-1.pgdg18.04+1), server 12.6) SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off) Type "help" for help.
Sprawdź szyfrowanie haseł.
postgres=> show password_encryption; password_encryption --------------------- scram-sha-256 (1 row)
Następnie możesz zaktualizować hasło dla użytkowników.
postgres=> \password myDemoUser Enter new password: Enter it again: postgres=>
Typy uwierzytelniania użytkowników można zweryfikować przy użyciu
azure_roles_authtype()
funkcji.postgres=> SELECT * from azure_roles_authtype(); rolename | authtype ---------------------------+----------- azuresu | NOLOGIN pg_monitor | NOLOGIN pg_read_all_settings | NOLOGIN pg_read_all_stats | NOLOGIN pg_stat_scan_tables | NOLOGIN pg_read_server_files | NOLOGIN pg_write_server_files | NOLOGIN pg_execute_server_program | NOLOGIN pg_signal_backend | NOLOGIN replication | NOLOGIN myDemoUser | SCRAM-256 azure_pg_admin | NOLOGIN srtest | SCRAM-256 sr_md5 | MD5 (14 rows)
Następnie możesz nawiązać połączenie z poziomu klienta obsługującego uwierzytelnianie SCRAM na serwerze.
Uwaga
Uwierzytelnianie SCRAM jest również obsługiwane w przypadku połączenia z wbudowanym zarządzanym narzędziem PgBouncer. Powyższy samouczek jest prawidłowy w przypadku konfigurowania łączności przy użyciu uwierzytelniania SCRAM za pośrednictwem wbudowanej funkcji PgBouncer.