プロファイルに指定するパラメータを説明します。
INACTIVE_USER_TIME
長期間データベースに接続していないユーザー(セッションを確認できないユーザー)を自動ロックするまでの日数
単位は日です。最大値は24855日です。
本設定はLOGIN属性を持つユーザーが対象です。
データベースへのセッションを確認できない状態がINACTIVE_USER_TIME以上継続した場合に、そのユーザーはロックされログインできなくなります。
データベースへのセッションの確認は1時間ごとに行われ、その情報が保存されます。
保存される前にシステムが停止した場合、前回の保存時から停止までの間のログインはなかったものとみなされます。その結果、本パラメータに指定した値より短い期間でロックされる場合があります。
ストリーミングレプリケーションを使用する場合、データベースへのセッション確認は各サーバで1時間ごとに実施されます。このとき、プライマリサーバではロック判定が行われ、スタンバイサーバでは上流のサーバへのセッション確認情報の送信が行われます。このため、スタンバイサーバのセッション確認情報がプライマリ―サーバに伝わるまでには数時間のタイムラグが発生する可能性があります。スタンバイサーバに接続していても、このタイムラグによりロックされることがあります。
各ユーザーのセッションがシステムによって最後に確認された時刻は、pgx_user_profileシステムカタログのuserprflastactivetimeカラムの値で確認できます。
本パラメータの設定によりロックされた場合は、pgx_unlock_user関数を使用してロックを解除してください。PASSWORD_LOCK_TIMEによる自動解除は行われません。
ログイン済みのユーザーがSET ROLEを用いて他のロールに変更したとしても、変更後のロールがデータベースにログインしたとはみなされません。変更前のロールが引き続きデータベースにログインしていると扱われます。
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が指定されている場合、これらのパラメータは無視されて、パスワードは制限なく再利用可能となります。
パスワード変更時に、MD5またはSCRAMの暗号化形式でパスワードが指定された場合、パスワードが再利用されていることをチェックできません。
PASSWORD_ALLOW_HASHED
パスワード変更時に、MD5またはSCRAMの暗号化形式でのパスワード指定を許可するどうか
trueの場合に許可します。
trueの場合は、パスワードの設定・変更方法の制約はありません。
ただし、暗号化形式でパスワードを変更する場合は以下に留意してください。
パスワード再利用のチェックができない(PASSWORD_REUSE_TIME、PASSWORD_REUSE_MAX)
パスワードのロールオーバー機能が無効になる(PASSWORD_ROLLOVER_TIME)
拡張モジュールpasswordcheckなどを使用したパスワード複雑性のチェックができない
falseの場合は、パスワードの設定・変更方法は、CREATE ROLE文やALTER ROLE文のPASSWORD句に平文でパスワードを指定する方法に限定されます。psqlコマンドの\passwordメタコマンドを使用してパスワードを変更することはできません。
この場合、暗号化形式ではできなかったパスワードのチェックはすべて行えます。
注意
CREATE ROLE文またはALTER ROLE文に指定したパスワードは、設定により、psqlコマンドの履歴やサーバーログに残ることがあります。
FAILED_LOGIN_ATTEMPTS
ユーザーがログインに連続で失敗できる回数
パスワード認証に本パラメータで指定した回数連続して失敗すると、そのユーザーはロックされログインできなくなります。
失敗したログイン試行回数は、各サーバで個別にカウントされます。
PASSWORD_LOCK_TIME
ログインに連続して失敗してユーザーがロックされた後、該当ユーザーのロックが解除されるまでの日数
単位は日です。小数点以下で時間や秒を指定できます(例: 4.5は 「4日と12時間」と同値)。精度は1秒です。最大値は24855日です。
UNLIMITEDを設定した場合、そのユーザーは無期限にロックされ、自動的に解除されることはありません。ロックを解除するには、CREATEROLE権限を持つユーザーによる明示的なpgx_unlock_user関数の呼出しが必要となります。
PASSWORD_ROLLOVER_TIME
パスワードを変更した後、古いパスワードが失効するまでの日数
単位は日です。小数点以下で時間や秒を指定できます(例: 4.5は 「4日と12時間」と同値)。精度は1秒です。最大値は60日です。最小値は0.0416日(約1時間)です。
ユーザーがパスワードを変更した時刻からPASSWORD_ROLLOVER_TIMEが経過するまでの間、変更前のパスワードを利用したログインが可能です。
設定する値は、「PASSWORD_GRACE_TIME(0の場合を除く)またはPASSWORD_LIFE_TIMEのいずれか小さい方の値」以下を指定してください。これらのパラメータよりも大きな値が指定された場合は、これらのパラメータのうち小さい方の値が使用されます。例えば、PASSWORD_GRACE_TIMEが10で、PASSWORD_LIFE_TIMEが50の場合、本パラメータには10以下を指定してください。本パラメータに15を指定した場合は、10が指定されたとみなされます。
0が指定されている場合、そのユーザーは変更前のパスワードではログインできません。defaultプロファイルの初期値は0です。
PASSWORD_ROLLOVER_TIMEが経過する前に、併用可能期間を直ちに失効させたい場合には、対象のユーザーもしくはCREATEROLE権限を持つユーザーによってpgx_make_password_rollover_expire関数を呼び出します。
PASSWORD NULLを指定してALTER ROLE文を実行した場合、パスワード認証は無効になります。そのため以前のパスワードでもログインできません。
以下のいずれかの場合、パスワードのロールオーバは無効となり、変更前のパスワードは直ちに失効します。
パスワード変更時に、MD5またはSCRAMの暗号化形式でパスワードを指定した場合
前回のパスワード設定時から、パスワードの方法が変更された場合
関連するパラメータは以下です。
password_encryption
scram_iterations