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


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

Область применения: гибкий сервер Базы данных 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-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=MyPassword 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. Приведенный выше учебник действителен для настройки подключения с помощью проверки подлинности SCRAM с помощью встроенной функции PgBouncer.

Следующие шаги