Mit parametrisierten sicheren Ansichten in AlloyDB for PostgreSQL können Sie die Zugriffssteuerung auf Zeilenebene auf Anwendungsebene erzwingen, sodass Nutzer nur die Daten sehen können, für die sie eine Zugriffsberechtigung haben. Diese Ansichten wurden als Erweiterung von sicheren PostgreSQL-Ansichten erstellt und ermöglichen es Ihnen, anwendungsspezifische benannte Parameter in Ansichtsdefinitionen einzufügen und Parameterwerte zu übergeben, die während der gesamten Abfrageausführung gelten.
Im Folgenden finden 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 parametrisierte sichere Ansichten mit der Funktion execute_parameterized_query oder mit der Anweisung EXECUTE .. WITH VIEW PARAMETERS abfragen.
Weitere Informationen finden Sie unter Anwendungsdatensicherheit mit parametrisierten sicheren Ansichten von AlloyDB verwalten.
Vorteile von parametrisierten sicheren Ansichten
Parametrisierte sichere Ansichten eignen sich gut für die Verwaltung der Datensicherheit auf Datenbankebene, insbesondere bei Ad-hoc-Abfragen aus nicht vertrauenswürdigen Quellen, z. B. solchen, die aus natürlicher Sprache übersetzt wurden. Diese Ansichten bieten eine flexible Möglichkeit, eine detaillierte Zugriffssteuerung zu implementieren.
Stellen Sie sich zum Beispiel eine Anwendung vor, die das aufgegebene Gepäck von Kunden verfolgt. Ein Kunde mit der Nutzer-ID 12345 fragt: „Wo ist meine Tasche?“ In diesem Szenario sorgen parametrisierte sichere Ansichten dafür, dass die Abfrage nur Zeilen zurückgibt, auf die der Nutzer, der die Abfrage gesendet hat, zugreifen kann, z. B. Zeilen, die mit der Nutzer-ID 12345 verknüpft sind.
Sicherheitsrisiken minimieren
Parametrisierte sichere Ansichten helfen, Sicherheitsrisiken zu minimieren, wenn Endnutzer nicht vertrauenswürdige Abfragen wie Abfragen in natürlicher Sprache für Ihre Datenbank ausführen. Zu diesen Risiken gehören:
Schädliche Prompts: Nutzer versuchen möglicherweise, das zugrunde liegende Modell zu manipulieren, um auf alle Anwendungsdaten zuzugreifen.
SQL-Abfragen mit breitem Umfang: Large Language Models (LLMs) können SQL-Abfragen generieren, die sensible Daten offenlegen, selbst bei gut gemeinten Nutzeranfragen.
Mit parametrisierten sicheren Ansichten können Sie den Bereich der Zeilen einschränken, die einzelnen Anwendungsnutzern zur Verfügung stehen. Diese Einstellung trägt zum Schutz von Anwendungsdaten bei, unabhängig davon, wie Nutzer ihre Abfragen formulieren.
Datenzugriffsverwaltung
Parametrisierte sichere Ansichten lösen gängige Herausforderungen bei der Verwaltung des Datenzugriffs für eine große und wachsende Anzahl von Nutzern.
Vereinfachte Nutzerverwaltung: Mit parametrisierten sicheren Ansichten können Sie eine einzelne Datenbankrolle verwenden, um alle Endnutzer zu bedienen, anstatt Methoden zu verwenden, bei denen Sie möglicherweise für jeden Endnutzer einen separaten Datenbanknutzer oder eine separate Rolle erstellen müssen. Parametrisierte sichere Ansichten vereinfachen die Nutzer- und Verbindungsverwaltung für Anwendungen, bei denen jeder Endnutzer nur Zugriff auf seine eigenen Daten benötigt.
In einer Fluggesellschaftsanwendung, in der Kunden nur ihre eigenen Buchungen sehen sollen, können Sie beispielsweise eine einzelne parametrisierte sichere Ansicht definieren, die durch die Endnutzer-ID parametrisiert wird. Diese Ansicht ermöglicht es, dass eine einzelne Datenbankrolle mit Zugriff auf die Ansicht, aber nicht auf die zugrunde liegende Tabelle, alle Nutzer bedient. Das vereinfacht die Nutzerverwaltung und die Datenbankverbindungen.
Optimierte Sicherheitsmaßnahmen: Parametrisierte sichere Ansichten enthalten von Natur aus Zugriffssteuerungen. Wenn eine Ansicht abgefragt wird, werden die definierten Sicherheitsparameter unabhängig vom Nutzer, der auf die Ansicht zugreift, einheitlich erzwungen. Dieser Ansatz unterscheidet sich von Situationen, in denen die zugrunde liegenden Sicherheitsrichtlinien für Basistabellen ohne zusätzliche Konfiguration möglicherweise nicht automatisch auf Ansichten angewendet werden.
Weitere Informationen zu vorhandenen Sicherheitsmechanismen in PostgreSQL, z. B. Richtlinien für die Sicherheit auf Zeilenebene (Row Level Security, RLS), finden Sie unter Richtlinien für die Sicherheit auf Zeilenebene.
Sicherheitsmechanismus
Parametrisierte sichere Ansichten bieten Anwendungsentwicklern Datensicherheit und Zeilenzugriffssteuerung mithilfe der folgenden Methoden:
- Ansichten, die mit der Option
WITH (security_barrier)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 abgeschlossen 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 bereitgestellt werden, z. B. der Endnutzerauthentifizierung.
- Die Durchsetzung zusätzlicher Einschränkungen für Abfragen, die auf parametrisierte Ansichten zugreifen, ist nützlich für Anwendungen, die nicht vertrauenswürdige Abfragen von Endnutzern ausführen, z. B. Abfragen, die von KI-generierten Natural-Language-to-SQL-Generierungen stammen. Diese Maßnahme verhindert, dass Abfragen die von parametrisierten sicheren Ansichten bereitgestellte Sicherheitsumgebung verlassen, und hilft bei der Verwaltung der Ressourcennutzung. Weitere Informationen zu Abfrageeinschränkungen finden Sie unter Erzwungene Einschränkungen für Abfragen.
Beschränkungen
Sie müssen das Flag für parametrisierte Ansichten für jede AlloyDB-Instanz separat aktivieren. Parametrisierte Ansichtsobjekte, die auf der primären Instanz erstellt wurden, werden an Lesepoolinstanzen und regionenübergreifende Replikate weitergegeben. Die Flag-Einstellung
parameterized_views.enabledwird jedoch nicht automatisch angewendet und muss für jede Instanz manuell festgelegt werden. Weitere Informationen finden Sie unter Vorbereitung.Sie können parametrisierte Ansichten auf einer Lesepoolinstanz oder auf einem regionenübergreifenden Replikat erst abfragen, wenn Sie das Flag
parameterized_views.enabledfür jede Instanz aktiviert haben.