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.
- Schränken Sie
USAGEauf dem externen Server ein, indem Sie dafür sorgen, dass Rollen ohne Administratorberechtigungen keineUSAGE-Berechtigungen auf dem externen Server haben. Entziehen Sie die Berechtigung bei Bedarf vonPUBLIC. - Zentralisieren Sie die Tabellenerstellung: Nur Datenbankadministratoren, z. B. Nutzer mit der Rolle
alloydbsuperuser, können externe Tabellen erstellen. - Gewähren Sie selektiven Zugriff: Administratoren verwalten den Lesezugriff mit
GRANT SELECTfü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;