加盐质询响应身份验证机制(SCRAM)是一种以密码为基础的相互身份验证协议。 这是一种挑战响应方案,它增加了多个级别的安全性,并阻止对不受信任的连接进行密码探查。 SCRAM 支持以加密哈希形式将密码存储在服务器上,从而提供高级安全性。
注释
若要使用 SCRAM 身份验证方法访问Azure Database for PostgreSQL灵活服务器,客户端库需要支持 SCRAM。 有关详细信息,请参阅支持 SCRAM 的驱动程序列表 。
SCRAM 身份验证会将额外的计算负载添加到应用程序服务器,这需要计算每个身份验证的客户端证明。 可以通过限制应用程序连接池中的连接数(减少应用程序中的频繁交互),或限制客户端允许的并发事务数(增大单个事务的规模),来降低 SCRAM 引入的性能开销。 在迁移到 SCRAM 身份验证之前测试工作负荷。
配置 SCRAM 身份验证
转到“参数”
若要配置 SCRAM 身份验证,请在Azure门户中访问“参数”页:
- 登录到 Azure 门户。
- 转到Azure Database for PostgreSQL灵活服务器。
- 在 “设置”下的左侧菜单中,选择“ 参数”。
- 使用搜索框查找以下步骤中提到的参数。
配置步骤
将
password_encryption更改为SCRAM-SHA-256。 目前,Azure Database for PostgreSQL仅支持使用 SHA-256 的 SCRAM。
允许
SCRAM-SHA-256作为身份验证方法。
重要
通过仅选择
SCRAM-SHA-256方法,可以强制仅使用 SCRAM 进行身份验证。 强制实施此方法时,具有 MD5 身份验证的用户无法连接到服务器。 在强制执行 SCRAM 之前,请确保 MD5 和SCRAM-SHA-256都作为身份验证方法使用,直到将所有用户密码更新为SCRAM-SHA-256。 可以使用步骤 7 中提到的查询验证用户的身份验证类型。保存更改。 这些属性是动态的,不需要重启服务器。
使用 Azure Database for PostgreSQL 灵活服务器客户端,连接到 Azure Database for PostgreSQL 灵活服务器。 例如,
psql "host=myPGServer.postgres.database.chinacloudapi.cn 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.验证密码加密。
postgres=> show password_encryption; password_encryption --------------------- scram-sha-256 (1 row)更新用户的密码。
postgres=> \password myDemoUser Enter new password: Enter it again: postgres=>使用
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)从支持 SCRAM 身份验证的客户端连接到服务器。
连接到托管内置的PgBouncer时,也支持SCRAM身份验证。