Поделиться через


Проверка подлинности SCRAM в Базе данных Azure для PostgreSQL

Механизм проверки подлинности на основе соленых вызовов (SCRAM) — это протокол взаимной проверки подлинности на основе паролей. Это схема ответа на вызовы, которая добавляет несколько уровней безопасности и предотвращает снижку паролей на ненадежные подключения. SCRAM поддерживает хранение паролей на сервере в криптографически хэшированных формах, что обеспечивает расширенную безопасность.

Замечание

Чтобы получить доступ к гибкому экземпляру сервера Базы данных Azure для PostgreSQL с помощью метода проверки подлинности SCRAM, клиентские библиотеки должны поддерживать SCRAM. Ознакомьтесь со списком драйверов , поддерживающих SCRAM.

Проверка подлинности SCRAM накладывает дополнительную вычислительное нагрузку на серверы приложений, которые должны вычислить подтверждение клиента для каждой проверки подлинности. Общие сведения о нагрузке на производительность SCRAM могут быть устранены путем ограничения количества подключений в пуле подключений приложения (снижение общения в приложении) или ограничение количества одновременных транзакций, которые позволяет клиент (большие транзакции). Перед миграцией на проверку подлинности SCRAM рекомендуется протестировать рабочие нагрузки.

Настройка проверки подлинности SCRAM

  1. Измените password_encryption на SCRAM-SHA-256. В настоящее время База данных Azure для PostgreSQL поддерживает только SCRAM с помощью SHA-256.

    Снимок экрана: страница шифрования для SCRAM.

  2. Разрешить SCRAM-SHA-256 в качестве метода проверки подлинности.

    Снимок экрана: проверка подлинности, достигнутая SCRAM.

    Это важно

    Вы можете применить только проверку подлинности SCRAM, выбрав только метод SCRAM-SHA-256. Таким образом, пользователи с проверкой подлинности MD5 могут дольше подключаться к серверу. Поэтому перед применением SCRAM у вас есть MD5 и SCRAM-SHA-256 в качестве методов проверки подлинности, пока не обновите все пароли пользователей на SCRAM-SHA-256. Вы можете проверить тип проверки подлинности для пользователей, используя запрос, упомянутый на шаге 7.

  3. Сохраните изменения. Это динамические свойства и не требуют перезапуска сервера.

  4. Из гибкого клиента сервера Базы данных Azure для PostgreSQL подключитесь к гибкому экземпляру сервера Базы данных Azure для PostgreSQL. Например

    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. Проверьте шифрование паролей.

    postgres=> show password_encryption;
       password_encryption
    ---------------------
    scram-sha-256
    (1 row)
    
  6. Затем можно обновить пароль для пользователей.

    postgres=> \password myDemoUser
    Enter new password:
    Enter it again:
    postgres=>
    
  7. Вы можете проверить типы проверки подлинности пользователей с помощью azure_roles_authtype() функции.

    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. Затем вы можете подключиться от клиента, который поддерживает проверку подлинности SCRAM на сервере.

    Проверка подлинности SCRAM также поддерживается при подключении к встроенному управляемому PgBouncer.