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

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

Замечание

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

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

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

Чтобы настроить проверку подлинности SCRAM, необходимо получить доступ к странице параметров сервера на портале Azure:

  1. Войдите на портал Azure
  2. Перейдите к гибкому экземпляру сервера Базы данных Azure для PostgreSQL
  3. В меню слева в разделе "Параметры" выберите параметры сервера
  4. Используйте поле поиска для поиска параметров, упомянутых ниже.

Действия по настройке

  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.