Snowflake Postgres-Rollen¶
Postgres verfügt über eine eigene rollenbasierte Authentifizierung zum Verwalten von Verbindungen zu Datenbanken und zum Verwenden von Datenbanken auf einem Postgres-Server. Diese Rollen sind anders als die Rollen in Snowflake. Postgres-Rollen werden für den Zugriff auf und die Verwaltung von Datenbanken, Tabellen und anderen Objekten innerhalb von Snowflake Postgres-Instanzen verwendet.
Wenn Sie eine Instanz erstellen, erstellt Snowflake automatisch zwei spezielle verwaltete Rollen, die Sie nutzen können. Diese werden im Folgenden beschrieben.
Weitere Informationen zur Verwaltung von Postgres-Rollen finden Sie in der Postgres-Dokumentation.
Bemerkung
Hier und an vielen anderen Stellen werden die Begriffe „Rolle“ und „Benutzer“ im Zusammenhang mit der Postgres-Benutzerverwaltung austauschbar verwendet. Das liegt daran, dass ein Postgres-Benutzender einfach eine Rolle ist, die das Postgres-Rollenattribut LOGIN hat.
Von Snowflake Postgres verwaltete Rollen¶
Snowflake Postgres erstellt automatisch zwei verwaltete Rollen gleichzeitig, wenn es Ihre Instanz erstellt.
Rolle snowflake_admin¶
Die Rolle snowflake_admin ist eine Postgres-Rolle mit hohen Berechtigungen, mit der Ihre Snowflake-Postgres-Instanz verwaltet wird. Dies ist kein vollständiger Postgres-Superuser; einige Vorgänge bleiben eingeschränkt und werden von Snowflake verwaltet. Die Rolle verfügt jedoch über erhöhte Berechtigungen, die Folgendes umfassen:
Erstellen und Verwalten von Postgres-Rollen
Erstellen und Verwalten von Datenbanken
Verwalten der Replikation für Ihre Snowflake Postgres-Instanz
Umgehen der Sicherheit auf Zeilenebene (RLS), wo zutreffend.
Darüber hinaus ist snowflake_admin Mitglied mehrerer integrierter Postgres-Rollen, die Überwachungs- und Betriebsfunktionen gewähren, einschließlich:
pg_signal_backendpg_use_reserved_connectionspg_create_subscriptionpg_read_all_settingspg_read_all_statspg_stat_scan_tablespg_monitorsnowflake_admin_group
Rolle application¶
Die application-Rolle ist eine Nicht-Superuser-Rolle, die standardmäßig über die Berechtigungen verfügt, Objekte in der postgres-Datenbank zu erstellen. Neue Berechtigungen oder die Eigentümerschaft für diese Rolle sollten von der snowflake_admin-Rolle gewährt werden-
Sicherheit von Postgres-Kennwörtern¶
Neuerstellen von Anmeldeinformationen für von Snowflake Postgres verwaltete Rollen¶
Anmeldeinformationen für die Rollen snowflake_admin und application werden generiert, wenn Sie die Instanz erstellen, und sie werden nur einmal angezeigt. Sie können diese Anmeldeinformationen jederzeit neu generieren, wodurch die vorhandenen Anmeldeinformationen ungültig werden.
Über das Dashboard können Sie die Anmeldeinformationen für die snowflake_admin-Rolle Ihrer Instanz neu generieren.
Wählen Sie im Navigationsmenü die Option Postgres aus.
Wählen Sie Ihre -Instanz aus.
Wählen Sie oben rechts im Menü Manage die Option Regenerate credentials aus.
Klicken Sie auf die Schaltfläche Acknowledge & continue, um die Aktion zu bestätigen.
Um die Anmeldeinformationen für die Rolle
snowflake_adminoderapplicationneu zu generieren, können Sie einen ALTER POSTGRES INSTANCE-Befehl mit dem RESET ACCESS FOR-Parameter verwenden. Der Wert, den Sie angeben, ist eine Zeichenfolge in Anführungszeichen, entweder'snowflake_admin'oder'application'. Beispiel:
Erfordert die ** OWNERSHIP**-Berechtigung
Dieser Befehl gibt eine Zeile mit der folgenden Spalte zurück:
password
Beispiel für die Rotation von Anmeldeinformationen
Den Zugriff für die Rolle
snowflake_adminfür eine Snowflake Postgres-Instanz namensmy_instancezurücksetzen:
Festlegen von Kennwörtern für andere Postgres-Rollen¶
Snowflake Postgres-Instanzen sind für die SCRAM-SHA-256-Kennwortauthentifizierung konfiguriert. Wenn neue Kennwörter festgelegt werden, wird ein SCRAM-SHA-256-Hash vom Server generiert und gespeichert. Wenn der Postgres-Parameter log_statement jedoch auf einen anderen Wert als none festgelegt ist, dann werden die Befehle CREATE ROLE und ALTER ROLE DDL vollständig im Postgres-Serverprotokoll protokolliert. Daher sollten Sie sicherstellen, dass keine Klartext-Kennwörter als Teil dieser Anweisungen protokolliert werden.
Deaktivieren der Anweisungsprotokollierung für die CREATE ROLE- und ALTER ROLE-Befehle von Postgres DDL¶
Der einfachste Weg, um zu verhindern, dass in CREATE ROLE- und ALTER ROLE DDL-Anweisungen verwendete Klartext-Kennwörter im Postgres-Serverprotokoll angezeigt werden, ist der, den log_statement-Parameter für die Transaktion zu deaktivieren, in der Sie ihn ausführen: Verwenden Sie dazu SET LOCAL:
Verwenden der psql des Postgres-Client-Befehls \password¶
Das Clientprogramm Postgres psql verfügt über einen \password-Metabefehl, mit dem das Kennwort für bestehende Benutzende geändert werden kann. Der Metabefehl \password berechnet den SCRAM-SHA-256-Hash-Wert des eingegebenen Kennworts im Voraus und verwendet diesen im Befehl ALTER ROLE, der an den Server gesendet wird. Um diese Methode zu verwenden, erstellen Sie zunächst neue Benutzende ohne Kennwort, und legen Sie dann das Kennwort jedes Benutzenden mit dem Metabefehl \password von psql fest.
Wenn log_statement auf einen anderen Wert als 'none' festgelegt ist, dann hat der Protokolleintrag für den Befehl ALTER ROLE, der von psql für den oben genannten \password-Befehl gesendet wird, den berechneten SCRAM-SHA-256-Hash-Wert, anstatt das eigentliche Klartextkennwort. Sie können diese Methode mit dem vollständigen Deaktivieren von log_statement kombinieren, wie oben beschrieben, um zu verhindern, dass selbst dieser Hash-Wert im Postgres-Protokoll erscheint:
Schutz vor geleakten Kennwörtern¶
Für Rollen auf Snowflake Postgres-Instanzen wird ein Schutz vor geleakten Kennwörtern bereitgestellt. Erkennung und Benachrichtigung funktionieren wie in unserer Haupt-Schutz vor geleakten Kennwörtern beschrieben. Wenn Snowflake ein geleaktes Kennwort für eine Ihrer Snowflake Postgres-Rollen entdeckt:
Die Rolle wird der speziellen
snowflake_nologinPostgres-Gruppenrolle hinzugefügt, um zukünftige Anmeldungen mit dieser Rolle zu verhindern.Alle bestehenden Verbindungen für die Rolle werden beendet.
Die E-Mail-Benachrichtigung, die Sie erhalten, enthält den Betreff „Dringend – Zurücksetzen des Kennworts für Snowflake Postgres-Rolle(n), um nicht autorisierten Zugriff zu verhindern“.
Wenn Sie diese E-Mail erhalten, sollten Sie das Kennwort der Rolle sofort wie oben beschrieben sicher aktualisieren. Bei der Neugenerierung von Anmeldeinformationen für verwaltete Rollen werden diese automatisch aus der snowflake_nologin Postgres-Rollengruppe entfernt. Nicht verwaltete Rollen können nach der Aktualisierung des Kennworts der Rolle aus der snowflake_nologin-Gruppenrolle entfernt werden, indem Sie Postgres SQL mit der snowflake_admin-Rolle ausführen:
Rolleneinschränkungen¶
In Snowflake Postgres sind bestimmte Vorgänge für den Service selbst reserviert und können von keiner vom Kunden verwalteten Rolle ausgeführt werden, auch nicht von snowflake_admin.
Beispiele für Operationen, die eingeschränkt sind:
Anmelden mit Superuser-Rollen, wie beispielsweise
postgresodersnowflake_superuser, oder Übernehmen solcher Rollen mithilfe von SET ROLE.Erstellen anderer Superuser.
Ausführen des Befehls ALTER SYSTEM.
Ändern von geschützten Konfigurationsparametern auf Serverebene, die von Snowflake verwaltet werden.
Ändern oder Deaktivieren von zentralen, von Snowflake verwalteten Komponenten oder Erweiterungen.
Zugriff auf oder Ändern der von Snowflake verwalteten Systemdatenbanken oder Schemas, die vom Service verwendet werden.
Zugriff auf oder Ändern des Dateisystems der Snowflake Postgres-Instanz.
Direktes Ändern von Systemkatalogtabellen.
Erstellen von mehr als 64 Rollen in der Instanz.
Erstellen von mehr als 32 Datenbanken in der Instanz.
Zugreifen auf die allgemeinen Dateizugriffsfunktionen von Postgres, die den Zugriff auf das Dateisystem erlauben.
Die Snowflake-Postgres-Erweiterung kann für die beiden Rollen snowflake_admin und application weitere Einschränkungen dessen einführen, was sie innerhalb einer Instanz tun können. Diese erweiterungsspezifischen Einschränkungen können sich im Laufe der Zeit weiterentwickeln und werden mit dem entsprechenden Verhalten der Erweiterung dokumentiert. Wenn ein Vorgang blockiert ist, erhalten Sie eine Fehlermeldung, die darauf hinweist, dass dies in Snowflake Postgres nicht zulässig ist.