Best Practices für den Schutz Ihrer AlloyDB for PostgreSQL-Ressourcen

Damit Sie ein hohes Sicherheitsniveau für Ihre AlloyDB for PostgreSQL-Ressourcen erreichen, sollten Sie die auf dieser Seite beschriebenen Best Practices befolgen.

Manipulation des Suchpfads verhindern

Um die Manipulation des Suchpfads zu verhindern, muss der Parameter search_path für Nutzer mit hohen Berechtigungen auf pg_catalog festgelegt sein. So wird der Suchpfad geschützt und nicht vertrauenswürdige Schemas wie public werden umgangen.

Führen Sie den folgenden Befehl aus, um diesen Parameter dauerhaft für einen Nutzer festzulegen:

ALTER ROLE USER_NAME SET search_path = pg_catalog,pg_temp;

Führen Sie den folgenden Befehl aus, um diesen Parameter nur für die aktuelle Sitzung festzulegen:

SET search_path TO pg_catalog,pg_temp;

Führen Sie den folgenden Befehl aus, um diesen Parameter für alle Nutzer festzulegen, wenn sie mit einer Datenbank verbunden sind:

ALTER DATABASE DB_NAME SET search_path TO schema1, schema2, public;

Weitere Informationen finden Sie in der PostgreSQL-Dokumentation zur sicheren Schemanutzung und im Leitfaden zu CVE-2018-1058.

BigQuery-Datenzugriff mit dem Foreign Data Wrapper sichern

Wenn Sie den BigQuery Foreign Data Wrapper (FDW) verwenden, werden alle Abfragen von AlloyDB an BigQuery mit dem Dienstkonto des AlloyDB-Clusters authentifiziert. Da dieses Dienstkonto möglicherweise Zugriff auf mehrere vertrauliche BigQuery-Datasets hat, ist es wichtig zu verhindern, dass reguläre Datenbanknutzer nicht autorisierte Tabellen zuordnen.

Um den Zugriff mit den geringsten Berechtigungen zu erzwingen, müssen Administratoren die USAGE-Berechtigungen auf dem externen Server einschränken. So wird verhindert, dass Nutzer ohne Administratorberechtigungen CREATE FOREIGN TABLE-Anweisungen ausführen.

  1. Schränken Sie USAGE auf dem externen Server ein, indem Sie dafür sorgen, dass Rollen ohne Administratorberechtigungen keine USAGE-Berechtigungen auf dem externen Server haben. Entziehen Sie die Berechtigung bei Bedarf von PUBLIC.
  2. Zentralisieren Sie die Tabellenerstellung: Nur Datenbankadministratoren, z. B. Nutzer mit der Rolle alloydbsuperuser, können externe Tabellen erstellen.
  3. Gewähren Sie selektiven Zugriff: Administratoren verwalten den Lesezugriff mit GRANT SELECT für bestimmte externe Tabellen.

Beispiel: Zugriff mit den geringsten Berechtigungen konfigurieren

Der folgende Workflow zeigt, wie ein Administrator einem regulären Nutzer (bob) sicher Zugriff auf eine bestimmte BigQuery-Tabelle gewähren kann, ohne ihm die Zuordnung beliebiger Datasets zu ermöglichen.

-- Schritt 1: Server erstellen und Zugriff einschränken (als Administrator ausgeführt) ```sql CREATE EXTENSION IF NOT EXISTS bigquery_fdw; CREATE SERVER bq_server FOREIGN DATA WRAPPER bigquery_fdw;

-- USAGE für alle Nutzer explizit widerrufen, um die Erstellung nicht autorisierter Tabellen zu verhindern REVOKE ALL ON FOREIGN SERVER bq_server FROM PUBLIC; ```

-- Schritt 2: Nutzerzuordnung für den regulären Nutzer erstellen (als Administrator ausgeführt) sql CREATE USER MAPPING FOR bob SERVER bq_server;

-- Schritt 3: Externe Tabelle erstellen (als Administrator ausgeführt) -- Da „bob“ keine USAGE-Berechtigung für „bq_server“ hat, kann nur der Administrator diesen Befehl ausführen. sql CREATE FOREIGN TABLE example_table ( id INT, state VARCHAR ) SERVER bq_server OPTIONS ( project 'BIGQUERY_PROJECT_ID', dataset 'BIGQUERY_DATASET_NAME', table 'example_table' );

-- Schritt 4: Selektiven Lesezugriff gewähren (als Administrator ausgeführt) -- Gewähren Sie dem regulären Nutzer explizit Lesezugriff auf diese bestimmte Tabelle. sql GRANT SELECT ON public.example_table TO bob;