Parametrisierte sichere Ansichten in Cloud SQL for MySQL bieten Datensicherheit und Zeilenzugriffssteuerung für Anwendungen und unterstützen gleichzeitig SQL. Diese Ansichten unterstützen die Extraktion von Datenwerten – das Abrufen bestimmter Daten aus Spalten – und schützen vor Prompt-Injection-Angriffen. Parametrisierte sichere Ansichten tragen dazu bei, dass Endnutzer nur auf die Daten zugreifen können, auf die sie Zugriff haben sollen.
Parametrisierte sichere Ansichten sind eine Erweiterung von MySQL-Ansichten, mit der 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.Beispiel für eine parametrisierte sichere Ansicht
Im folgenden Beispiel wird gezeigt, wie Sie eine parametrisierte sichere Ansicht für eine Tabelle erstellen, indem Sie derWHERE-Klausel eine Sitzungsvariable hinzufügen.
-- Create a view with a parameter
CREATE VIEW v_orders AS
SELECT * FROM orders
WHERE customer_id = @local_customer_id AND year >= @earliest_year;
Anschließend können Sie den Parameter für die Ansicht festlegen und eine Abfrage ausführen.
-- Set the parameter and query
SELECT /*+ SET_VIEW_VARS(local_customer_id=5, earliest_year=2021) */ * FROM v_orders;
-- Or query through a stored procedure
CALL mysql.execute_parameterized_query(
'SELECT * FROM db.v_orders',
'local_customer_id = 5, earliest_year = 2021');
Anwendungsfälle
Large Language Models (LLMs) können SQL-Abfragen generieren, die vertrauliche Daten offenlegen.
Parametrisierte sichere Ansichten verwalten die Datensicherheit auf Datenbankebene, insbesondere Ad-hoc-Abfragen aus nicht vertrauenswürdigen Quellen, z. B. aus natürlicher Sprache übersetzte Abfragen. Sie können beispielsweise parametrisierte sichere Ansichten 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 für die Ausführung dieser Abfrage in Cloud SQL for MySQL festzulegen:
- Bei der Abfrage werden nur die Datenbankobjekte und ‑spalten gelesen, die Sie in Ihren parametrisierten sicheren Ansichten aufgeführt haben.
- Bei der Abfrage werden nur die Datenbankzeilen gelesen, 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 Sicherheit 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 starten und versuchen, das zugrunde liegende Modell so zu manipulieren, dass alle Daten offengelegt werden, auf die die Anwendung Zugriff hat.
- Das Modell „Natürliche Sprache zu SQL“ (NL2SQL) kann SQL-Abfragen generieren, 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 aufrufen können, unabhängig davon, wie sie diese Anfragen formulieren.
Sie haben beispielsweise eine Anwendung, mit der Kundenbestellungen nachverfolgt werden. Ein Kundenservicemitarbeiter fragt in der Anwendung: „Wie lautet der Status der Bestellung für den Kunden 12345?“ In diesem Szenario kann die Anwendung eine parametrisierte sichere Ansicht mit einer Sitzungsvariable verwenden, die auf einer Kunden-ID basiert. Für die parametrisierte sichere Ansicht wird eine Abfrage verwendet, die nur Zeilen zurückgibt, die mit der Kunden-ID 12345 verknüpft sind und auf die zugegriffen werden kann.
Mit parametrisierten sicheren Ansichten können Sie den Bereich der Zeilen einschränken, die einzelnen Anwendungsnutzern zur Verfügung stehen. Diese Funktion sorgt für Datensicherheit, unabhängig davon, wie Nutzer ihre Anfragen formulieren.
Datensicherheit
Parametrisierte sichere Ansichten bieten Anwendungsentwicklern Datensicherheit und Zeilenzugriffssteuerung mit den folgenden Methoden:
- Parametrisierte sichere Ansichten in MySQL bieten Sicherheit auf Zeilenebene, indem sie verhindern, dass böswillig ausgewählte Funktionen und Operatoren Werte aus Zeilen erhalten, bevor die Ansicht ihre Arbeit erledigt hat.
Mit benannten Ansichtsparametern kann eine eingeschränkte Ansicht der Datenbank mit Werten parametrisiert werden. Die Werte werden von der Anwendung basierend auf der Sicherheit auf Anwendungsebene, z. B. der Endnutzerauthentifizierung, bereitgestellt.
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 Einschränkungen für Anfragen.
Nutzerverwaltung vereinfachen
Mit parametrisierten sicheren Ansichten können Sie eine einzelne Datenbankrolle für alle Endnutzer verwenden, anstatt Methoden zu nutzen, bei denen Sie möglicherweise für jeden Endnutzer einen separaten Datenbanknutzer oder eine separate Datenbankrolle erstellen müssen. Dies vereinfacht die Nutzer- und Verbindungsverwaltung für Anwendungen, bei denen jeder Endnutzer nur Zugriff auf seine eigenen Daten benötigt.
In einer Anwendung, in der ein Nutzer beispielsweise nur die Bestellungen für einen bestimmten Kunden sehen soll, können Sie eine einzelne parametrisierte sichere Ansicht definieren, die durch die Endnutzer-ID parametrisiert wird. Mit dieser Ansicht kann eine einzelne Datenbankrolle mit Zugriff auf die Ansicht, nicht auf die zugrunde liegende Tabelle, für alle Nutzer verwendet werden. Das vereinfacht die Nutzerverwaltung und Datenbankverbindungen.
Beschränkungen
Parametrisierte sichere Ansichten werden nur in Cloud SQL for MySQL-Version 8.0.43 und höher unterstützt. Wenn Sie versuchen, eine parametrisierte sichere Ansicht in einer früheren Version von MySQL zu erstellen, gibt Cloud SQL einen Fehler zurück.
Sie können keine Variablen außerhalb von
WHERE-,HAVING- oderON-Klauseln angeben.Sie können
EXPLAINnicht für eine parametrisierte sichere Ansicht verwenden.
- Beim Abfragen parametrisierter sicherer Ansichten gibt es Einschränkungen. Weitere Informationen finden Sie unter Einschränkungen für Anfragen.