Trusted Language Extensions for PostgreSQL のフックリファレンス
Trusted Language Extensions for PostgreSQL は PostgreSQL フックをサポートしています。フックは、PostgreSQL のコア機能を拡張するために開発者が利用できる内部コールバックメカニズムです。フックを使用することで、開発者はさまざまなデータベースオペレーションで使用する独自の関数やプロシージャを実装できるため、PostgreSQL の動作を何らかの方法で変更できます。例えば、passcheck
フックを使用して、ユーザー (ロール) のパスワードを作成または変更する際に提供されたパスワードを PostgreSQL がどのように処理するかをカスタマイズできます。
TLE 拡張機能で利用できる passcheck フックについては、次のドキュメントを参照してください。
パスワードチェックフック (passcheck)
passcheck
フックは、以下の SQL コマンドと psql
メタコマンドのパスワードチェックプロセス時の PostgreSQL の動作をカスタマイズするために使用されます。
CREATE ROLE
– 詳細については、PostgreSQL のドキュメントの「CREATE ROLEusername
...PASSWORD」を参照してください。 ALTER ROLE
– 詳細については、PostgreSQL のドキュメントの「ALTER ROLEusername
...PASSWORD」を参照してください。 \password
– このインタラクティブなusername
psql
メタコマンドは、ALTER ROLE ... PASSWORD
構文を透過的に使用する前にパスワードをハッシュすることで、指定されたユーザーのパスワードを安全に変更します。このメタコマンドはALTER ROLE ... PASSWORD
コマンドの安全なラッパーであるため、フックはpsql
メタコマンドの動作に適用されます。
例については、「パスワードチェックフックコードリスト」を参照してください。
関数プロトタイプ
passcheck_hook(username text, password text, password_type pgtle.password_types, valid_until timestamptz, valid_null boolean)
引数
passcheck
フック関数は、次の引数を取ります。
username
– パスワードを設定するロール (ユーザー名) の名前 (テキスト)。password
– プレーンテキストまたはハッシュ化されたパスワード。入力するパスワードは、password_type
で指定されたタイプと一致する必要があります。password_type
– パスワードのpgtle.password_type
形式を指定します。この形式は、以下のいずれかのオプションになります。PASSWORD_TYPE_PLAINTEXT
– プレーンテキストのパスワード。PASSWORD_TYPE_MD5
– MD5 (メッセージダイジェスト 5) アルゴリズムを使用してハッシュ化されたパスワード。PASSWORD_TYPE_SCRAM_SHA_256
– SCRAM-SHA-256 アルゴリズムを使用してハッシュ化されたパスワード。
valid_until
– パスワードが無効になる時間を指定します。この引数はオプションです。この引数を使用する場合は、時間をtimestamptz
値で指定します。valid_null
– このブール値がtrue
に設定されている場合、valid_until
オプションはNULL
に設定されます。
構成
この pgtle.enable_password_check
関数は、パスチェックフックが有効かどうかを制御します。パスチェックフックには 3 種類の設定があります。
off
–passcheck
パスワードチェックフックをオフにします。これは、デフォルト値です。on
–passcode
パスワードチェックフックをオンにして、パスワードとテーブルを照合します。require
– パスワードチェックフックを定義する必要があります。
使用に関する注意事項
passcheck
フックをオンまたはオフにするには、、RDS for PostgreSQL DB インスタンスのカスタム DB パラメータグループを変更する必要があります。
Linux、macOS、Unix の場合:
aws rds modify-db-parameter-group \ --region
aws-region
\ --db-parameter-group-nameyour-custom-parameter-group
\ --parameters "ParameterName=pgtle.enable_password_check,ParameterValue=on,ApplyMethod=immediate"
Windows の場合:
aws rds modify-db-parameter-group ^ --region
aws-region
^ --db-parameter-group-nameyour-custom-parameter-group
^ --parameters "ParameterName=pgtle.enable_password_check,ParameterValue=on,ApplyMethod=immediate"