Wenn Sie die Best Practices auf dieser Seite befolgen, können Sie einen starken Sicherheitsstatus für Ihre AlloyDB for PostgreSQL-Ressourcen erreichen.
Hijacking des Suchpfads verhindern
Um Suchpfad-Hijacking zu verhindern, setzen Sie den Parameter search_path für Nutzer mit hohen Berechtigungen auf pg_catalog. Diese Konfiguration sichert den Suchpfad, sodass nicht vertrauenswürdige Schemas wie public umgangen werden.
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 zum Sichern des public-Schemas finden Sie in der PostgreSQL-Dokumentation zur sicheren Schemanutzung und im CVE-2018-1058-Leitfaden.
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 sensible BigQuery-Datasets hat, ist es wichtig, dass reguläre Datenbanknutzer keine nicht autorisierten Tabellen zuordnen können.
Um den Zugriff mit den geringsten Berechtigungen zu erzwingen, beschränken Sie die USAGE-Berechtigungen auf dem externen Server, damit Nutzer ohne Administratorrechte keine CREATE FOREIGN TABLE-Anweisungen ausführen können:
Schränken Sie
USAGEauf dem externen Server ein: Verhindern Sie, dass Rollen, die keine Administratoren sind,USAGE-Berechtigungen haben, und widerrufen Sie gegebenenfallsUSAGEvonPUBLIC.Tabellenerstellung zentralisieren: Erlauben Sie nur Datenbankadministratoren, z. B. Nutzern mit der Rolle
alloydbsuperuser, externe Tabellen zu erstellen.Selektiven Zugriff gewähren: Verwalten Sie den Lesezugriff mit
GRANT SELECTfür bestimmte Fremdtabellen.
Beispiel: Zugriff mit geringsten Berechtigungen konfigurieren
Der folgende Workflow zeigt, wie ein Administrator einem normalen Nutzer (bob) sicher Zugriff auf eine bestimmte BigQuery-Tabelle gewähren kann, ohne ihm die Möglichkeit zu geben, beliebige Datasets zuzuordnen:
Erstellen Sie als Administrator den fremden Server und entziehen Sie
PUBLICdie BerechtigungenUSAGE, um das unbefugte Erstellen von Tabellen zu verhindern:CREATE EXTENSION IF NOT EXISTS bigquery_fdw; CREATE SERVER bq_server FOREIGN DATA WRAPPER bigquery_fdw; -- Explicitly revoke USAGE from all users to prevent unauthorized table creation REVOKE ALL ON FOREIGN SERVER bq_server FROM PUBLIC;Erstellen Sie als Administrator eine Nutzerzuordnung für den regulären Nutzer:
CREATE USER MAPPING FOR bob SERVER bq_server;Erstellen Sie als Administrator die Fremdtabelle:
-- Because 'bob' does not have USAGE on bq_server, only the administrator can run this. CREATE FOREIGN TABLE example_table ( id INT, state VARCHAR ) SERVER bq_server OPTIONS ( project 'BIGQUERY_PROJECT_ID', dataset 'BIGQUERY_DATASET_NAME', table 'example_table' );Gewähren Sie als Administrator dem regulären Nutzer selektiven Lesezugriff auf die jeweilige Fremdtabelle:
GRANT SELECT ON public.example_table TO bob;