passwordcheck
モジュールはCREATE ROLEまたはALTER ROLEによって設定したユーザのパスワードを検査します。
パスワードが弱すぎると考えられた場合、パスワードは拒絶されてコマンドはエラーで終わります。
このモジュールを有効にするには、postgresql.conf
中のshared_preload_librariesに'$libdir/passwordcheck'
を追加して、サーバを再起動してください。
ソースコードの変更により、このモジュールをユーザの用途に適合できます。
例えば、パスワード検査のためCrackLibを使用できます。
これに必要な作業はMakefile
中の 2行のコメントアウトを外してモジュールを再構築することだけです。
(ライセンスの理由からCrackLibをデフォルトで組み込むことができません。)
CrackLibがなくても、モジュールはパスワードの強度に関する幾つかの単純な規則を強制します。
ユーザはこの規則を、適切となるように修正または拡張できます。
暗号化されないパスワードが、ネットワークを送信されること、サーバログに記録されることおよびデータベース管理者に盗聴されることを防ぐために、PostgreSQLはパスワードの一方向暗号化をユーザに提供できます。 この機能を使用して、多くのクライアントプログラムはサーバへ送信する前にパスワードを暗号化できます。
一方向暗号化されたパスワードは復号できないので、これがpasswordcheck
モジュールの有効性の限界となります。
この理由により、高度のセキュリティが要求される場合、passwordcheck
は推奨されません。
データベース内部に保存したパスワードに依存するよりは、GSSAPIのような外部の認証方法を使用した方が安全です(第20章参照)。
その他の方法として、一方向暗号化されたパスワードを拒否するためにpasswordcheck
を修正できます。
しかし、この方法ではパスワードが平文のテキストとして送信されるため、ユーザに多大なセキュリティリスクを負担させます。