Aller au contenu principal

Didacticiel : Configurer ABAC

Ce tutoriel vous montre comment configurer les politiques de contrôle d'accès basé sur les attributs (ABAC) de filtre de lignes et de masque de colonnes dans Unity Catalog à l'aide de l'interface utilisateur de l'Explorateur de Catalogues. Pour une version entièrement basée sur SQL qui couvre également le masquage conditionnel des e-mails, voir Tutoriel : Configurer l'ABAC avec SQL.

Dans cet exemple, une équipe d'analytique américaine ne devrait pas pouvoir accéder aux enregistrements de clients de l'UE ou aux SSN. Cependant, ils devraient pouvoir accéder à d'autres clients et aux données client dans la même table. Ce tutoriel comprend les étapes suivantes :

  1. Créer un tag gouverné
  2. Créez un catalogue, un schéma et une table Unity Catalog
  3. Appliquer des tags gouvernés aux colonnes
  4. Créez une UDF pour masquer les données d'un membre de l'UE
  5. Créer une politique de filtre de lignes
  6. Créer une UDF pour masquer les numéros de sécurité sociale.
  7. Créer une politique de masquage de colonne
  8. 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.

Prérequis

  • Databricks Runtime 16.4 ou version supérieure, ou compute serverless.
  • Autorisations d'administrateur de compte ou d'administrateur de Workspace (pour créer des tags gouvernés).
  • Pour appliquer des tags gouvernés aux colonnes (Étape 3) : le privilège ASSIGN sur le tag gouverné (les administrateurs de compte l'ont par default) et le privilège APPLY TAG sur la table cible.
  • MANAGE autorisation sur le catalogue ou le schéma cible.
  • EXECUTE sur les UDF.

Les Compute exécutant d'anciennes versions de runtime ne peuvent pas accéder aux tables sécurisées par ABAC. À titre 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 font pas partie du groupe peuvent toujours accéder aux tables.

Étape 1 : Créer un tag gouverné

Pour créer un tag gouverné, vous devez disposer de l'autorisation CREATE de tag gouverné au niveau du compte. Les administrateurs de compte et de Workspace disposent de CREATE par default.

  1. Dans votre workspace Databricks, cliquez sur Icône de données. Catalogue .

  2. Cliquez sur le Icône de bouclier. bouton **Gouverner**.

  3. Dans le menu déroulant, cliquez sur Balises régies .

  4. Cliquez sur **Créer un tag gouverné**.

  5. Entrez la clé de tag pii.

  6. Saisissez une description pour le tag gouverné.

  7. Saisissez les valeurs autorisées pour le tag : ssn et address. Seules ces valeurs peuvent être attribuées à cette clé de balise.

    Didacticiel : créer une politique relative aux tags.

  8. Cliquez sur Créer .

attention

Les données des tags sont stockées en texte brut et peuvent être répliquées à l’échelle mondiale. N’utilisez pas de noms de tags, de valeurs ou de descripteurs qui pourraient compromettre la sécurité de vos ressources. Par exemple, n’utilisez pas de noms de tags, de valeurs ou de descripteurs contenant des informations personnelles ou sensibles.

Étape 2 : Créez la table des clients.

Pour suivre ces étapes, vous devez disposer de l’autorisation CREATE CATALOG sur votre métastore Unity Catalog. Vous pouvez également créer la table dans un schéma pour lequel vous disposez de l'autorisation CREATE TABLE.

  1. Dans la barre latérale, cliquez sur +Nouveau > Notebook .
  2. Sélectionnez SQL comme langage de votre Notebook.
  3. Cliquez sur **Connecter** et attachez le notebook à une ressource de compute.
  4. Ajoutez les commandes suivantes au Notebook et exécutez-les :
SQL
-- 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 : Ajoutez des tags régis aux colonnes PII

  1. Ajoutez la commande suivante au notebook et exécutez-la :
SQL
-- 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éez une UDF pour trouver des adresses européennes

  1. Ajoutez la commande suivante au notebook et exécutez-la :
SQL
-- 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 UDF vérifie si une chaîne donnée ne semble pas faire référence à l'Europe ou à l'UE. Si l'une de ces sous-chaînes est trouvée, elle renvoie FALSE (ce qui signifie que c'est une adresse de l'UE). Si aucune des sous-chaînes n'est trouvée, elle renvoie TRUE (ce qui signifie que ce n'est pas une adresse de l'UE).

Étape 5 : Créez une politique de filtre de lignes

Pour créer une règle sur un objet, vous devez disposer de MANAGE sur l’objet ou en être propriétaire. Pour ajouter une UDF à une stratégie, vous devez disposer de EXECUTE sur l'UDF et celle-ci doit se trouver dans Unity Catalog.

  1. Cliquez sur Icône de données. le Catalogue .

  2. Cliquez sur le catalogue abac que vous avez créé précédemment.

  3. Cliquez sur l'onglet tab .

  4. Cliquez sur Nouvelle politique .

  5. Dans **Général** :

    • Pour **Nom**,hide_eu_customers saisissez.
    • Pour Description , saisissez une description pour votre politique.
    • Pour Appliqué à... , recherchez et sélectionnez les principaux auxquels la politique s'applique. Dans cet exemple, vous pouvez utiliser le groupe **Tous les utilisateurs du compte**.
    • Laissez Sauf pour... vide.
    • Pour **Champ d'application**, choisissez le abac catalogue et Tous les schémas.

    Exemple de paramètres de politique de filtre de ligne ABAC pour la section Général.

  6. Pour Objectif , choisissez Masquer les lignes du tableau .

  7. Dans Conditions , cliquez sur Sélectionner un existant . Ensuite, cliquez sur Icône de fonction. Sélectionner la fonction .

  8. Dans le menu Sélectionner une fonction , cliquez sur le catalogue abac, le schéma customers, puis sur la fonction is_not_eu_address que vous avez créée précédemment.

  9. Cliquez sur Sélectionner .

    Exemple de paramètres de politique de filtrage de lignes ABAC pour la section Conditions.

  10. Vous pouvez éventuellement tester votre fonction de masquage en développant **Tester la fonction** et en fournissant une entrée. Par exemple, saisir 78 Berliner Str., Berlin, Germany E.U. et cliquer sur **Exécuter le test** renvoie FALSE (Hide row) correctement.

    Exemple de test de fonction de masquage de filtre de ligne ABAC.

  11. Dans **Paramètres de fonction** :

    • Choisissez Mapper la colonne au paramètre si elle a une étiquette spécifique .
    • Rechercher pii. Sélectionnez pii : address.

    Exemple de paramètres de politique de filtre de ligne ABAC pour la section des paramètres de fonction.

  12. Cliquez sur Créer une politique .

Étape 6 : testez votre politique

  1. Retournez à votre Notebook et exécutez la commande suivante :
SQL
SELECT DISTINCT * FROM abac.customers.profiles

Seules les lignes non-résidentes de l'UE sont renvoyées.

First_Name

Nom de famille

Phone_Number

Adresse

SSN

Grace

Wilson

890-123-4567

852 Elm St, NV

890-12-3456

Alice

Johnson

345-678-9012

789 Pine rue, TX

345-67-8901

Ivy

Taylor

01 23 45 67 89

159 Aspen St, AZ

012-34-5678

Frank

Miller

789-012-3456

741 Spruce St, WA

789-01-2345

Jane

Smith

234-567-8901

456 Oak St, CA

234-56-7890

John

Doe

123-456-7890

123 Main St, NY

123-45-6789

Charlie

Davis

567-890-1234

654 Rue Cedar, IL

567-89-0123

Emily

Blanc

678-901-2345

987 Birch St, WA

678-90-1234

Hank

Moore

901-234-5678

963, rue Walnut, CO

901-23-4567

Bob

Brown

456-789-0123

321 Maple St, FL

456-78-9012

First_Name

Nom de famille

Phone_Number

Adresse

SSN

Grace

Wilson

890-123-4567

852 Elm St, NV

890-12-3456

Alice

Johnson

345-678-9012

789 Pine rue, TX

345-67-8901

Ivy

Taylor

01 23 45 67 89

159 Aspen St, AZ

012-34-5678

Frank

Miller

789-012-3456

741 Spruce St, WA

789-01-2345

Jane

Smith

234-567-8901

456 Oak St, CA

234-56-7890

John

Doe

123-456-7890

123 Main St, NY

123-45-6789

Charlie

Davis

567-890-1234

654 Rue Cedar, IL

567-89-0123

Emily

Blanc

678-901-2345

987 Birch St, WA

678-90-1234

Hank

Moore

901-234-5678

963, rue Walnut, CO

901-23-4567

Bob

Brown

456-789-0123

321 Maple St, FL

456-78-9012

Vous pouvez continuer à créer une politique de masque de colonne.

Étape 7 : Créer un UDF pour masquer les numéros de sécurité sociale

  1. Ajoutez la commande suivante au notebook et exécutez-la :
SQL
-- Masks any SSN input by returning a fully masked value
CREATE FUNCTION mask_SSN(ssn STRING)
RETURN '***-**-****' ;

Cette UDF renvoie une chaîne SSN entièrement masquée ('***-**-****').

Étape 8 : Créer une politique de masquage de colonne

Pour créer une règle sur un objet, vous devez disposer de MANAGE sur l’objet ou en être propriétaire. Pour ajouter une UDF à une stratégie, vous devez disposer de EXECUTE sur l'UDF et celle-ci doit se trouver dans Unity Catalog.

  1. Cliquez sur Icône de données. le Catalogue .

  2. Cliquez sur le catalogue abac que vous avez créé précédemment.

  3. Cliquez sur l'onglet tab .

  4. Cliquez sur Nouvelle politique .

  5. Dans **Général** :

    • Pour **Nom**,mask_ssn saisissez.
    • Pour Description , saisissez une description pour votre politique.
    • Pour Appliqué à... , recherchez et sélectionnez les principaux auxquels la politique s'applique. Dans cet exemple, vous pouvez utiliser le groupe **Tous les utilisateurs du compte**.
    • Laissez Sauf pour... vide.
    • Pour **Champ d'application**, choisissez le abac catalogue et Tous les schémas.

    Exemple de paramètres de politique de masquage de colonne ABAC pour la section Générales.

  6. Pour **Objectif**, choisissez **Masquer les données des colonnes**.

  7. Dans Conditions :

    • Choisissez Masquer la colonne si elle a un tag spécifique . Recherchez pii et sélectionnez pii : ssn.
    • Cliquez sur Sélectionner un existant . Ensuite, cliquez sur Icône de fonction. Sélectionner la fonction .
    • Dans le menu Sélectionner une fonction , cliquez sur le catalogue abac, le schéma customers, puis sur la fonction mask_ssn que vous avez créée précédemment.
  8. Cliquez sur Sélectionner .

    Exemple de paramètres de politique de masque de colonne ABAC pour la section Conditions.

  9. Vous pouvez éventuellement tester votre fonction de masquage en développant **Tester la fonction** et en fournissant une entrée. Par exemple, saisir 901-234-5678 et cliquer sur **Exécuter le test** renvoie ***-**-**** correctement.

    Exemple de test de fonction de masque de colonne ABAC.

  10. Cliquez sur Créer une politique .

Étape 9. Testez votre stratégie

  1. Retournez à votre Notebook et exécutez la commande suivante :
SQL
SELECT * FROM abac.customers.profiles

Les numéros de sécurité sociale sont maintenant renvoyés en tant que ***-**-****. Seuls les résidents non-européens sont renvoyés car le masque de filtre de ligne est également activé.

First_Name

Nom de famille

Phone_Number

Adresse

SSN

Jane

Smith

234-567-8901

456 Oak St, CA

***-**-****

Alice

Johnson

345-678-9012

789 Pine rue, TX

***-**-****

Charlie

Davis

567-890-1234

654 Rue Cedar, IL

***-**-****

Grace

Wilson

890-123-4567

852 Elm St, NV

***-**-****

Bob

Brown

456-789-0123

321 Maple St, FL

***-**-****

Hank

Moore

901-234-5678

963, rue Walnut, CO

***-**-****

Ivy

Taylor

01 23 45 67 89

159 Aspen St, AZ

***-**-****

Emily

Blanc

678-901-2345

987 Birch St, WA

***-**-****

Frank

Miller

789-012-3456

741 Spruce St, WA

***-**-****

John

Doe

123-456-7890

123 Main St, NY

***-**-****

First_Name

Nom de famille

Phone_Number

Adresse

SSN

Jane

Smith

234-567-8901

456 Oak St, CA

***-**-****

Alice

Johnson

345-678-9012

789 Pine rue, TX

***-**-****

Charlie

Davis

567-890-1234

654 Rue Cedar, IL

***-**-****

Grace

Wilson

890-123-4567

852 Elm St, NV

***-**-****

Bob

Brown

456-789-0123

321 Maple St, FL

***-**-****

Hank

Moore

901-234-5678

963, rue Walnut, CO

***-**-****

Ivy

Taylor

01 23 45 67 89

159 Aspen St, AZ

***-**-****

Emily

Blanc

678-901-2345

987 Birch St, WA

***-**-****

Frank

Miller

789-012-3456

741 Spruce St, WA

***-**-****

John

Doe

123-456-7890

123 Main St, NY

***-**-****