In diesem Dokument werden parametrisierte sichere Ansichten in AlloyDB for PostgreSQL beschrieben, die für die Sicherheit von Anwendungsdaten und die Steuerung des Zeilenzugriffs sorgen und gleichzeitig SQL unterstützen. Diese Ansichten unterstützen die Extraktion von Datenwerten – das Abrufen bestimmter Daten aus Spalten – und schützen vor Prompt-Injection-Angriffen. 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 entgegennimmt. Die Ansichten führen die Abfrage mit diesen Werten aus, die während der gesamten Ausführung der Abfrage verwendet werden.
Hier sehen Sie ein Beispiel für eine parametrisierte sichere Ansicht:
CREATE VIEW secure_checked_items WITH (security_barrier) AS
SELECT bag_id, timestamp, location
FROM checked_items t
WHERE customer_id = $@app_end_userid;
Sie können die Ansichten mit der gespeicherten Prozedur execute_parameterized_query
oder durch Ausführen der Anweisung EXECUTE .. WITH VIEW PARAMETERS
abfragen.
Anwendungsfälle
Parametrisierte sichere Ansichten eignen sich gut für die Verwaltung der Datensicherheit auf Datenbankebene gegen Ad-hoc-Abfragen aus nicht vertrauenswürdigen Quellen, z. B. Abfragen, die aus Abfragen in natürlicher Sprache übersetzt werden. Stellen Sie sich beispielsweise eine Anwendung vor, deren Datenbank das aufgegebene Gepäck von Reisenden erfasst. Diese Kunden können Anfragen an die Anwendung senden. Ein Kunde mit der Anwendungsnutzer-ID 12345 kann beispielsweise eine Anfrage in die Anwendung eingeben, z. B. „Wo ist meine Tasche?“.
Sie können parametrisierte sichere Ansichten verwenden, um die folgenden Anforderungen für die Ausführung dieser Abfrage durch AlloyDB festzulegen:
- Die Abfrage kann nur die Datenbankobjekte und ‑spalten lesen, die Sie in Ihren parametrisierten sicheren Ansichten aufgeführt haben.
- Mit der Abfrage können nur die Datenbankzeilen gelesen werden, die dem Nutzer zugeordnet sind, der die Abfrage gesendet hat. Die zurückgegebenen Zeilen haben eine Datenbeziehung zur Tabellenzeile des Nutzers, deren ID-Spaltenwert
12345
ist.
Weitere Informationen zum Konfigurieren der Sicherheit und Zugriffssteuerung finden Sie unter Zugriff auf Anwendungsdaten mit parametrisierten sicheren Ansichten sichern und steuern.
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 starten und versuchen, das zugrunde liegende Modell so zu manipulieren, dass alle Daten offengelegt werden, auf die die Anwendung Zugriff hat.
- Das LLM generiert möglicherweise SQL-Abfragen, die aus Gründen der Datensicherheit einen zu großen Umfang haben. Dieses Sicherheitsrisiko kann sensible Daten als Reaktion auf selbst gut gemeinte Nutzeranfragen offenlegen.
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 Anfragen in natürlicher Sprache sehen können, unabhängig davon, wie sie diese Anfragen formulieren.
Sicherheitsmechanismus
Parametrisierte sichere Ansichten bieten Anwendungsentwicklern Datensicherheit und Zeilenzugriffssteuerung mit den folgenden Methoden:
- Ansichten, die mit der Option
WITH (security barrier)
erstellt wurden, bieten Sicherheit auf Zeilenebene, da böswillig ausgewählte Funktionen und Operatoren erst dann Werte aus Zeilen erhalten, wenn die Ansicht ihre Arbeit erledigt hat. Weitere Informationen zurWITH (security barrier)
-Klausel finden Sie unter Regeln und Berechtigungen. - Die Parametrisierung mit benannten Ansichtsparametern ermöglicht eine eingeschränkte Ansicht der Datenbank, die durch Werte parametrisiert wird, die von der Anwendung basierend auf der Sicherheit auf Anwendungsebene, z. B. der Endnutzerauthentifizierung, bereitgestellt werden.
- Durchsetzung zusätzlicher Einschränkungen für Abfragen, die auf parametrisierte Ansichten zugreifen, um zu verhindern, dass die Prüfungen in den Ansichten basierend auf den angegebenen Parameterwerten umgangen werden. Weitere Informationen finden Sie unter Erzwungene Einschränkungen für Anfragen.
Beschränkungen
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 in der übergeordneten Abfrage direkt auf die parametrisierte Ansicht verweisen.
Sie müssen das Flag für parametrisierte Ansichten für jede AlloyDB-Instanz separat aktivieren. Auf der primären Instanz erstellte parametrisierte Ansichtsobjekte werden an schreibgeschützte Replikate und regionsübergreifende Replikate weitergegeben. Die Einstellung des
parameterized_views.enabled
-Flags wird jedoch nicht automatisch repliziert und muss auf jeder Instanz manuell repliziert werden. Weitere Informationen finden Sie unter Vorbereitung. Sie können parametrisierte Ansichten auf dem Replikat erst abfragen, wenn Sie das Flagparameterized_views.enabled
für jede Replikatinstanz aktivieren. Diese Einschränkung gilt nicht für die Standby-Instanz.
Nächste Schritte
- Anwendungssicherheit mit parametrisierten sicheren Ansichten verwalten
- Zugriff auf Anwendungsdaten mit parametrisierten sicheren Ansichten sichern und steuern.