プロファイルに指定するパラメータを説明します。
PASSWORD_LIFE_TIME
同じパスワードを認証に使用できる日数
単位は日です。小数点以下で時間や秒を指定できます(例: 4.5は 「4日と12時間」と同値)。精度は1秒です。最大値は24855日です。
対象となるロールで最後にパスワードを更新した時刻から、PASSWORD_LIFE_TIME後がパスワードの有効期限となります。プロファイルを更新したタイミングが起点とはなりません。そのため、極端に短い日数(1日など)を指定した場合、更新時点ですでに有効期限後となる可能性もあります。
CREATE ROLEまたはALTER ROLEのVALID UNTIL句からもパスワードが無効になる日を指定できます。VALID UNTIL句とPASSWORD_LIFE_TIMEの両方を指定している場合、両方の値が有効になります。この場合、両方の条件が満たされていないとログインできないことに注意してください。
猶予期間が設けられていない場合、パスワードの有効期間が終了するとそのパスワードは失効します。この状態でパスワード認証を用いてログインすると、パスワードの有効期限切れの警告が表示され、パスワード変更以外のコマンドが実行できない状態となります。パスワード変更を行うことでまた通常の操作が可能となります。パスワード認証以外では、データベースに接続して操作することができます。
ストリーミングレプリケーションの場合、パスワードの有効期間が終了するとユーザはスタンバイサーバに接続できなくなります。スタンバイサーバにはパスワード失効の猶予期間はありません。パスワード変更はプライマリサーバで行う必要があります。
PASSWORD_GRACE_TIME
パスワードの有効期間が終了した後、パスワードが失効するまでの猶予期間の日数
単位は日です。小数点以下で時間や秒を指定できます(例: 4.5は 「4日と12時間」と同値)。精度は1秒です。最大値は24855日です。
パスワードの有効期間が終了した後に初めてログインした時刻からPASSWORD_GRACE_TIMEに指定した日までの間がパスワード失効の猶予期間となります。猶予期間の間は、現行のパスワードのままログイン可能ですが、ログイン時にパスワードの変更を促す警告が表示されます。警告が表示される以外は通常と同じ操作が可能です。UNLIMITEDに指定されている場合、猶予期間は無限となるので、ログインのたびにパスワードの変更を促す警告が表示されます。一度猶予期間に遷移した場合、その後にプロファイルの値を変更したとしても猶予期間前に戻ることはできず、有効期限切れの時刻も変更できません。0が指定されている場合、猶予期間は存在せず、パスワード有効期間が終了後の初めのログイン時にパスワードが失効します。この場合、パスワード変更を行うことでまた通常の操作が可能となります。
スタンバイサーバにはパスワードが失効するまでの猶予期間がないため、パスワードの有効期間が終了すると、ユーザはスタンバイサーバには接続できなくなります。パスワード変更はプライマリサーバで行う必要があります。
PASSWORD_REUSE_TIME
同じパスワードを再利用できない日数
該当パスワードに更新した時刻からこの期間は、同じユーザーで該当パスワードを再利用することはできません。
本パラメータは、PASSWORD_REUSE_MAXと組み合わせて設定する必要があります。
単位は日です。小数点以下で時間や秒を指定できます(例: 4.5は 「4日と12時間」と同値)。精度は1秒です。最大値は24855日です。
PASSWORD_REUSE_MAX
パスワードの再利用が可能になるまでに必要なパスワード変更回数
本パラメータは、PASSWORD_REUSE_TIMEと組み合わせて設定する必要があります。
パスワードを再利用するためには、PASSWORD_REUSE_TIMEおよびPASSWORD_REUSE_MAXの両方の条件を満たしている必要があります。
例えば、PASSWORD_REUSE_TIME = 30, PASSWORD_REUSE_MAX = 10と指定した場合、あるパスワードについて、更新時刻から数えて30日経過後かつパスワードを10回以上更新していれば再利用可能となります。これらのパラメータによりパスワード更新に失敗したとき、SQLSTATEは「22023:invalid_parameter_value」となります。
また、一方のパラメータに値が設定されていて、もう一方のパラメータにUNLIMITEDが指定されている場合、パスワードは再利用不可となります。一方の条件のみを再利用判定に利用したい場合は、利用しないパラメータの値を0に設定する必要があります。ただし、両方にUNLIMITEDが指定されている場合、これらのパラメータは無視されて、パスワードは制限なく再利用可能となります。
PASSWORD_ALLOW_HASHED
パスワード変更時に、ハッシュ値によるパスワード指定を許可するどうか
trueの場合に許可します。
CREATE ROLEやALTER ROLE文でパスワードを設定、変更する場合、ハッシュ値の形式で新しいパスワードを指定できますが、本パラメータがfalseの場合はこれを拒絶します。
指定されたパスワードが平文ではないハッシュ値の形式の場合、サーバはパスワードが再利用されていないことを確認できないため、同じパスワードに変更して有効期限を延長できてしまいます。これを回避したい場合はfalseを指定します。
パスワードがハッシュ値の形式で指定されるのは、psqlコマンドの\passwordメタコマンドを使用してパスワードを変更する場合や、pg_dumpallコマンドでデータベースユーザーのパスワードをダンプした場合などです。
本パラメータがfalseの場合、psqlコマンドの\passwordメタコマンドによるパスワード変更は行えません。CREATE ROLEやALTER ROLE文のPASSWORD句で新しいパスワードを平文で指定してください。このとき、クライアント側のコマンド入力履歴が有効になっていたり、サーバ側でSQL文をログに出力する設定が有効になっていたりすると、平文のパスワードがログファイルなどに残ることがあります。
pg_dumpallコマンドを--no-role-passwordsオプションなしで実行した場合、データベースユーザーのパスワードがハッシュ値の形式でバックアップファイルに含まれます。そのため、データベースユーザーのパスワードをリカバリする場合には、リストア先のdefaultプロファイルの本パラメータを一時的にtrueにしてください。リストアに成功するとdefaultプロファイルの内容はバックアップ時点の内容に復元されます。
FAILED_LOGIN_ATTEMPTS
ユーザーがロックされる前に、そのユーザーへのログインに連続で失敗できる回数
パスワード認証に本パラメータで指定した回数連続して失敗すると、そのユーザーはロックされログインできなくなります。
失敗したログイン試行回数は、各サーバで個別にカウントされます。
PASSWORD_LOCK_TIME
ログインに連続して失敗してユーザーがロックされた後、該当ユーザーのロックが解除されるまでの日数
単位は日です。小数点以下で時間や秒を指定できます(例: 4.5は 「4日と12時間」と同値)。精度は1秒です。最大値は24855日です。
UNLIMITEDを設定した場合、そのユーザーは無期限にロックされ、自動的に解除されることはありません。ロックを解除するには、CREATEROLE権限を持つユーザーによる明示的なpgx_unlock_user関数の呼出しが必要となります。