Datenfilter in Lake Formation - AWS Lake Formation

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.

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

  • Die 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 unter Zugriff auf Zeilenebene die Option Zugriff auf alle Zeilen oder in API-Aufrufen verwenden AllRowsWildcard aus.

    Weitere 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.

Das Datenfilterfenster enthält die folgenden Felder, die vertikal angeordnet sind: Datenfiltername; Zieldatenbank; Zieltabelle; Optionsfeldgruppe mit den Optionen Zugriff auf alle Spalten, Spalten einschließen und Spalten ausschließen; Spalten auswählen (Dropdownliste); Zeilenfilterausdruck (mehrzeiliges Textfeld). Die Option Spalten ausschließen ist ausgewählt, die Spalte customer_name ist für den Ausschluss ausgewählt und das Ausdrucksfeld für den Zeilenfilterausdruck enthält. 'product_type='pharma'

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 Benutzer mit Administratorrechten 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\""] }
Weitere Informationen finden Sie auch unter