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.
Auf dieser Seite wird ABAC vorgestellt, wie sie geregelte Tags, Richtlinien und benutzerdefinierte Funktionen verwendet, um zu steuern, welche Zeilen Benutzer sehen und wie Spaltenwerte dargestellt werden, und deren Vorteile. Auf dieser Seite werden auch die Berechtigungen behandelt, die zum Einrichten von ABAC erforderlich sind, sowie die dadurch ermöglichte Trennung von Aufgaben über verschiedene Teams hinweg.
Eine Übersicht über alle ABAC-Themen, einschließlich Lernprogramme, Richtlinienverwaltung, bewährte Methoden und Einschränkungen, finden Sie unter Attributbasierte Zugriffssteuerung im Unity-Katalog .
Was ist ABAC?
Attributbasierte Zugriffssteuerung (Access Control, ABAC) ist ein dynamisches Zugriffssteuerungsmodell, bei dem Zugriffsentscheidungen auf Richtlinien basieren, die anhand von Attributen ausgewertet werden, die sicherungsfähigen Elementen zugeordnet sind. Im Unity-Katalog werden diese Attribute durch geregelte Tags dargestellt. Diese geregelten Tags werden in Richtlinienbedingungen verwendet, um Datenobjekte innerhalb eines bestimmten Bereichs zuzuordnen, z. B. einen Katalog oder ein Schema. Dadurch kann eine einzelne Richtlinie automatisch auf mehrere Datenobjekte angewendet werden, die ihren Bedingungen entsprechen.
Eine ABAC-Richtlinie könnte beispielsweise alle mit PII gekennzeichneten Spalten für Tabellen innerhalb von mit HR gekennzeichneten Schemas maskieren. Wenn neue Datenobjekte erstellt und markiert werden, wird die Richtlinie automatisch angewendet, ohne dass für jedes Objekt separate Richtliniendefinitionen erforderlich sind.
ABAC unterstützt die Sicherheit auf Zeilen- und Spaltenebene durch Zeilenfilterrichtlinien und Spaltenformatrichtlinien für Tabellen, materialisierte Ansichten und Streamingtabellen. Zeilenfilterrichtlinien beschränken, welche Zeilen ein Benutzer sehen kann. Spaltenmaskierungsrichtlinien steuern, wie Spaltenwerte Benutzern angezeigt werden.
Einen Vergleich mit Zeilenfiltern und Spaltenmasken auf Tabellenebene siehe Wann soll ABAC im Vergleich zu Zeilenfiltern auf Tabellenebene und Spaltenmasken verwendet werden.
Gesteuerte Tags
Im Unity-Katalog werden Attribute als geregelte Tags implementiert. Verwaltete Tags sind Schlüsselwertpaare, die auf Kontoebene definiert sind und auf Unity-Katalog sicherbare Elemente angewendet werden, z. B. Kataloge, Schemas, Tabellen und Spalten sowie Arbeitsbereichsobjekte. Sie stellen Merkmale wie Vertraulichkeit, Klassifizierung oder Geschäftsdomäne dar.
Standardmäßig erben Tags von übergeordneten Katalogen und Schemata auf Tabellen, aber nicht von Tabellen auf Spalten. Sie können geerbte Tags auf jeder Ebene überschreiben, aber Tags auf Spaltenebene müssen direkt angewendet werden.
Auf gesteuerte Tags kann in Richtlinienbedingungen mithilfe integrierter Funktionen wie has_tag() und has_tag_value() verwiesen werden, die überprüfen, ob ein bestimmtes Tag im Zieldatenobjekt entweder direkt oder über die Tagvererbung vorhanden ist.
Geregelte Tags werden auf Kontoebene definiert. Dies bedeutet, dass Sie die gleiche Tagtaxonomie in Ihrem gesamten Datenbestand in einem Konto verwenden können, einschließlich mehrerer Metastores.
Weitere Informationen finden Sie unter „Geregelte Tags“ und „Tags auf im Unity-Katalog sicherbare Objekte anwenden“.
Richtlinien
Richtlinien werden an sicherungsfähige Objekte im Unity-Katalog angefügt, um Zugriffssteuerungsregeln basierend auf Tagbedingungen zu definieren. Unten ist ein Beispiel aufgeführt:
CREATE FUNCTION mask_pii(val STRING) RETURNS STRING
RETURN '***';
CREATE POLICY mask_pii_for_hr
ON CATALOG catalog_a
COLUMN MASK mask_pii
TO `account users` EXCEPT `HR admins`
FOR TABLES
WHEN has_tag('HR')
MATCH COLUMNS has_tag('PII') AS pii_col
ON COLUMN pii_col;
Jede Richtlinie gibt Folgendes an:
-
Umfang: Das zu sichernde Element, an dem die Richtlinie angehängt ist, wie durch die
ON-Klausel angegeben. Wenn Sie eine Richtlinie an ein sicherbares Objekt anfügen, werden die Richtlinienbedingungen für alle Objekte des Typs ausgewertet, die in derFORKlausel angegeben sind, und zwar für das sicherbare Objekt und dessen untergeordnete Objekte.- Unterstützte Richtlinienbereiche sind heute
CATALOG,SCHEMAoderTABLE. - Tabellen, einschließlich Streamingtabellen und materialisierten Ansichten, sind derzeit der einzige unterstützte sicherungsfähige Typ, der mithilfe der
FOR TABLESKlausel angegeben wird. - Eine an einem Katalog angefügte Richtlinie wird für alle Tabellen in diesem Katalog ausgewertet. Eine an einem Schema angefügte Richtlinie wird für alle Tabellen in diesem Schema ausgewertet. Eine an einer Tabelle angefügte Richtlinie wird nur für diese Tabelle ausgewertet.
- Unterstützte Richtlinienbereiche sind heute
Note
Databricks empfiehlt das Anfügen von Richtlinien auf der höchsten anwendbaren Ebene, in der Regel des Katalogs, um die Governanceeffizienz zu maximieren. Siehe bewährte Methoden für ABAC-Richtlinien.
-
Prinzipale: Wer die Richtlinie betrifft und wer ausgenommen ist. Die
TOKlausel gibt die Benutzer, Gruppen oder Dienstprinzipale an, die der Richtlinie unterliegen. Die optionaleEXCEPTKlausel schließt bestimmte Prinzipale aus dieser Richtlinie aus. - Aktionen: Ob die Richtlinie einen Zeilenfilter oder eine Spaltenmaske anwendet. Die Aktion wird von einer benutzerdefinierten Funktion (UDF) implementiert, die die Filter- oder Maskierungslogik definiert. Siehe Richtlinientypen.
- Bedingungen: Tagbasierte Ausdrücke, die bestimmen, auf welche Tabellen oder Spalten die Richtlinienziele ausgerichtet sind. Siehe Bedingungen und integrierte Funktionen.
Richtlinien werden über die Benutzeroberfläche oder programmgesteuert mit SQL-Anweisungen erstellt und verwaltet, wie z. B. CREATE POLICY, DROP POLICY, SHOW POLICIES oder DESCRIBE POLICYREST-APIs, Databricks-SDKs oder Terraform. Weitere Informationen finden Sie unter Erstellen und Verwalten von ABAC-Richtlinien für die vollständige Syntax und Beispiele.
Richtlinientypen
ABAC unterstützt zwei Richtlinientypen: Zeilenfilterrichtlinien und Spaltenmaskierungsrichtlinien. Beide erfordern UDFs , um die Filter- oder Maskierungslogik zu implementieren.
Zeilenfilterrichtlinien
Zeilenfilterrichtlinien beschränken, welche Zeilen ein Benutzer in einer Tabelle basierend auf Werten in Spalten anzeigen kann, die durch Tags identifiziert werden, die den Bedingungen und integrierten Funktionen entsprechen. Die Richtlinie verweist auf eine UDF, die jede Zeile auswertet. Zeilen, bei denen die Funktion FALSE zurückgibt, werden von den Abfrageergebnissen ausgeschlossen. Argumente werden über die Klausel USING COLUMNS an die UDF übergeben.
Beispielanwendungsfall: Stellen Sie für einen Verkaufskatalog sicher, dass das EMEA-Team nur EMEA-Verkaufsdatensätze in allen Tabellen mit einer Spalte mit Kategorisierung regionsieht.
CREATE FUNCTION filter_by_region(region STRING, allowed STRING) RETURNS BOOLEAN
RETURN region = allowed;
CREATE POLICY regional_access_emea
ON CATALOG sales
ROW FILTER filter_by_region
TO `emea team`
FOR TABLES
MATCH COLUMNS has_tag('region') AS rgn
USING COLUMNS (rgn, 'EMEA');
Spaltenmaskenrichtlinien
Spaltenformatrichtlinien steuern, welche Werte ein Benutzer für bestimmte Spalten sieht, die durch Tags identifiziert werden, die den Bedingungen und integrierten Funktionen entsprechen. Die Richtlinie verweist auf eine UDF, die den Spaltenwert als Eingabe verwendet und den ursprünglichen Wert oder eine maskierte Version zurückgibt. Der maskierte Spaltenwert wird automatisch als erstes Argument aus dem ON COLUMN-Klausel gebunden, und zusätzliche Argumente können über USING COLUMNS übergeben werden. Der Rückgabetyp muss mit dem Datentyp der Spalte übereinstimmen oder in diesen konvertierbar sein.
Beispielanwendungsfall: Maskieren Sie SSN-Spalten pii : ssn , sodass Benutzer ***-**-XXXX (nur letzte vier Ziffern) sehen, es sei denn, sie befinden sich in einer Compliancegruppe, die von der Richtlinie ausgenommen ist.
CREATE FUNCTION mask_ssn(ssn STRING, show_last INT) RETURNS STRING
RETURN CONCAT('***-**-', RIGHT(ssn, show_last));
CREATE POLICY mask_ssn_columns
ON CATALOG hr_catalog
COLUMN MASK mask_ssn
TO `account users` EXCEPT `compliance team`
FOR TABLES
MATCH COLUMNS has_tag_value('pii', 'ssn') AS ssn_col
ON COLUMN ssn_col
USING COLUMNS (4);
Die USING COLUMNS Klausel übergibt Argumente an die UDF. Sie akzeptiert Aliase für Spalten, die einem tagbasierten Ausdruck entsprechen, oder Konstantenwerte (an zitierte Zeichenfolgen, numerische Literale, boolesche Werte (TRUE/FALSE) oder NULL), die in der Reihenfolge angegeben werden, in der die Funktion sie erwartet. Bei Spaltenmaskierungsrichtlinien sind dies zusätzliche Argumente, die neben der maskierten Spalte bestehen (die automatisch von ON COLUMN). Dadurch kann eine einzelne UDF für Richtlinien mit verschiedenen Parametern wiederverwendet werden.
SQL UDFs werden empfohlen, um eine bessere Leistung zu erzielen. Python-UDFs, die im Unity-Katalog registriert sind, werden ebenfalls unterstützt, obwohl der Abfrageoptimierer sie nicht in-line setzen oder optimieren kann, wie es bei SQL-UDFs der Fall ist. Anleitungen zur Auswahl von UDF-Sprachen finden Sie unter Leistungsüberlegungen .
Bedingungen und integrierte Funktionen
Bedingungen sind tagbasierte Ausdrücke, die bestimmen, auf welche Tabellen und Spalten eine Richtlinie im Geltungsbereich abzielt.
-
Tabellenbedingungen (
WHENKlausel): Boolesche Ausdrücke, die Tabellen basierend auf ihren Tags entsprechen. Wenn dieser Wert nicht angegeben wird, beträgt er standardmäßigTRUE, d. h. die Richtlinie gilt für alle Tabellen im Bereich. -
Spaltenbedingungen (
MATCH COLUMNSKlausel): Ein oder mehrere durch Kommas getrennte boolesche Ausdrücke, die identifizieren, auf welche Spalten die Richtlinienziele ausgerichtet sind. Jeder Ausdruck kann eine einzelne integrierte Funktion wiehas_tag('pii')oder eine Kombination mit logischen Operatoren wiehas_tag_value('pii', 'ssn') AND has_tag('sensitive')sein. Jedem Ausdruck kann ein Alias (nachASangegeben) zugewiesen werden, auf den in denON COLUMN- undUSING COLUMNS-Klauseln verwiesen werden kann. Eine Richtlinie kann bis zu 3 Spaltenausdrücke enthalten, und alle müssen übereinstimmen, damit die Richtlinie angewendet wird.
Beide Klauseltypen verwenden die folgenden integrierten Funktionen, die vom Unity-Katalog anhand sicherungsfähiger Metadaten ausgewertet werden:
| Funktion | Kontext | Description |
|---|---|---|
has_tag('tag_name') |
Tabellen und Spalten | Gibt true zurück, wenn die Ressource das angegebene Tag aufweist. Bei Tabellenbedingungen (WHEN) werden Tags überprüft, die direkt in der Tabelle festgelegt oder von einem übergeordneten Katalog oder Schema geerbt wurden. Unter Spaltenbedingungen (MATCH COLUMNS) werden nur die Tags überprüft, die direkt auf der Spalte festgelegt sind — dies entspricht nicht den Tabellentags. |
has_tag_value('tag_name', 'tag_value') |
Tabellen und Spalten | Gibt true zurück, wenn die Ressource das spezifische Tag mit dem angegebenen Wert enthält. Gleiches Kontextverhalten wie has_tag(). |
Tags werden nicht von Tabellen auf Spalten übertragen. Die Verwendung von has_tag() in einer MATCH COLUMNS-Klausel stimmt nur mit Tags auf Spaltenebene überein, nicht mit Tags in der übergeordneten Tabelle oder deren übergeordneten Elementen.
Note
Die Funktionen has_tag und has_tag_value verwenden die snake_case-Namenskonvention. Die älteren CamelCase-Formulare (hasTag, ) funktionieren weiterhin, hasTagValuewerden aber nicht empfohlen. Azure Databricks plant, kamelcase-Formulare beim Erstellen neuer Richtlinien nicht mehr zu verwenden. Vorhandene Richtlinien sind nicht betroffen.
Beispiel: Verwenden von zwei Bedingungen für Spalten. Ein customers Schema enthält Tabellen mit einer markierten pii : email E-Mail-Spalte und einer Zustimmungsspalte, die markiert consent_to_contactist. Die Richtlinien maskieren E-Mail-Adressen, es sei denn, der Kunde hat zugestimmt, kontaktiert zu werden. Es verwendet zwei Spaltenbedingungen:
-
has_tag_value('pii', 'email')identifiziert die Spalte, die E-Mail-Adressen enthält (die spalte, die maskieren soll). -
has_tag('consent_to_contact')identifiziert die Spalte, die Zustimmungsinformationen enthält (wird von der UDF verwendet, um zu entscheiden, ob maskiert werden soll).
CREATE FUNCTION mask_email_by_consent(email STRING, consent BOOLEAN)
RETURNS STRING
RETURN CASE
WHEN consent = true THEN email
ELSE '****@****.***'
END;
CREATE POLICY mask_email_with_consent
ON SCHEMA customers
COLUMN MASK mask_email_by_consent
TO `account users`
FOR TABLES
MATCH COLUMNS has_tag_value('pii', 'email') AS m,
has_tag('consent_to_contact') AS c
ON COLUMN m
USING COLUMNS (c);
Diese Richtlinie gilt nur für Tabellen mit markierter pii : email Spalte und markierter consent_to_contactSpalte. Wenn eine Tabelle keine Spalten enthält, die beide Bedingungen erfüllen, gilt die Richtlinie nicht, und die Daten werden nicht maskiert zurückgegeben.
Benutzerdefinierte Funktionen (UDFs)
Zeilenfilter- und Spaltenmaskierungsrichtlinien verwenden benutzerdefinierte Funktionen (UDFs), um ihre Filter- oder Maskierungslogik zu implementieren. Sehen Sie Benutzerdefinierte Funktionen (User-defined Functions, UDFs) im Unity-Katalog, um zu erfahren, wie UDFs erstellt und verwaltet werden, und häufige Muster für Zeilenfilterung und Spaltenmaskierung für Beispiele.
Trennung von Aufgaben und Berechtigungen
Das Einrichten von ABAC umfasst mehrere Schritte mit jeweils eigenen Berechtigungsanforderungen. Organisationen können diese Aufgaben je nachdem, wie sie sich für die Trennung von Aufgaben entscheiden, über spezielle Gruppen verteilen. Beispielsweise kann eine Organisation eine Tag-Taxonomie zentral definieren und dann Datenverantwortliche Daten klassifizieren, Governance-Administratoren Richtlinien schreiben lassen, Datenersteller Objekte innerhalb von geregelten Bereichen erstellen, und Datenverbraucher können Abfragen zu den Ergebnissen machen.
Erstellen Sie die Etikettentaxonomie. Definieren Sie die geregelten Tagschlüssel und deren zulässige Werte, bevor eine person sie anwendet oder Richtlinien schreibt. Erstellen Sie beispielsweise ein
sensitivityTag mit kontrollierten Werten (public,internal, ,confidentialrestricted) oder einempiiTag mit Werten wiessn,emailundphone_number. Informationen zu Benennungskonventionen und Taxonomiedesign finden Sie unter "Standardisieren von Attributen und Benennungen ".- Erforderliche Berechtigungen: Kontoadministrator oder ein Benutzer mit
CREATE, Berechtigung für Tags auf Kontoebene.
- Erforderliche Berechtigungen: Kontoadministrator oder ein Benutzer mit
Datenressourcen taggen. Ein Data Steward-, Datenersteller- oder KI-Klassifizierungssystem wendet geregelte Tags auf Kataloge, Schemas, Tabellen oder Spalten an. Markieren Sie z. B. Spalten, die personenbezogene Informationen enthalten, mit
pii : ssn. Das richtige Tagging ist der wesentliche erste Schritt für ABAC-Richtlinien, die angewendet werden sollen.- Erforderliche Berechtigungen:
ASSIGNfür das Tag undAPPLY TAGfür das Objekt.
- Erforderliche Berechtigungen:
Warnung
Tagging ist eine Sicherheitsgrenze. Wenn ein Benutzer Tags für eine Datenressource ändern kann, kann er ändern, welche Richtlinien darauf angewendet werden. Organisationen sollten festlegen, wer Tags anwenden kann und Änderungen an Tags prüfen.
Erstellen Sie eine Richtlinie. Ein Governanceadministrator erstellt eine Richtlinie in einem Bereich, z. B. einem Katalog oder Schema. Die Richtlinie gibt an, für wen sie gilt, welche Bedingungen sie bewertet, sowie die UDF, die die Filter- oder Maskierungslogik implementiert.
- Erforderliche Berechtigungen:
MANAGEBerechtigung oder Objektbesitz auf dem Sicherungsobjekt, an das die Richtlinie angefügt ist (Katalog, Schema oder Tabelle) undEXECUTEBerechtigung auf die UDF.
- Erforderliche Berechtigungen:
Erstellen sie Datenobjekte. Datenersteller erstellen Tabellen innerhalb der Bereiche, zu denen ihnen Zugriff gewährt wurde. Neue Tabellen erben Tags von übergeordneten Objekten wie Katalogen und Schemas. Datenersteller haben
APPLY TAGautomatisch auf den Objekten, die sie erstellen, wodurch sie zusätzliche Tags anwenden können. Alternativ können sie sich auf die automatische Datenklassifizierung verlassen, um Tagging zu verarbeiten. Wenn eine Organisation auf Datenersteller angewiesen ist, ihre eigenen Objekte zu kategorisieren, sollte sie klare Taggingpraktiken einrichten. Datenersteller müssen keine Zugriffssteuerungen konfigurieren, wenn Richtlinien auf höheren Ebenen festgelegt werden, was Azure Databricks empfiehlt.- Für das übergeordnete Objekt sind folgende Berechtigungen erforderlich:
CREATE TABLEoder andere relevante Erstellungsberechtigungen.
- Für das übergeordnete Objekt sind folgende Berechtigungen erforderlich:
Abfragedaten. Wenn ein Datenanwender eine Tabelle im Bereich der Richtlinie abfragt, wird die Richtlinie automatisch ausgewertet. Wenn die Tabelle oder Spalten den Bedingungen der Richtlinie entsprechen und der Benutzer nicht ausgenommen ist, sieht der Verbraucher gefilterte oder maskierte Daten.
- Erforderliche Berechtigungen: Benutzern müssen, wie
SELECT., Berechtigungen für die Tabelle erteilt werden, zum Beispiel über eine direkte Objekterteilung. ABAC-Zeilenfilter- und Spaltenmaskierungsrichtlinien erteilen keine Berechtigungen von selbst. Sie filtern nur Datensätze oder Maskenspalten für Tabellen, auf die ein Benutzer bereits zugreifen kann.
- Erforderliche Berechtigungen: Benutzern müssen, wie
Vorteile von ABAC
Wiederverwendbare Richtlinien basierend auf Attributen: Eine einzelne Richtlinie kann auf mehrere Datenobjekte angewendet werden, die mit denselben attributbasierten Bedingungen übereinstimmen, anstatt an ein bestimmtes Objekt gebunden zu werden.
Automatische Anwendung auf neue Objekte: Wenn neue Datenobjekte innerhalb des Gültigkeitsbereichs erstellt und mit den relevanten Attributen gekennzeichnet sind, gelten vorhandene ABAC-Richtlinien ohne zusätzliche Konfiguration. Richtlinien wirken wie zukünftige Zuschüsse, was bedeutet, dass Zugriffssteuerungen automatisch angewendet werden, wenn neue Daten erstellt und entsprechend kategorisiert werden.
Einheitliche Durchsetzung innerhalb eines Bereichs: Richtlinien, die auf Katalog- oder Schemaebene angefügt sind, werden dynamisch für übereinstimmende Datenobjekte in diesem Bereich ausgewertet, wodurch Unterschiede beim Filtern oder Maskieren ähnlicher Daten entfernt werden.
Geringere laufende Wartung: Änderungen können vorgenommen werden, indem Richtlinienlogik oder gesteuerte Tags aktualisiert werden, anstatt jedes einzelne Objekt wie erforderlich mit Zeilenfiltern auf Tabellenebene und Spaltenmasken zu überarbeiten.
Zentrale Governance: Da Richtlinien einmal definiert und auf viele übereinstimmende Datenobjekte angewendet werden können, können Governanceteams Steuerelemente in größeren Teilen der Datenmenge mit weniger Richtliniendefinitionen verwalten.