このページでは、AlloyDB Omni のパスワード ポリシーを設定して管理する方法について説明します。
パスワード ポリシーについて
アプリケーションのデータベース ユーザーが、組み込みのパスワードベースの方法を使用して AlloyDB Omni で認証する場合は、安全なパスワードを適用することで認証をより安全にできます。AlloyDB Omni パスワード ポリシーを設定することで、パスワードの適用を定義して有効にできます。
パスワード ポリシーの制限事項
AlloyDB Omni のパスワード ポリシーには次の制限があります。
パスワード ポリシーは、ポリシーの設定後に作成されたパスワードにのみ適用されます。既存のユーザー パスワードは、パスワード ポリシーの変更の影響を受けません。
パスワード ポリシーは、プレーンテキストとして入力されたパスワードにのみ適用されます。パスワード ポリシーは、暗号化された文字列として入力されたパスワードには適用されません。
AlloyDB Omni のパスワード ポリシーを設定する
パスワード ポリシーを設定するには、postgresql.conf 構成ファイルで Grand Unified Configuration(GUC)パスワード パラメータを更新します。GUC パラメータを設定する方法については、AlloyDB Omni データベース フラグを構成するをご覧ください。
AlloyDB Omni のパスワード ポリシーには、次のオプションを含めることができます。
パスワードにユーザー名を許可しない: パスワードにユーザー名を使用できないようにします。
パスワードの複雑さ: パスワードに小文字、大文字、数字、英数字以外の文字が許可されている数含まれているかどうかを確認します。また、パスワードの長さが有効かどうかを確認します。
パスワードの有効期限: パスワードが定期的にローテーションされるようにします。
AlloyDB Omni でサポートされているパスワード ポリシー フラグのリストについては、パスワード ポリシー フラグをご覧ください。
パスワード検証ライブラリをプリロードする
AlloyDB Omni でパスワード ポリシーを有効にするには、alloydb_password_validation ライブラリを読み込む必要があります。このライブラリを読み込む手順は次のとおりです。
AlloyDB Omni のインストールの
postgresql.conf構成ファイルを探し、テキスト エディタで開きます。shared_preload_libraries行を見つけて、alloydb_password_validationが含まれているかどうかを確認します。ない場合は、追加する必要があります。完了すると、shared_preload_libraries行は次のようになります。shared_preload_libraries='google_columnar_engine,google_job_scheduler,google_storage,alloydb_password_validation'
パスワードの複雑さを適用する
パスワードの複雑さに関するポリシーを適用する手順は次のとおりです。
postgresql.confファイルがパスワード検証ライブラリをプリロードしていることを確認します。password.enforce_complexityフラグをONに設定します。パスワード ポリシー フラグを使用して、パスワード ポリシーを定義します。
たとえば、パスワードに少なくとも 1 つの大文字と 1 つの数字を含め、10 文字以上である必要があるというパスワード ポリシーを適用するには、postgresql.conf ファイルに次のように設定します。
password.enforce_complexity = ONpassword.min_uppercase_letters = 1password.min_numerical_chars = 1password.min_pass_length = 10
これらのフラグが設定されると、このパスワード ポリシーに準拠していないデータベース ユーザー パスワードの設定は失敗します。たとえば、このポリシーを設定すると、パスワード foo が 10 文字未満で、数字や大文字が含まれていないため、次の psql クライアント コマンドは失敗します。
CREATE USER USERNAME WITH PASSWORD foo;
パスワードの有効期限を適用する
パスワードの有効期限ポリシーを適用する手順は次のとおりです。
postgresql.confファイルがパスワード検証ライブラリをプリロードしていることを確認します。password.enforce_expirationフラグをONに設定します。password.expiration_in_daysフラグを、パスワードの設定から有効期限が切れるまでの日数に設定します。password.notify_expiration_in_daysフラグを、パスワードの有効期限が切れる何日前からユーザーにパスワードの有効期限通知を送信するかに設定します。
たとえば、パスワードの有効期限が 30 日で、パスワードの有効期限が切れる 15 日前にユーザーに通知するパスワード ポリシーを適用するには、postgresql.conf ファイルに次のように設定する必要があります。
password.enforce_expiration = ONpassword.expiration_in_days = 30password.notify_expiration_in_days = 15
ユーザーのパスワードの有効期限が切れると、そのユーザーは AlloyDB Omni に接続できなくなります。ユーザーのパスワードを再設定する手順は次のとおりです。
psqlを使用して AlloyDB Omni に接続します。たとえば、Docker を使用して AlloyDB Omni をインストールした場合は、次のコマンドを実行します。docker exec -it CONTAINER-NAME psql -h localhost -U postgrespostgres=#プロンプトで、次のコマンドを実行します。ALTER USER USERNAME WITH 'NEW-PASSWORD';
ユーザーのパスワードの変更の詳細については、PostgreSQL ドキュメントの ALTER ROLE をご覧ください。
パスワードにユーザー名を許可しない
パスワードにユーザー名を含めないようにするポリシーを適用するには、次のようにします。
postgresql.confファイルがパスワード検証ライブラリをプリロードしていることを確認します。password.enforce_password_does_not_contain_usernameをONに設定します。
たとえば、パスワードにユーザー名がサブストリングとして含まれていないことを確認するには、postgresql.conf ファイルに次のように設定します。
password.enforce_password_does_not_contain_username = ON
このフラグが設定されている場合、パスワード alex-secret にユーザー名 alex が含まれているため、次のオペレーションは失敗します。
CREATE USER alex WITH PASSWORD 'alex-secret';