Udostępnij za pośrednictwem


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

  1. 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. Zrzut ekranu przedstawiający włączanie szyfrowania haseł PROTOKOŁU SCRAM.

  2. Zezwalaj na użycie protokołu SCRAM-SHA-256 jako metody uwierzytelniania. Zrzut ekranu przedstawiający pozycję Wybierz metodę 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.

  3. Zapisz zmiany. Są to właściwości dynamiczne i nie wymagają ponownego uruchomienia serwera.

  4. 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.
    
  5. Sprawdź szyfrowanie haseł.

    postgres=> show password_encryption;
     password_encryption
    ---------------------
    scram-sha-256
    (1 row)
    
  6. Następnie możesz zaktualizować hasło dla użytkowników.

    postgres=> \password myDemoUser
    Enter new password:
    Enter it again:
    postgres=>
    
  7. 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)
    
  8. 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.