Übersicht über parametrisierte sichere Ansichten in Cloud SQL

Parametrisierte sichere Ansichten in Cloud SQL for MySQL bieten Datensicherheit und Zugriffskontrolle auf Zeilenebene für Anwendungen und unterstützen gleichzeitig SQL. Diese Ansichten unterstützen die Extraktion von Datenwerten , also das Abrufen bestimmter Daten aus Spalten, und helfen, Prompt-Injection-Angriffezu verhindern. Parametrisierte sichere Ansichten sorgen dafür, dass Endnutzer nur die Daten sehen können, auf die sie Zugriff haben sollen.

Parametrisierte sichere Ansichten sind eine Erweiterung von MySQL-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 Beispiel wird gezeigt, wie Sie eine parametrisierte sichere Ansicht für eine Tabelle erstellen, indem Sie der WHERE-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 sensible Daten preisgeben.

Parametrisierte sichere Ansichten verwalten die Datensicherheit auf Datenbankebene, insbesondere Ad-hoc-Abfragen aus nicht vertrauenswürdigen Quellen, z. B. solche, 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“.

Mit parametrisierten sicheren Ansichten können Sie die folgenden Anforderungen für die Ausführung dieser Abfrage in Cloud SQL for MySQL festlegen:

  • Die Abfrage liest nur die Datenbankobjekte und Spalten, die Sie in Ihren parametrisierten sicheren Ansichten für die 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 Sicherheit und Zugriffskontrolle 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 senden und versuchen, das zugrunde liegende Modell zu manipulieren, um alle Daten preiszugeben, auf die die Anwendung Zugriff hat.
  • Das Modell für die Übersetzung von natürlicher Sprache in SQL (Natural Language to SQL, NL2SQL) kann SQL-Abfragen generieren, die aus Gründen der Datensicherheit einen zu großen Umfang haben. Dieses Sicherheitsrisiko kann dazu führen, dass sensible Daten als Antwort auf gut gemeinte Nutzerabfragen preisgegeben 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 einem einzelnen Anwendungsnutzer zur Verfügung stehen. 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 sie diese Abfragen formulieren.

Angenommen, Sie haben eine Anwendung, mit der Kundenbestellungen verfolgt werden. Ein Supportmitarbeiter fragt in der Anwendung: „Wie lautet der Status der Bestellung für Kunde 12345?“ In diesem Szenario kann die Anwendung eine parametrisierte sichere Ansicht mit einer Sitzungsvariable 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 zugegriffen werden kann.

Mit parametrisierten sicheren Ansichten können Sie den Bereich der Zeilen einschränken, die einzelnen Anwendungsnutzern zur Verfügung stehen. Diese Kontrolle sorgt für Datensicherheit, unabhängig davon, wie Nutzer ihre Abfragen formulieren.

Datensicherheit

Parametrisierte sichere Ansichten bieten Anwendungsentwicklern Datensicherheit und Zugriffskontrolle auf Zeilenebene 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.
  • 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. durch die Endnutzerauthentifizierung.

  • Durchsetzung zusätzlicher Einschränkungen für Abfragen, die auf parametrisierte Ansichten zugreifen, wodurch Angriffe verhindert werden, die darauf abzielen, die Prüfungen in den Ansichten basierend auf den angegebenen Parameterwerten zu umgehen. Weitere Informationen finden Sie unter Einschränkungen für Abfragen.

Vereinfachte Nutzerverwaltung

Mit parametrisierten sicheren Ansichten können Sie eine einzelne Datenbankrolle für alle Endnutzer verwenden, anstatt Methoden zu verwenden, bei denen Sie möglicherweise für jeden Endnutzer einen separaten Datenbanknutzer oder eine separate Datenbankrolle erstellen müssen. Dies trägt dazu bei, die Nutzer- und Verbindungsverwaltung für Anwendungen zu vereinfachen, bei denen jeder Endnutzer nur Zugriff auf seine 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, aber nicht auf die zugrunde liegende Tabelle, alle Nutzer bedienen, was die Nutzerverwaltung und die Datenbankverbindungen vereinfacht.

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 Variablen nicht außerhalb von WHERE-, HAVING- oder ON-Klauseln angeben.

  • Sie können EXPLAIN nicht für eine parametrisierte sichere Ansicht verwenden.

Nächste Schritte