Parametrisierte sichere Ansichten in Cloud SQL for PostgreSQL bieten Datensicherheit und Zugriffssteuerung auf Zeilenebene für Anwendungen und unterstützen gleichzeitig SQL. Diese Ansichten unterstützen die Extraktion von Datenwerten , also das Abrufen bestimmter Daten aus Spalten, und helfen, Prompt-Injection-Angriffezu verhindern. Parametrisierte sichere Ansichten sorgen dafür, dass Endnutzer nur die Daten sehen können, auf die sie Zugriff haben sollen.
Parametrisierte Ansichten sind eine Erweiterung von PostgreSQL-Ansichten, mit denen Sie anwendungsspezifische benannte Ansichtsparameter in Ansichtsdefinitionen verwenden können. Diese Funktion bietet eine Schnittstelle, die eine Abfrage und Werte für die benannten Parameter akzeptiert. Die Ansichten führen die Abfrage mit diesen Werten aus, die während der gesamten Ausführung dieser Abfrage verwendet werden.
Hier ist ein Beispiel für eine parametrisierte sichere Ansicht:
CREATE VIEW user_specific_items WITH (security_barrier) AS
SELECT item_id, item_name, description
FROM items t
WHERE owner_id = $@app_user_id;
Sie können die Ansichten mit der Funktion execute_parameterized_query oder durch Ausführen der Anweisung EXECUTE .. WITH VIEW PARAMETERS abfragen.
Anwendungsfälle
Parametrisierte sichere Ansichten bieten Datensicherheit auf Datenbankebene vor Ad-hoc-Abfragen aus nicht vertrauenswürdigen Quellen, z. B. Abfragen, die aus Abfragen in natürlicher Sprache übersetzt wurden. Sie können parametrisierte sichere Ansichten beispielsweise verwenden, um die Datensicherheit für Anwendungen zu gewährleisten, in denen Nutzer Abfragen in natürlicher Sprache stellen können, z. B. „Meine Bestellungen anzeigen“.
Mit parametrisierten sicheren Ansichten können Sie die folgenden Anforderungen für die Ausführung dieser Abfrage durch Cloud SQL for PostgreSQL festlegen:
- Die Abfrage liest nur die Datenbankobjekte und Spalten, die Sie in Ihren parametrisierten sicheren Ansichten für die Datenbank aufgeführt haben.
- Die Abfrage liest nur die Datenbankzeilen, die dem Nutzer zugeordnet sind, der die Abfrage gesendet hat. Die zurückgegebenen Zeilen haben eine Datenbeziehung zur Tabellenzeile des Nutzers.
Weitere Informationen zum Konfigurieren von Sicherheit und Zugriffssteuerung finden Sie unter Datensicherheit von Anwendungen mit parametrisierten sicheren Ansichten verwalten.
Parametrisierte sichere Ansichten tragen dazu bei, Sicherheitsrisiken zu minimieren, die auftreten, wenn Endnutzer nicht vertrauenswürdige Abfragen wie Abfragen in natürlicher Sprache für die Datenbanktabelle ausführen dürfen. Zu den Sicherheitsrisiken gehören:
- Nutzer können Prompt-Injection-Angriffe senden und versuchen, das zugrunde liegende Modell zu manipulieren, um alle Daten offenzulegen, auf die die Anwendung Zugriff hat.
- Das Modell für die Übersetzung von natürlicher Sprache in SQL (Natural Language to SQL, NL2SQL) kann SQL-Abfragen generieren, die einen größeren Umfang haben, als aus Gründen der Datensicherheit angemessen ist. Dieses Sicherheitsrisiko kann dazu führen, dass sensible Daten als Antwort auf gut gemeinte Nutzerabfragen offengelegt werden.
Mit parametrisierten sicheren Ansichten können Sie die Tabellen und Spalten definieren, aus denen nicht vertrauenswürdige Abfragen Daten abrufen können. Mit diesen Ansichten können Sie den Bereich der Zeilen einschränken, die einem einzelnen Anwendungsnutzer zur Verfügung stehen. Mit diesen Einschränkungen können Sie auch genau steuern, welche Daten Anwendungsnutzer über Abfragen in natürlicher Sprache sehen können, unabhängig davon, wie sie diese Abfragen formulieren.
Datensicherheit
Parametrisierte sichere Ansichten bieten Anwendungsentwicklern Datensicherheit und Zugriffssteuerung auf Zeilenebene mit den folgenden Methoden:
- Ansichten, die mit der
WITH (security barrier)Klausel erstellt wurden, bieten Sicherheit auf Zeilenebene, indem sie verhindern, dass böswillig ausgewählte Funktionen und Operatoren Werte aus Zeilen erhalten, bis die Ansicht ihre Arbeit erledigt hat. Weitere Informationen zurWITH (security barrier)Klausel finden Sie unter Regeln und Berechtigungen. - Benannte Ansichtsparameter ermöglichen eine eingeschränkte Ansicht der Datenbank, die durch Werte parametrisiert wird. Die Werte werden von der Anwendung basierend auf der Sicherheit auf Anwendungsebene bereitgestellt, z. B. durch die Endnutzerauthentifizierung.
- Erzwingen zusätzlicher Einschränkungen für Abfragen, die auf parametrisierte Ansichten zugreifen, um Angriffe zu verhindern, die darauf abzielen, die Prüfungen in den Ansichten basierend auf den angegebenen Parameterwerten zu umgehen. Weitere Informationen finden Sie unter Erzwingen von Einschränkungen für Abfragen.
Beschränkungen
Wenn Sie parametrisierte sichere Ansichten verwenden möchten, müssen Sie das Datenbank-Flag
cloudsql.enable_parameterized_viewsfür Ihre Cloud SQL-Instanz aktivieren. Dazu ist ein Neustart der Datenbank erforderlich.Die Erweiterung
parameterized_viewsmuss in jeder Datenbank erstellt werden, in der Sie parametrisierte sichere Ansichten erstellen möchten.Wenn in einer benutzerdefinierten Funktion, die mit einer der in parametrisierten sicheren Ansichten verwendeten APIs aufgerufen wird, auf eine parametrisierte Ansicht verwiesen wird, tritt ein Fehler auf. Sie müssen direkt in der übergeordneten Abfrage auf die parametrisierte Ansicht verweisen.
Nächste Schritte
- Parametrisierte sichere Ansichten verwenden
- Zugriff auf Anwendungsdaten mit parametrisierten sicheren Ansichten sichern und steuern (Tutorial)