Integrierte Authentifizierung mit Passwortrichtlinien verwalten

Wählen Sie eine Dokumentationsversion aus:

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

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 Nur-Text 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 für das Passwort 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. Setzen Sie das Flag password.enforce_complexity auf ON.

  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. Setzen Sie das Flag password.enforce_expiration auf ON.

  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. Stellen Sie über psql eine Verbindung zu AlloyDB Omni her. Wenn Sie AlloyDB Omni beispielsweise mit Docker installiert haben, führen Sie den folgenden Befehl aus:

    sh docker exec -it CONTAINER-NAME psql -h localhost -U postgres

  2. Führen Sie bei der Eingabeaufforderung postgres=# 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.

Passwortbasierte Authentifizierung für interne Administratorkonten erzwingen

Die Passwortdurchsetzung für Administratorkonten automatisiert und zentralisiert die sichere Rotation und Aktualisierung wichtiger Systempasswörter, in der Regel mit einem externen Tool wie Vault. Mit dieser Funktion wird die Einhaltung der Zero-Trust-Richtlinie erzwungen, indem die passwortbasierte Authentifizierung für wichtige Administratorkonten erzwungen wird, die von AlloyDB Omni zur Verwaltung verschiedener interner Prozesse verwendet werden.

Die Passwortdurchsetzung wird für die folgenden Datenbankkonten unterstützt:

  • alloydbadmin: Das Superuser-Konto für den Kubernetes-Controller.
  • alloydbmonitor: Ein schreibgeschütztes Konto zum Erfassen von Datenbankmesswerten.

Um die Erzwingung zu aktivieren, konfigurieren Sie die Datenbankclusterspezifikation so, dass auf Kubernetes-Secret-Objekte verwiesen wird, in denen die Passwörter für diese Konten gespeichert sind. Dieser Prozess erhöht die Sicherheit und reduziert den manuellen Aufwand, der für die Verwaltung der Anmeldedaten für die internen Verwaltungskonten Ihrer Datenbank erforderlich ist.

Passwortrichtlinien erzwingen

So aktivieren Sie die Passwortdurchsetzung beim Erstellen eines Clusters:

  1. Achten Sie darauf, dass Sie einen Kubernetes-Cluster mit dem AlloyDB Omni Kubernetes-Operator 1.7.0 oder höher haben.
  2. Fügen Sie der DBCluster-Spezifikation das Attribut systemUserPasswordRefs hinzu. Dieses Attribut muss Schlüssel/Wert-Paare enthalten, die jeden internen Systemkontonamen (z. B. alloydbadmin und alloydbmonitor) mit dem entsprechenden Namen des Kubernetes-Secret-Objekts verknüpfen.
  3. Bevor Sie die Datenbank erstellen, müssen Sie darauf achten, dass das referenzierte Kubernetes-Secret das Seed-Passwort für den Nutzer enthält und dass das Attributformat dieser Struktur entspricht:

    systemUserPasswordRefs: USER_NAME:USER_NAME-PASSWORD-DATABASE_NAME
    

Passwortrotation sicher verwalten

Nachdem Sie die Erzwingung aktiviert haben, können Sie ein externes Tool wie Vault verwenden, um die laufende Passwortrotation sicher zu verwalten.

  1. Aktualisieren Sie das Datenbankpasswort. Das externe Tool aktualisiert das Passwort für das Systemkonto direkt in AlloyDB Omni.
  2. Aktualisieren Sie das Kubernetes-Secret. Das externe Tool aktualisiert dann das zugehörige Kubernetes-Secret-Objekt mit dem neuen Passwort.

    • Der Inhalt des Secret-Objekts muss ein Schlüssel/Wert-Paar sein, wobei der Schlüssel der Datenbankname und der Wert das base64-codierte neue Passwort ist.
    • Wir empfehlen, für den Secret-Namen die folgende Konvention zu verwenden:

      USER_NAME-pw-DATABASE_NAME
      

    Der AlloyDB Omni-Operator erkennt die Änderung des Kubernetes-Secrets und aktualisiert automatisch den vom Datenbank-Agent verwendeten Passwortcache, der im Datenbank-Pod ausgeführt wird. Der Agent verwendet dieses neue zwischengespeicherte Passwort dann für alle zukünftigen Datenbankvorgänge.

Passwortdurchsetzung für einen bestimmten Nutzer deaktivieren

Wenn Sie die Passwortdurchsetzung für ein bestimmtes Systemkonto deaktivieren möchten, müssen Sie den Nutzer aus der Liste systemUserPasswordRefs in der DBCluster-Spezifikation entfernen.

  1. Entfernen Sie den Nutzer. Löschen Sie in der DBCluster-Spezifikation das Schlüssel-Wert-Paar, das dem Nutzer entspricht, den Sie von der Passwortdurchsetzung ausschließen möchten. Wenn Sie den Dienst beispielsweise für alloydbadmin deaktivieren möchten, entfernen Sie alloydbadmin: alloydbadmin-pw-dbcluster-sample.
  2. Wenden Sie die geänderte DBCluster-Spezifikation mit kubectl apply an.

    Nachdem Sie die aktualisierte Spezifikation angewendet haben, wird die Passwortdurchsetzung für diesen Nutzer deaktiviert.

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. Setzen Sie den Wert password.enforce_password_does_not_contain_username auf ON:

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