Übersicht über parametrisierte sichere Ansichten in Cloud SQL

Parametrisierte sichere Ansichten in Cloud SQL for PostgreSQL bieten Datensicherheit und Zeilenzugriffssteuerung für Anwendungen und unterstützen gleichzeitig SQL. Diese Ansichten unterstützen die Datenwertextraktion, also das Abrufen bestimmter Daten aus Spalten, und helfen, sich vor Prompt-Injection-Angriffen zu schützen. Mit parametrisierten sicheren Ansichten können Sie dafür sorgen, dass Endnutzer nur die Daten sehen, auf die sie zugreifen dürfen.

Parametrisierte sichere 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 der Abfrage verwendet werden.

Beispiel für eine parametrisierte sichere Ansicht

Im Folgenden finden Sie 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

Large Language Models (LLMs) können SQL-Abfragen generieren, die sensible Daten offenlegen.

Mit parametrisierten sicheren Ansichten wird die Datensicherheit auf Datenbankebene verwaltet, insbesondere bei Ad-hoc-Abfragen aus nicht vertrauenswürdigen Quellen, z. B. solchen, die aus 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“.

Sie können parametrisierte sichere Ansichten verwenden, um die folgenden Anforderungen an die Ausführung dieser Abfrage durch Cloud SQL for PostgreSQL anzuwenden:

  • Die Abfrage liest nur die Datenbankobjekte und -spalten, die Sie in den parametrisierten sicheren Ansichten Ihrer 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 der Sicherheits- und Zugriffssteuerung finden Sie unter Parametrisierte sichere Ansichten verwenden.

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 ausführen und versuchen, das zugrunde liegende Modell so zu manipulieren, dass alle Daten offengelegt werden, auf die die Anwendung Zugriff hat.
  • Das Natural Language to SQL-Modell (NL2SQL) generiert möglicherweise SQL-Abfragen, die aus Gründen der Datensicherheit zu weit gefasst sind. Dieses Sicherheitsrisiko kann dazu führen, dass sensible Daten als Antwort auf gut gemeinte Nutzeranfragen 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 für einen einzelnen Anwendungsnutzer verfügbar sind. 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 Nutzer diese Abfragen formulieren.

Sie haben beispielsweise eine Anwendung, mit der Kundenbestellungen verfolgt werden. Ein Kundenservicemitarbeiter fragt in der Anwendung: „Wie ist der Status der Bestellung für Kunde 12345?“ In diesem Szenario kann die Anwendung eine parametrisierte sichere Ansicht mit einer Sitzungsvariablen verwenden, die auf einer Kundennummer basiert. Die parametrisierte sichere Ansicht verwendet eine Abfrage, die nur Zeilen zurückgibt, die mit der Kundennummer 12345 verknüpft sind und auf die diese Kundennummer zugreifen kann.

Mit parametrisierten sicheren Ansichten können Sie den Bereich der Zeilen einschränken, die einzelnen Anwendungsnutzern zur Verfügung stehen. Diese Einstellung sorgt für Datensicherheit, unabhängig davon, wie Nutzer ihre 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, da verhindert wird, dass böswillig ausgewählte Funktionen und Operatoren Werte aus Zeilen erhalten, bis die Ansicht ihre Arbeit erledigt hat. Weitere Informationen zur WITH (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. der Endnutzerauthentifizierung.

  • Erzwingung zusätzlicher Einschränkungen für Abfragen, die auf parametrisierte Ansichten zugreifen, um Angriffe zu verhindern, die die Prüfungen in den Ansichten basierend auf den angegebenen Parameterwerten umgehen. Weitere Informationen finden Sie unter Einschränkungen für Abfragen.

Beschränkungen

  • Wenn Sie parametrisierte sichere Ansichten verwenden möchten, müssen Sie das Datenbank-Flag cloudsql.enable_parameterized_views für Ihre Cloud SQL-Instanz aktivieren. Dazu ist ein Neustart der Datenbank erforderlich.

  • Die Erweiterung parameterized_views muss in jeder Datenbank erstellt werden, in der Sie parametrisierte sichere Ansichten erstellen möchten.

  • Wenn eine parametrisierte Ansicht in einer benutzerdefinierten Funktion referenziert wird, die mit einer der APIs aufgerufen wird, die in parametrisierten sicheren Ansichten verwendet werden, tritt ein Fehler auf. Sie müssen in der übergeordneten Abfrage direkt auf die parametrisierte Ansicht verweisen.

Nächste Schritte