Implémenter la sécurité au niveau des lignes dans l'entrepôt de données Microsoft Fabric

S’applique à : point de terminaison d’analytique SQL et entrepôt dans Microsoft Fabric

La sécurité au niveau des lignes (RLS, row-level security) dans l’entrepôt Fabric et le point de terminaison d’analytique SQL vous permet de contrôler l'accès aux lignes d'une table de base de données en fonction des rôles et prédicats utilisateur. Pour plus d'informations, consultez Sécurité au niveau des lignes dans l'entrepôt de données Fabric.

Ce guide vous conseille dans les étapes de mise en œuvre de la sécurité au niveau des lignes dans l’entrepôt Microsoft Fabric ou le point de terminaison d’analytique SQL.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  1. Un espace de travail Fabric avec une capacité active ou une capacité d’essai.
  2. Un entrepôt Fabric ou un point de terminaison d’analytique SQL sur un Lakehouse.
  3. Soit les droits d’administrateur, de membre ou de contributeur sur l’espace de travail, soit des autorisations élevées sur l’entrepôt ou le point de terminaison d’analytique SQL.

1. Se connecter

  1. Connectez-vous à l’aide d’un compte avec un accès élevé sur l’entrepôt ou le point de terminaison d’analytique SQL. (Soit le rôle d'administrateur/membre/contributeur sur l'espace de travail, soit les autorisations de contrôle sur l'entrepôt ou le point de terminaison d’analytique SQL).
  2. Ouvrez l'espace de travail Fabric et accédez à l'entrepôt ou au point de terminaison d’analytique SQL auquel vous souhaitez appliquer la sécurité au niveau des lignes.

2. Définir les stratégies de sécurité

  1. Déterminez les rôles et les prédicats que vous souhaitez utiliser pour contrôler l’accès aux données. Les rôles définissent qui peut accéder aux données et les prédicats définissent les critères d'accès.

  2. Créez des prédicats de sécurité. Les prédicats de sécurité sont des conditions qui déterminent les lignes auxquelles un utilisateur peut accéder. Vous pouvez créer des prédicats de sécurité en tant que fonctions table en ligne. Cet exercice simple suppose qu'il existe une colonne dans votre table de données, UserName_column, qui contient le nom d'utilisateur correspondant, renseigné par la fonction système USER_NAME().

    -- Creating schema for Security
    CREATE SCHEMA Security;
    GO
    
    -- Creating a function for the SalesRep evaluation
    CREATE FUNCTION Security.tvf_securitypredicate(@UserName AS varchar(50))
        RETURNS TABLE
    WITH SCHEMABINDING
    AS
        RETURN SELECT 1 AS tvf_securitypredicate_result
    WHERE @UserName = USER_NAME();
    GO
    
    -- Using the function to create a Security Policy
    CREATE SECURITY POLICY YourSecurityPolicy
    ADD FILTER PREDICATE Security.tvf_securitypredicate(UserName_column)
    ON sampleschema.sampletable
    WITH (STATE = ON);
    GO 
    
  3. Remplacez YourSecurityPolicy par le nom de votre stratégie, tvf_securitypredicate par le nom de votre fonction de prédicat, sampleschema par le nom de votre schéma et sampletable par le nom de votre table cible.

  4. Remplacez UserName_column par une colonne de votre tableau contenant les noms d'utilisateur.

  5. Remplacez WHERE @UserName = USER_NAME(); par une clause WHERE qui correspond au filtre de sécurité basé sur le prédicat souhaité. Par exemple, cela filtre les données où la colonne UserName, mappée au paramètre @UserName, correspond au résultat de la fonction système USER_NAME().

  6. Répétez ces étapes pour créer des stratégies de sécurité pour d’autres tables si nécessaire.

3. Tester la sécurité au niveau des lignes

  1. Connectez-vous à Fabric en tant qu'utilisateur membre d'un rôle avec une stratégie de sécurité associée. Utilisez la requête suivante pour vérifier la valeur qui doit correspondre dans la table.

    SELECT USER_NAME() 
    
  2. Interrogez les tables de la base de données pour vérifier que la sécurité au niveau des lignes fonctionne comme prévu. Les utilisateurs ne doivent voir que les données qui satisfont au prédicat de sécurité défini dans leur rôle. Par exemple :

    SELECT * FROM sampleschema.sampletable
    
  3. Des résultats filtrés similaires pour l'utilisateur seront filtrés avec d'autres applications qui utilisent l'authentification Microsoft Entra pour l'accès à la base de données.

4. Surveiller et maintenir la sécurité au niveau des lignes

Surveillez et mettez régulièrement à jour vos politiques de sécurité au niveau des lignes à mesure que vos exigences de sécurité évoluent. Gardez une trace des attributions de rôles et assurez-vous que les utilisateurs disposent des accès appropriés.