In diesem Dokument werden parametrisierte sichere Ansichten in AlloyDB for PostgreSQL beschrieben, die Sicherheit für Anwendungsdaten und Zeilenzugriffssteuerung bieten und gleichzeitig SQL unterstützen. Diese Ansichten unterstützen die Extraktion von Datenwerten, also das Abrufen bestimmter Datenelemente aus Spalten. Außerdem schützen sie vor Prompt-Injection-Angriffen. Mit parametrisierten sicheren Ansichten können Endnutzer nur die Daten sehen, auf die sie zugreifen dürfen.
Parameterisierte 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 annimmt. Die Abfrage wird dann mit diesen Werten ausgeführt, die während der gesamten Ausführung verwendet werden.
Im folgenden Beispiel wird eine parametrisierte sichere Ansicht verwendet:
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 Datensicherheitsverwaltung auf Datenbankebene gegen Ad-hoc-Abfragen aus nicht vertrauenswürdigen Quellen, z. B. Abfragen, die aus Abfragen in natürlicher Sprache übersetzt wurden. Stellen Sie sich beispielsweise eine Anwendung vor, deren Datenbank das aufgegebene Gepäck von Reisenden erfasst. Diese Kunden können Abfragen an die Anwendung senden. Ein Kunde mit der Anwendungsnutzer-ID 12345 kann beispielsweise eine Suchanfrage wie „Wo ist meine Tasche?“ in die Anwendung eingeben.
Mithilfe von parametrisierten sicheren Ansichten können Sie die folgenden Anforderungen auf die Ausführung dieser Abfrage in AlloyDB anwenden:
- Die Abfrage kann nur die Datenbankobjekte und ‑spalten lesen, die Sie in den parametrisierten sicheren Datenansichten Ihrer Datenbank aufgeführt haben.
- Die Abfrage kann nur die Datenbankzeilen lesen, die dem Nutzer zugeordnet sind, der die Abfrage gesendet hat. Die zurückgegebenen Zeilen haben eine Datenbeziehung zur Tabellenzeile des Nutzers, deren Wert in der ID-Spalte
12345
ist.
Weitere Informationen zum Konfigurieren der Sicherheit und Zugriffssteuerung finden Sie unter Zugriff auf Anwendungsdaten mithilfe von parametrisierten sicheren Ansichten schützen und steuern.
Mit parametrisierten sicheren Sichten lassen sich Sicherheitsrisiken verringern, die auftreten, wenn Endnutzer nicht vertrauenswürdige Abfragen wie Abfragen in natürlicher Sprache auf der Datenbanktabelle ausführen dürfen. Zu den Sicherheitsrisiken gehören:
- Nutzer können Prompt-Injection-Angriffe ausführen und versuchen, das zugrunde liegende Modell zu manipulieren, um alle Daten zu sehen, auf die die Anwendung Zugriff hat.
- Das LLM kann SQL-Abfragen generieren, die aus Datensicherheitsgründen zu weit gefasst sind. Dieses Sicherheitsrisiko kann dazu führen, dass sensible Daten als Antwort auf selbst wohlmeinende 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 Zeilenbereich einschränken, der für einen einzelnen Anwendungsnutzer verfügbar ist. Mit diesen Einschränkungen können Sie auch genau steuern, welche Daten sich Nutzer der Anwendung über Suchanfragen in natürlicher Sprache ansehen können, unabhängig davon, wie Nutzer diese Anfragen formulieren.
Sicherheitsmechanismus
Mit parametrisierten sicheren Ansichten können Anwendungsentwickler die Datensicherheit und die Zeilenzugriffssteuerung mithilfe der folgenden Methoden gewährleisten:
- Mit der Option
WITH (security barrier)
erstellte Ansichten bieten Sicherheit auf Zeilenebene, da böswillig ausgewählte Funktionen und Operatoren erst nach der Ausführung der Ansicht Werte aus Zeilen übergeben können. Weitere Informationen zur KlauselWITH (security barrier)
finden Sie unter Regeln und Berechtigungen. - Die Parameterisierung mit benannten Ansichtsparametern ermöglicht eine eingeschränkte Ansicht der Datenbank, die anhand von Werten parametrisiert wird, die von der Anwendung auf Grundlage von Sicherheitsmaßnahmen auf Anwendungsebene wie der Endnutzerauthentifizierung bereitgestellt werden. Weitere Informationen finden Sie unter
- Durch die Erzwingung zusätzlicher Einschränkungen für Abfragen, die auf parametrisierte Ansichten zugreifen, werden Angriffe verhindert, bei denen die Prüfungen in den Ansichten anhand der angegebenen Parameterwerte umgangen werden. Weitere Informationen finden Sie unter Erzwungene Einschränkungen für Abfragen.
Beschränkungen
Wenn in einer benutzerdefinierten Funktion, die mit einer der APIs für parameterisierte sichere Datenansichten aufgerufen wird, auf eine parameterisierte Datenansicht 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 Instanz von AlloyDB separat aktivieren. Parameterisierte Ansichtsobjekte, die auf der primären Instanz erstellt wurden, werden an schreibgeschützte Replikate und regionsübergreifende Replikate weitergegeben. Die Flag-Einstellung
parameterized_views.enabled
wird jedoch nicht automatisch repliziert und muss in jeder Instanz manuell repliziert werden. Weitere Informationen finden Sie unter Vorbereitung. Sie können keine parametrisierten Ansichten im Replikat abfragen, bevor Sie dasparameterized_views.enabled
-Flag auf jeder Replikanstanz aktiviert haben. Diese Einschränkung gilt nicht für die Standby-Instanz.
Nächste Schritte
- Sicherheit von Anwendungsdaten mit parametrisierten sicheren Ansichten verwalten
- Zugriff auf Anwendungsdaten mithilfe von parametrisierten sicheren Ansichten sichern und steuern