Integrierte Authentifizierung mithilfe von Passwortrichtlinien verwalten

Wählen Sie eine Dokumentationsversion aus:

Auf dieser Seite wird beschrieben, wie Sie Passwortrichtlinien für AlloyDB Omni festlegen und verwalten können.

Passwortrichtlinien

Wenn sich die Datenbanknutzer Ihrer Anwendung mit AlloyDB Omni über die integrierte, passwortbasierte Methode authentifizieren, können Sie die Authentifizierung sicherer machen, indem Sie starke Passwörter erzwingen. Sie können die Passwortdurchsetzung definieren und aktivieren, indem Sie eine AlloyDB Omni-Passwortrichtlinie festlegen.

Einschränkungen von Passwortrichtlinien

Für AlloyDB Omni-Passwortrichtlinien gelten die folgenden Einschränkungen:

  • Passwortrichtlinien gelten nur für Passwörter, die nach dem Festlegen der Richtlinien erstellt wurden. Bestehende Nutzerpasswörter sind von einer Änderung der Passwortrichtlinie nicht betroffen.

  • Passwortrichtlinien gelten nur für Passwörter, die als Klartext eingegeben werden. Passwortrichtlinien gelten nicht für Passwörter, die als verschlüsselte Strings eingegeben werden.

Passwortrichtlinie für AlloyDB Omni festlegen

Sie legen eine Passwortrichtlinie fest, indem Sie die GUC-Passwortparameter (Grand Unified Configuration) in Ihrer postgresql.conf-Konfigurationsdatei aktualisieren. Informationen zum Festlegen eines GUC-Parameters finden Sie unter AlloyDB Omni-Datenbank-Flags konfigurieren.

Eine Passwortrichtlinie für AlloyDB Omni kann die folgenden Optionen enthalten:

  • Nutzernamen nicht zulassen: verhindert die Verwendung des Nutzernamens im Passwort.

  • Komplexität des Passworts: prüft, ob das Passwort die zulässige Anzahl von Kleinbuchstaben, Großbuchstaben, numerischen und nicht alphanumerischen Zeichen enthält. Prüfen Sie auch, ob die Passwortlänge gültig ist.

  • Ablauf von Passwörtern: Achten Sie darauf, dass Passwörter regelmäßig geändert werden.

Eine Liste der von AlloyDB Omni unterstützten Flags für die Passwortrichtlinie finden Sie unter Flags für die Passwortrichtlinie.

Bibliothek zur Passwortvalidierung vorab laden

Damit eine Richtlinie in AlloyDB Omni wirksam wird, muss die alloydb_password_validation-Bibliothek geladen werden. So laden Sie diese Bibliothek:

  1. Suchen Sie die Konfigurationsdatei postgresql.conf für Ihre Installation von AlloyDB Omni und öffnen Sie sie in einem Texteditor.

  2. Suchen Sie die Zeile shared_preload_libraries und prüfen Sie, ob sie alloydb_password_validation enthält. Falls nicht, müssen Sie sie hinzufügen. Wenn Sie fertig sind, sollte Ihre shared_preload_libraries-Zeile in etwa so aussehen:

    shared_preload_libraries='google_columnar_engine,google_job_scheduler,google_storage,alloydb_password_validation'
    

Passwortkomplexität erzwingen

So erzwingen Sie eine Richtlinie zur Passwortkomplexität:

  1. Prüfen Sie, ob in der Datei postgresql.conf die Bibliothek zur Passwortvalidierung vorab geladen wird.

  2. Legen Sie das Flag password.enforce_complexity auf ON fest.

  3. Verwenden Sie Flags für Passwortrichtlinien, um Ihre Passwortrichtlinie zu definieren.

Wenn Sie beispielsweise eine Passwortrichtlinie erzwingen möchten, die besagt, dass ein Passwort mindestens einen Großbuchstaben und eine Zahl enthalten und mindestens 10 Zeichen lang sein muss, legen Sie Folgendes in Ihrer postgresql.conf-Datei fest:

  • password.enforce_complexity = ON
  • password.min_uppercase_letters = 1
  • password.min_numerical_chars = 1
  • password.min_pass_length = 10

Nachdem diese Flags festgelegt wurden, schlägt jeder Versuch fehl, ein Datenbanknutzerpasswort festzulegen, das nicht dieser Passwortrichtlinie entspricht. Wenn diese Richtlinie festgelegt ist, schlägt beispielsweise der folgende psql-Clientbefehl fehl, da das Passwort foo weniger als 10 Zeichen lang ist und keine Zahl oder keinen Großbuchstaben enthält.

CREATE USER USERNAME WITH PASSWORD foo;

Ablauf des Passworts erzwingen

So erzwingen Sie die Passwortablaufrichtlinie:

  1. Prüfen Sie, ob in der Datei postgresql.conf die Bibliothek zur Passwortvalidierung vorab geladen wird.

  2. Legen Sie das Flag password.enforce_expiration auf ON fest.

  3. Legen Sie das Flag password.expiration_in_days auf die Anzahl der Tage fest, nach denen ein Passwort abläuft, nachdem es festgelegt wurde.

  4. Legen Sie das Flag password.notify_expiration_in_days auf die Anzahl der Tage vor dem Ablauf eines Passworts fest, ab denen ein Nutzer Benachrichtigungen zum Ablauf des Passworts erhält.

Wenn Sie beispielsweise eine Passwortrichtlinie erzwingen möchten, die besagt, dass Passwörter nach 30 Tagen ablaufen und Nutzer 15 Tage vor Ablauf ihres Passworts benachrichtigt werden, müssen Sie Folgendes in Ihrer postgresql.conf-Datei festlegen:

  • password.enforce_expiration = ON
  • password.expiration_in_days = 30
  • password.notify_expiration_in_days = 15

Wenn das Passwort eines Nutzers abläuft, kann dieser keine Verbindung zu AlloyDB Omni herstellen. So setzen Sie das Passwort eines Nutzers zurück:

  1. Verbindung zu AlloyDB Omni mit psql herstellen Wenn Sie AlloyDB Omni beispielsweise mit Docker installiert haben, führen Sie den folgenden Befehl aus:

    docker exec -it CONTAINER-NAME psql -h localhost -U postgres
    
  2. Führen Sie an der postgres=#-Eingabeaufforderung den folgenden Befehl aus:

    ALTER USER USERNAME WITH 'NEW-PASSWORD';
    

Weitere Informationen zum Ändern des Passworts eines Nutzers finden Sie in der PostgreSQL-Dokumentation unter ALTER ROLE.

Nutzernamen in Passwörtern nicht zulassen

So erzwingen Sie die Richtlinie, die verhindert, dass ein Passwort einen Nutzernamen enthält:

  1. Prüfen Sie, ob in der Datei postgresql.conf die Bibliothek zur Passwortvalidierung vorab geladen wird.

  2. Legen Sie password.enforce_password_does_not_contain_username auf ON fest.

Wenn Sie beispielsweise dafür sorgen möchten, dass ein Passwort keinen Nutzernamen als Teilstring enthält, legen Sie in der Datei postgresql.conf Folgendes fest:

  • password.enforce_password_does_not_contain_username = ON

Wenn dieses Flag festgelegt ist, schlägt der folgende Vorgang fehl, weil das Passwort alex-secret den Nutzernamen alex enthält:

CREATE USER alex WITH PASSWORD 'alex-secret';

Nächste Schritte