Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In Unity Catalog können Sie dynamische Ansichten verwenden, um eine differenzierte Zugriffssteuerung zu konfigurieren, die unter anderem Folgendes ermöglicht:
- Sicherheit auf Spalten- oder Zeilenebene
- Datenmaskierung
Unity Catalog führt die folgenden Funktionen ein, mit denen Sie dynamisch einschränken können, welche Benutzer*innen auf eine Zeile, Spalte oder einen Datensatz in einer Ansicht zugreifen können:
-
current_user(): Gibt die E-Mail-Adresse des aktuellen Benutzers zurück. -
is_account_group_member(): GibtTRUEzurück, wenn der oder die aktuelle Benutzer*in Mitglied einer bestimmten Gruppe auf Kontoebene ist Diese Option wird empfohlen, wenn dynamische Ansichten mit Unity Catalog-Daten verwendet werden. -
is_member(): GibtTRUEzurück, wenn der oder die aktuelle Benutzer*in Mitglied einer bestimmten Gruppe auf Arbeitsbereichebene ist Diese Funktion soll für Kompatibilität mit dem vorhandenen Hive-Metastore sorgen. Sie sollten sie nicht für Ansichten mit Unity Catalog-Daten verwenden, da sie die Gruppenmitgliedschaft nicht auf Kontoebene auswertet.
Azure Databricks empfiehlt, Benutzern nicht die Möglichkeit zu gewähren, die Tabellen und Ansichten zu lesen, auf die in der Ansicht verwiesen wird.
Die folgenden Beispiele veranschaulichen, wie dynamische Ansichten in Unity Catalog erstellt werden.
Voraussetzungen
Um dynamische Ansichten zu erstellen oder zu lesen, entsprechen die Anforderungen denen für Standardansichten, mit Ausnahme der Compute-Anforderungen. Sie müssen eine der folgenden Computeressourcen verwenden:
- Ein SQL-Warehouse
- Berechnen mit Standardzugriffsmodus (früher gemeinsam genutzter Zugriffsmodus).
- Berechnen Sie mit dem dedizierten Zugriffsmodus (früher Einzelbenutzer-Zugriffsmodus) auf Databricks Runtime 15.4 LTS oder höher.
Sie können dynamische Ansichten nicht mithilfe dedizierter Rechenressourcen auf Databricks Runtime Version 15.3 oder darunter lesen.
Um die in Databricks Runtime 15.4 LTS und höher bereitgestellten Datenfilter nutzen zu können, müssen Sie auch überprüfen, ob Ihr Arbeitsbereich für serverloses Computingaktiviert ist, da die Datenfilterfunktion, die dynamische Ansichten unterstützt, auf serverlosem Computing ausgeführt wird. Ihnen könnten daher serverlose Rechenressourcen in Rechnung gestellt werden, wenn Sie dedizierte Rechenleistung verwenden, um dynamische Ansichten zu lesen. Siehe Feingranulare Zugriffssteuerung auf dedizierten Rechenressourcen.
Berechtigungen auf Spaltenebene
Mit einer dynamischen Ansicht können Sie die Spalten einschränken, auf die ein*e bestimmte*r Benutzer*in oder eine bestimmte Gruppe zugreifen kann. Im folgenden Beispiel können nur Mitglieder der Gruppe auditors über die Tabelle sales_raw auf E-Mail-Adressen zugreifen. Während der Abfrageanalyse ersetzt Apache Spark die CASE-Anweisung entweder durch die Literalzeichenfolge REDACTED oder den tatsächlichen Inhalt der Spalte für E-Mail-Adressen. Andere Spalten werden wie gewohnt zurückgegeben. Diese Strategie hat keine negativen Auswirkungen auf die Abfrageleistung.
-- Alias the field 'email' to itself (as 'email') to prevent the
-- permission logic from showing up directly in the column name results.
CREATE VIEW sales_redacted AS
SELECT
user_id,
CASE WHEN
is_account_group_member('auditors') THEN email
ELSE 'REDACTED'
END AS email,
country,
product,
total
FROM sales_raw
Zeilenspezifische Berechtigungen
Mit einer dynamischen Ansicht können Sie Berechtigungen bis auf Zeilen- oder Feldebene festlegen. Im folgenden Beispiel können nur Mitglieder der Gruppe managers Transaktionsbeträge anzeigen, wenn diese 1.000.000 USD überschreiten. Übereinstimmende Ergebnisse werden für andere Benutzer*innen herausgefiltert.
CREATE VIEW sales_redacted AS
SELECT
user_id,
country,
product,
total
FROM sales_raw
WHERE
CASE
WHEN is_account_group_member('managers') THEN TRUE
ELSE total <= 1000000
END;
Datenmaskierung
Da Ansichten in Unity Catalog Spark SQL verwenden, können Sie die erweiterte Datenmaskierung implementieren, indem Sie komplexere SQL-Ausdrücke und reguläre Ausdrücke verwenden. Im folgenden Beispiel können alle Benutzer E-Mail-Domänen analysieren, aber nur Mitglieder der auditors Gruppe können die gesamte E-Mail-Adresse eines Benutzers anzeigen.
-- The regexp_extract function takes an email address such as
-- user.x.lastname@example.com and extracts 'example', allowing
-- analysts to query the domain name.
CREATE VIEW sales_redacted AS
SELECT
user_id,
region,
CASE
WHEN is_account_group_member('auditors') THEN email
ELSE regexp_extract(email, '^.*@(.*)$', 1)
END
FROM sales_raw