このページでは、AlloyDB for PostgreSQL インスタンスのデータベース ユーザーのパスワード ポリシーを設定して管理する方法について説明します。
AlloyDB で使用可能な認証方法の概要については、認証をご覧ください。
パスワード ポリシーについて
アプリケーションのデータベース ユーザーが、組み込みのパスワードベースの方法を使用して AlloyDB インスタンスで認証する場合は、強力なパスワードを適用することで認証をより安全にできます。パスワードの適用を定義して有効にするには、インスタンスにパスワード ポリシーを設定する。
パスワード ポリシーの制限事項
AlloyDB のパスワード ポリシーには次の制限があります。
パスワード ポリシーは、ポリシーの設定後に作成されたパスワードにのみ適用されます。既存のユーザー パスワードは、パスワード ポリシーの変更の影響を受けません。
パスワード ポリシーは、プレーンテキストとして入力されたパスワードにのみ適用されます。パスワード ポリシーは、暗号化された文字列として入力されたパスワードには適用されません。
インスタンスのパスワード ポリシーを設定する
インスタンスにパスワード ポリシーを設定するには、インスタンスにパスワード フラグを構成します。
パスワードにユーザー名を許可しない: パスワードにユーザー名を使用できないようにします。
パスワードの複雑さ: パスワードに小文字、大文字、数字、英数字以外の文字が許可されている数含まれているかどうかを確認します。また、パスワードの長さが有効かどうかを確認します。
パスワードの有効期限: パスワードが定期的にローテーションされるようにします。
AlloyDB がサポートするパスワード ポリシー フラグのリストについては、パスワード ポリシー フラグをご覧ください。
パスワードの複雑さを適用する
パスワードの複雑さに関するポリシーを適用する手順は次のとおりです。
password.enforce_complexity
フラグをON
に設定します。- パスワード ポリシー フラグを使用してパスワード ポリシーを定義します。
たとえば、パスワードに少なくとも 1 つの大文字と 1 つの数字を含め、10 文字以上である必要があるというパスワード ポリシーを適用するには、次のフラグを設定する必要があります。
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';
パスワードの有効期限を適用する
パスワードの有効期限ポリシーを適用する手順は次のとおりです。
password.enforce_expiration
フラグをON
に設定します。password.expiration_in_days
フラグを、パスワードの設定から有効期限が切れるまでの日数に設定します。password.notify_expiration_in_days
フラグを、パスワードの有効期限が切れる前にユーザーにパスワードの有効期限通知を送信する日数に設定します。
たとえば、パスワードの有効期限が 30 日で、パスワードの有効期限が切れる 15 日前にユーザーに通知するパスワード ポリシーを適用するには、次のように設定します。
password.enforce_expiration
~ON
password.expiration_in_days
フラグを30
に設定しますpassword.notify_expiration_in_days
フラグを15
に設定します
ユーザーのパスワードの有効期限が切れると、そのユーザーは AlloyDB Omni インスタンスに接続できなくなります。ユーザーのパスワードを再設定するには、データベース ユーザーのパスワードを変更するをご覧ください。
パスワードにユーザー名を許可しない
パスワードにユーザー名を含めないようにするポリシーを適用するには、次の操作を行います。
password.enforce_password_does_not_contain_username
をON
に設定します。
たとえば、パスワードにユーザー名がサブストリングとして含まれていないことを確認するには、次のように設定します。
password.enforce_password_does_not_contain_username
~ON
このフラグが設定されている場合、パスワード alex-secret
にユーザー名 Alex
が含まれているため、次のオペレーションは失敗します。
CREATE USER Alex WITH PASSWORD 'alex-secret';