Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Importante
Cette fonctionnalité est disponible en préversion publique.
Ce tutoriel explique comment configurer les stratégies de contrôle d’accès basées sur les attributs (ABAC) pour le filtre de lignes et le masque de colonne dans le Catalogue Unity.
Dans cet exemple, une équipe d’analyse américaine ne doit pas être en mesure d’accéder aux enregistrements client de l’UE ou aux SSN. Toutefois, ils doivent être en mesure d’accéder à d’autres clients et données client dans la même table. Ce tutoriel comprend les étapes suivantes :
- Créer une balise régie
- Créer un catalogue de catalogues Unity, un schéma et une table
- Appliquer des balises régies aux colonnes
- Créer une fonction UDF pour masquer les données du membre de l’UE
- Créer une politique de filtre de lignes
- Créer une fonction UDF pour masquer les SSN
- Créer une stratégie de masque de colonne
- Sélectionnez votre table à l’aide des politiques
Pour une démonstration de la configuration d’ABAC, consultez Découvrez le contrôle d'accès basé sur les attributs (ABAC) avec Unity Catalog.
Configuration requise pour le calcul
- Vous devez utiliser le calcul sur Databricks Runtime 16.4 ou version ultérieure.
- Le calcul serverless fonctionne toujours avec ABAC.
Le calcul exécutant des runtimes plus anciens ne peut pas accéder aux tables sécurisées par ABAC. En guise de solution de contournement temporaire, vous pouvez configurer ABAC pour qu’il s’applique uniquement à un groupe spécifique. Ajoutez les utilisateurs que vous souhaitez restreindre à ce groupe. Les utilisateurs qui ne sont pas dans le groupe peuvent toujours accéder aux tables.
Étape 1 : Créer une balise régie
Pour créer une balise régie, vous devez disposer de l’autorisation CREATE de balise régie au niveau du compte. Les administrateurs de compte et d’espace de travail ont CREATE par défaut.
Dans votre espace de travail Azure Databricks, cliquez sur
Catalogue.
Cliquez sur le bouton Balises régies > .
Cliquez sur Créer une balise régie.
Entrez la clé de balise
pii.Entrez une description pour la balise régie.
Entrez les valeurs autorisées pour la balise :
ssnetaddress. Seules ces valeurs peuvent être affectées à cette clé d’étiquette.
Cliquez sur Créer.
Avertissement
Les données de balise sont stockées sous forme de texte brut et peuvent être répliquées globalement. N’utilisez pas de noms d’étiquettes, de valeurs ou de descripteurs susceptibles de compromettre la sécurité de vos ressources. Par exemple, n’utilisez pas de noms d’étiquettes, de valeurs ou de descripteurs qui contiennent des informations personnelles ou sensibles.
Étape 2 : Créer la table clients
Pour suivre ces étapes, vous devez disposer de l’autorisation CREATE CATALOG sur votre metastore du catalogue Unity. Vous pouvez également créer la table dans un schéma sur lequel vous disposez de l’autorisation CREATE TABLE .
- Dans la barre latérale, cliquez sur Nouveau>Notebook.
- Sélectionnez
SQLcomme langue de notebook. - Cliquez sur Se connecter et attacher le bloc-notes à une ressource de calcul.
- Ajoutez les commandes suivantes au notebook et exécutez-les :
-- Create catalog (if not already exists)
CREATE CATALOG IF NOT EXISTS abac;
USE CATALOG abac;
-- Create schema
CREATE SCHEMA IF NOT EXISTS customers;
USE SCHEMA customers;
-- Create table
CREATE TABLE IF NOT EXISTS profiles (
First_Name STRING,
Last_Name STRING,
Phone_Number STRING,
Address STRING,
SSN STRING
)
USING DELTA;
-- Insert data
INSERT INTO profiles (First_Name, Last_Name, Phone_Number, Address, SSN)
VALUES
('John', 'Doe', '123-456-7890', '123 Main St, NY', '123-45-6789'),
('Jane', 'Smith', '234-567-8901', '456 Oak St, CA', '234-56-7890'),
('Alice', 'Johnson', '345-678-9012', '789 Pine St, TX', '345-67-8901'),
('Bob', 'Brown', '456-789-0123', '321 Maple St, FL', '456-78-9012'),
('Charlie', 'Davis', '567-890-1234', '654 Cedar St, IL', '567-89-0123'),
('Emily', 'White', '678-901-2345', '987 Birch St, WA', '678-90-1234'),
('Frank', 'Miller', '789-012-3456', '741 Spruce St, WA', '789-01-2345'),
('Grace', 'Wilson', '890-123-4567', '852 Elm St, NV', '890-12-3456'),
('Hank', 'Moore', '901-234-5678', '963 Walnut St, CO', '901-23-4567'),
('Ivy', 'Taylor', '012-345-6789', '159 Aspen St, AZ', '012-34-5678'),
('Liam', 'Connor', '111-222-3333', '12 Abbey Street, Dublin, Ireland EU', '111-22-3333'),
('Sophie', 'Dubois', '222-333-4444', '45 Rue de Rivoli, Paris, France Europe', '222-33-4444'),
('Hans', 'Müller', '333-444-5555', '78 Berliner Str., Berlin, Germany E.U.', '333-44-5555'),
('Elena', 'Rossi', '444-555-6666', '23 Via Roma, Milan, Italy Europe', '444-55-6666'),
('Johan', 'Andersson', '555-666-7777', '56 Drottninggatan, Stockholm, Sweden EU', '555-66-7777');
Étape 3 : Ajouter des balises régies aux colonnes d’informations d’identification personnelle
- Ajoutez la commande suivante au notebook et exécutez-la :
-- Add the governed tag to ssn column
ALTER TABLE abac.customers.profiles
ALTER COLUMN SSN
SET TAGS ('pii' = 'ssn');
-- Add governed tag to address column
ALTER TABLE abac.customers.profiles
ALTER COLUMN Address
SET TAGS ('pii' = 'address');
Étape 4 : Créer une fonction UDF pour rechercher des adresses UE
- Ajoutez la commande suivante au notebook et exécutez-la :
-- Determine if an address is not in the EU
CREATE OR REPLACE FUNCTION is_not_eu_address(address STRING)
RETURNS BOOLEAN
RETURN (
SELECT CASE
WHEN LOWER(address) LIKE '%eu%'
OR LOWER(address) LIKE '%e.u.%'
OR LOWER(address) LIKE '%europe%'
THEN FALSE
ELSE TRUE
END
);
Cette fonction UDF vérifie si une chaîne donnée n’apparaît pas pour référencer l’Europe ou l’UE. Si l’une de ces sous-chaînes est trouvée, elle retourne FALSE (ce qui signifie qu’il s’agit d’une adresse UE). Si aucune des sous-chaînes n’est trouvée, elle retourne TRUE (ce qui signifie qu’il ne s’agit pas d’une adresse UE).
Étape 5 : Créer une stratégie de filtre de lignes
Pour créer une politique sur un objet, vous devez avoir MANAGE sur l’objet ou être propriétaire de l’objet.
Pour ajouter un UDF à une stratégie, vous devez disposer de EXECUTE sur l'UDF et elle doit figurer dans le catalogue Unity.
Cliquez sur
Catalogue.
Cliquez sur le
abaccatalogue que vous avez créé précédemment.Cliquez sur l’onglet Stratégies.
Cliquez sur Nouvelle stratégie.
En général :
- Pour Nom, entrez
hide_eu_customers. - Pour Description, entrez une description pour votre stratégie.
- Pour Appliqué à..., recherchez et sélectionnez les principaux auxquels la stratégie s’applique. Dans cet exemple, vous pouvez utiliser le groupe Tous les utilisateurs de compte.
- Laissez Except for... vide.
- Pour Étendue, choisissez le
abaccatalogue et Tous les schémas.
- Pour Nom, entrez
Pour Objectif, sélectionnez Masquer les lignes du tableau.
Dans Conditions, cliquez sur Sélectionner existant. Cliquez ensuite sur
Sélectionnez la fonction.
Dans le menu Sélectionner une fonction , cliquez sur le
abaccatalogue, lecustomersschéma, puis lais_not_eu_addressfonction que vous avez créée précédemment.Cliquez sur Sélectionner.
Si vous le souhaitez, vous pouvez tester votre fonction de masquage en développant la fonction test et en fournissant une entrée. Par exemple, l’entrée
78 Berliner Str., Berlin, Germany E.U.et le clic sur Exécuter le test retournentFALSE (Hide row)correctement .
Dans les paramètres de fonction :
- Choisissez Mapper la colonne à un paramètre si la colonne a une balise spécifique.
- Recherchez
pii. Sélectionnezpii : address.
Cliquez sur Créer une stratégie.
Étape 6 : Tester votre stratégie
- Revenez à votre bloc-notes et exécutez la commande suivante :
SELECT DISTINCT * FROM abac.customers.profiles
Seules les lignes concernant les résidents non de l’UE sont renvoyées.
| Prénom | Nom de famille | Numéro de téléphone | Adresse | Numéro de sécurité sociale |
|---|---|---|---|---|
| Grâce | Wilson | 890-123-4567 | 852 Elm St, NV | 890-12-3456 |
| Alice | Johnson | 345-678-9012 | 789 Pine St, TX | 345-67-8901 |
| Lierre | Taylor | 012-345-6789 | 159 Aspen St, AZ | 012-34-5678 |
| Franc | Meunier | 3456-012-789 | 741 Rue Épinette, WA | 2345-01-789 |
| Jane | Forgeron | 234-567-8901 | 456 Oak St, CA | 234-56-7890 |
| John | Biche | 123-456-7890 | 123 Main St, NY | 123-45-6789 |
| Charlie | Davis | 567-890-1234 | 654 Cèdre St, IL | 567-89-0123 |
| Emily | Blanc | 678-901-2345 | 987 Rue Bouleau, WA | 678-90-1234 |
| Écheveau | Moore | 901-234-5678 | 963 Noix St, CO | 901-23-4567 |
| Pendiller | Brun | 456-789-0123 | 321 Maple St, FL | 456-78-9012 |
Vous pouvez continuer à créer une politique de masquage de colonne.
Étape 7 : Créer une fonction UDF pour masquer les SSN
- Ajoutez la commande suivante au notebook et exécutez-la :
-- Masks any SSN input by returning a fully masked value
CREATE FUNCTION mask_SSN(ssn STRING)
RETURN '***-**-****' ;
Cette fonction UDF retourne une chaîne SSN entièrement masquée ('***-****'),
Étape 8 : Créer une stratégie de masque de colonne
Pour créer une politique sur un objet, vous devez avoir MANAGE sur l’objet ou être propriétaire de l’objet.
Pour ajouter un UDF à une stratégie, vous devez disposer de EXECUTE sur l'UDF et elle doit figurer dans le catalogue Unity.
Cliquez sur
Catalogue.
Cliquez sur le
abaccatalogue que vous avez créé précédemment.Cliquez sur l’onglet Stratégies.
Cliquez sur Nouvelle stratégie.
En général :
- Pour Nom, entrez
mask_ssn. - Pour Description, entrez une description pour votre stratégie.
- Pour Appliqué à..., recherchez et sélectionnez les principaux auxquels la stratégie s’applique. Dans cet exemple, vous pouvez utiliser le groupe Tous les utilisateurs de compte.
- Laissez Except for... vide.
- Pour Étendue, choisissez le
abaccatalogue et Tous les schémas.
- Pour Nom, entrez
Pour l'objectif, choisissez Masquer les données de la colonne.
Dans Conditions :
- Choisissez la colonne Mask si elle a une balise spécifique. Recherchez
piiet sélectionnezpii : ssn. - Cliquez sur Sélectionner existant. Cliquez ensuite sur
Sélectionnez la fonction.
- Dans le menu Sélectionner une fonction , cliquez sur le
abaccatalogue, lecustomersschéma, puis lamask_ssnfonction que vous avez créée précédemment.
- Choisissez la colonne Mask si elle a une balise spécifique. Recherchez
Cliquez sur Sélectionner.
Si vous le souhaitez, vous pouvez tester votre fonction de masquage en développant la fonction test et en fournissant une entrée. Par exemple, l’entrée
901-234-5678et le clic sur Exécuter le test retournent***-**-****correctement .
Cliquez sur Créer une stratégie.
Étape 9 : Tester votre stratégie
- Revenez à votre bloc-notes et exécutez la commande suivante :
SELECT * FROM abac.customers.profiles
Les numéros de sécurité sociale (NSS) retournent désormais comme ***-***-***. Seuls les résidents non-UE sont retournés, car le masque de filtre de ligne est également activé.
| Prénom | Nom de famille | Numéro de téléphone | Adresse | Numéro de sécurité sociale |
|---|---|---|---|---|
| Jane | Forgeron | 234-567-8901 | 456 Oak St, CA | ***-**-**** |
| Alice | Johnson | 345-678-9012 | 789 Pine St, TX | ***-**-**** |
| Charlie | Davis | 567-890-1234 | 654 Cèdre St, IL | ***-**-**** |
| Grâce | Wilson | 890-123-4567 | 852 Elm St, NV | ***-**-**** |
| Pendiller | Brun | 456-789-0123 | 321 Maple St, FL | ***-**-**** |
| Écheveau | Moore | 901-234-5678 | 963 Noix St, CO | ***-**-**** |
| Lierre | Taylor | 012-345-6789 | 159 Aspen St, AZ | ***-**-**** |
| Emily | Blanc | 678-901-2345 | 987 Rue Bouleau, WA | ***-**-**** |
| Franc | Meunier | 3456-012-789 | 741 Rue Épinette, WA | ***-**-**** |
| John | Biche | 123-456-7890 | 123 Main St, NY | ***-**-**** |