Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Datenfilterung und Sicherheit auf Zellebene in Lake Formation
Wenn Sie Lake Formation-Berechtigungen für eine Datenkatalogtabelle gewähren, können Sie Datenfilterspezifikationen hinzufügen, um den Zugriff auf bestimmte Daten in Abfrageergebnissen und in Lake Formation integrierten Engines einzuschränken. Lake Formation verwendet Datenfilterung, um Sicherheit auf Spaltenebene, Sicherheit auf Zeilenebene und Sicherheit auf Zellebene zu erreichen. Sie können Datenfilter definieren und auf verschachtelte Spalten anwenden, wenn Ihre Quelldaten verschachtelte Strukturen enthalten.
Mit den Datenfilterfunktionen von Lake Formation können Sie die folgenden Datensicherheitsstufen implementieren.
Sicherheit auf Spaltenebene
Durch die Gewährung von Berechtigungen für eine Datenkatalogtabelle mit Sicherheit auf Spaltenebene (Spaltenfilterung) können Benutzer nur bestimmte Spalten und verschachtelte Spalten anzeigen, auf die sie in der Tabelle Zugriff haben. Stellen Sie sich eine persons
Tabelle vor, die in mehreren Anwendungen für ein großes Kommunikationsunternehmen mit mehreren Regionen verwendet wird. Durch die Gewährung von Berechtigungen für Datenkatalogtabellen mit Spaltenfilterung können Benutzer, die nicht in der Personalabteilung arbeiten, daran gehindert werden, personenbezogene Daten (PII) wie Sozialversicherungsnummer oder Geburtsdatum zu sehen. Sie können auch Sicherheitsrichtlinien definieren und nur teilweisen Unterstrukturen von verschachtelten Spalten Zugriff gewähren.
Sicherheit auf Zeilenebene
Durch die Gewährung von Berechtigungen für eine Datenkatalogtabelle mit Sicherheit auf Zeilenebene (Zeilenfilterung) können Benutzer nur bestimmte Datenzeilen anzeigen, auf die sie in der Tabelle Zugriff haben. Die Filterung basiert auf den Werten einer oder mehrerer Spalten. Sie können bei der Definition von Zeilenfilterausdrücken verschachtelte Spaltenstrukturen einbeziehen. Wenn beispielsweise verschiedene Regionalbüros des Kommunikationsunternehmens über eigene Personalabteilungen verfügen, können Sie die Personendatensätze, die Mitarbeiter der Personalabteilung einsehen können, auf Datensätze beschränken, die nur für Mitarbeiter in ihrer Region verfügbar sind.
Sicherheit auf Zellebene
Die Sicherheit auf Zellebene kombiniert Zeilen- und Spaltenfilterung für ein hochflexibles Berechtigungsmodell. Wenn Sie die Zeilen und Spalten einer Tabelle als Raster betrachten, können Sie mithilfe der Sicherheit auf Zellenebene den Zugriff auf einzelne Elemente (Zellen) des Rasters an beliebiger Stelle in den beiden Dimensionen einschränken. Das heißt, Sie können den Zugriff auf verschiedene Spalten je nach Zeile einschränken. Dies wird durch das folgende Diagramm veranschaulicht, in dem eingeschränkte Spalten schattiert sind.
Wenn Sie das Beispiel der Personentabelle fortsetzen, können Sie auf Zellenebene einen Datenfilter erstellen, der den Zugriff auf die Spalte mit der Straßenadresse einschränkt, wenn die Spalte mit dem Land in der Zeile auf „Großbritannien“ gesetzt ist, aber den Zugriff auf die Spalte mit der Straßenadresse ermöglicht, wenn die Spalte mit dem Land in der Zeile auf „US“ gesetzt ist.
Filter gelten nur für Lesevorgänge. Daher können Sie nur die SELECT
Lake Formation Formation-Genehmigung mit Filtern erteilen.
Sicherheit auf Zellenebene für verschachtelte Spalten
Lake Formation ermöglicht es Ihnen, Datenfilter mit Sicherheit auf Zellebene für verschachtelte Spalten zu definieren und anzuwenden. Die integrierten Analyse-Engines wie Amazon Athena, Amazon und Amazon Redshift Spectrum unterstützen jedoch die Ausführung von Abfragen für von Lake Formation verwaltete verschachtelte Tabellen mit Sicherheit auf Zeilen- und Spaltenebene. EMR
Einschränkungen finden Sie unter Einschränkungen bei der Datenfilterung.
Themen
Datenfilter in Lake Formation
Sie können die Sicherheit auf Spalten-, Zeilen- und Zellenebene implementieren, indem Sie Datenfilter erstellen. Sie wählen einen Datenfilter aus, wenn Sie der SELECT
Lake Formation die Berechtigung für Tabellen erteilen. Wenn Ihre Tabelle verschachtelte Spaltenstrukturen enthält, können Sie einen Datenfilter definieren, indem Sie die untergeordneten Spalten ein- oder ausschließen und Filterausdrücke auf Zeilenebene für verschachtelte Attribute definieren.
Jeder Datenfilter gehört zu einer bestimmten Tabelle in Ihrem Datenkatalog. Ein Datenfilter enthält die folgenden Informationen:
-
Name des Filters
-
Der Katalog IDs der Tabelle, die dem Filter zugeordnet ist
-
Tabellenname
-
Name der Datenbank, die die Tabelle enthält
-
Spaltenspezifikation — eine Liste von Spalten und verschachtelten Spalten (mit
struct
Datentypen), die in Abfrageergebnissen ein- oder ausgeschlossen werden sollen. -
Zeilenfilterausdruck — ein Ausdruck, der die Zeilen angibt, die in die Abfrageergebnisse aufgenommen werden sollen. Mit einigen Einschränkungen hat der Ausdruck die Syntax einer
WHERE
Klausel in der PartiQL-Sprache. Um alle Zeilen anzugeben, wählen Sie in der Konsole oder in Aufrufen unter Zugriff auf Zeilenebene die OptionAllRowsWildcard
Zugriff auf alle Zeilen aus. APIWeitere Informationen darüber, was in Zeilenfilterausdrücken unterstützt wird, finden Sie unter. PartiQL-Unterstützung in Zeilenfilterausdrücken
Die Stufe der Filterung, die Sie erhalten, hängt davon ab, wie Sie den Datenfilter auffüllen.
-
Wenn Sie den Platzhalter „Alle Spalten“ angeben und einen Zeilen-Filter-Ausdruck angeben, richten Sie nur Sicherheit auf Zeilen-Ebene (Zeilenfilterung) ein.
-
Wenn Sie bestimmte Spalten und verschachtelte Spalten ein- oder ausschließen und „Alle Zeilen“ mit dem Platzhalter „Alle Zeilen“ angeben, richten Sie nur Sicherheit auf Spaltenebene ein (Spaltenfilterung).
-
Wenn Sie bestimmte Spalten ein- oder ausschließen und auch einen Zeilen-Filter-Ausdruck bereitstellen, stellen Sie Sicherheit auf Zellen-Ebene her (Zell-Filterung).
Der folgende Screenshot aus der Lake Formation Formation-Konsole zeigt einen Datenfilter, der eine Filterung auf Zellebene durchführt. Bei Abfragen in der orders
Tabelle wird der Zugriff auf die customer_name
Spalte eingeschränkt, und die Abfrageergebnisse geben nur Zeilen zurück, in denen die product_type
Spalte „Pharma“ enthält.
Beachten Sie die Verwendung von einfachen Anführungszeichen, um das Zeichenkettenliteral, einzuschließen. 'pharma'
Sie können die Lake Formation Formation-Konsole verwenden, um diesen Datenfilter zu erstellen, oder Sie können das folgende Anforderungsobjekt für den CreateDataCellsFilter
API Vorgang bereitstellen.
{ "Name": "restrict-pharma", "DatabaseName": "sales", "TableName": "orders", "TableCatalogId": "111122223333", "RowFilter": {"FilterExpression": "product_type='pharma'"}, "ColumnWildcard": { "ExcludedColumnNames": ["customer_name"] } }
Sie können so viele Datenfilter erstellen, wie Sie für eine Tabelle benötigen. Dazu benötigen Sie eine SELECT
Genehmigung mit der Grant-Option für eine Tabelle. Data Lake-Administratoren sind standardmäßig berechtigt, Datenfilter für alle Tabellen in diesem Konto zu erstellen. Normalerweise verwenden Sie nur eine Teilmenge der möglichen Datenfilter, wenn Sie einem Prinzipal Berechtigungen für die Tabelle erteilen. Sie könnten beispielsweise einen zweiten Datenfilter für die orders
Tabelle erstellen, bei dem es sich um einen row-security-only Datenfilter handelt. Unter Bezugnahme auf den vorherigen Screenshot könnten Sie die Option Zugriff auf alle Spalten wählen und einen Zeilenfilterausdruck von einschließenproduct_type<>pharma
. Der Name dieses Datenfilters könnte lautenno-pharma
. Er schränkt den Zugriff auf alle Zeilen ein, deren product_type
Spalte auf „Pharma“ gesetzt ist.
Das Anforderungsobjekt für den CreateDataCellsFilter
API Vorgang für diesen Datenfilter ist das Folgende.
{ "Name": "no-pharma", "DatabaseName": "sales", "TableName": "orders", "TableCatalogId": "111122223333", "RowFilter": {"FilterExpression": "product_type<>'pharma'"}, "ColumnNames": ["customer_id", "customer_name", "order_num" "product_id", "purchase_date", "product_type", "product_manufacturer", "quantity", "price"] }
Sie könnten dann für die orders
Tabelle mit dem restrict-pharma
Datenfilter einem Administratorbenutzer und für die orders
Tabelle mit SELECT
dem no-pharma
Datenfilter für Benutzer ohne Administratorrechte gewährenSELECT
. Benutzern im Gesundheitswesen würden Sie für die orders
Tabelle vollen Zugriff SELECT
auf alle Zeilen und Spalten gewähren (kein Datenfilter) oder vielleicht mit einem weiteren Datenfilter, der den Zugriff auf Preisinformationen einschränkt.
Sie können verschachtelte Spalten ein- oder ausschließen, wenn Sie innerhalb eines Datenfilters die Sicherheit auf Spalten- und Zeilenebene angeben. Im folgenden Beispiel wird der Zugriff auf das product.offer
Feld mithilfe qualifizierter Spaltennamen (in doppelte Anführungszeichen) angegeben. Dies ist wichtig für verschachtelte Felder, um Fehler zu vermeiden, die auftreten, wenn Spaltennamen Sonderzeichen enthalten, und um die Abwärtskompatibilität mit den Sicherheitsdefinitionen der obersten Ebene auf Spaltenebene aufrechtzuerhalten.
{ "Name": "example_dcf", "DatabaseName": "example_db", "TableName": "example_table", "TableCatalogId": "111122223333", "RowFilter": { "FilterExpression": "customer.customerName <> 'John'" }, "ColumnNames": ["customer", "\"product\".\"offer\""] }