Лучшее, что вы можете сделать на сервере, это использовать модуль passwordcheck contrib. Вам, вероятно, придется взломать его, чтобы исправить ваши потребности.
Однако это не сможет обеспечить применение политики паролей в целом, поскольку сервер никогда не увидит пароль в виде открытого текста , если только вы измените его на
ALTER ROLE xy PASSWORD 'clear_text';
, что не рекомендуется. Изменение пароля с помощью таких инструментов, как команда psql
\password
, будет иметь sh пароль до того, как он будет отправлен на сервер, поэтому сервер не может применить какие-либо правила пароля.
Вам придется проверить пароль на клиенте , но, естественно, клиент не находится под вашим контролем, если вы не строго ограничите то, что люди могут делать на своих машинах (и люди обычно находят способы обойти такие ограничения).
Так что на самом деле нет способа сделать то, что вы хотите.
Что вы можете сделать - это включить cracklib в модуле проверки паролей и таким образом проверить хешированные пароли на словарь.
Для обеспечения безопасности используйте что-то вроде аутентификации LDAP или Kerberos и реализуйте там свою политику паролей.