パスワード ポリシーについて
アプリケーションのデータベース ユーザーが、組み込みのパスワードベースの方法を使用して 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 = ON
- password.min_uppercase_letters = 1
- password.min_numerical_chars = 1
- password.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 = ON
- password.expiration_in_days = 30
- password.notify_expiration_in_days = 15
ユーザーのパスワードの有効期限が切れると、そのユーザーは AlloyDB Omni に接続できなくなります。ユーザーのパスワードを再設定する手順は次のとおりです。
- psqlを使用して AlloyDB Omni に接続します。たとえば、Docker を使用して AlloyDB Omni をインストールした場合は、次のコマンドを実行します。- docker exec -it CONTAINER-NAME psql -h localhost -U postgres
- postgres=#プロンプトで、次のコマンドを実行します。- 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';
次のステップ
- AlloyDB Omni のバックアップと復元を行う方法を学習する。
- 読み取り専用レプリカを作成する