Tous les produits
Search
Centre de documentation

MaxCompute:Mettre en œuvre le contrôle d'accès au niveau des lignes

Dernière mise à jour :Sep 22, 2026

Mettez en œuvre le contrôle d'accès au niveau des lignes en créant une vue ou une table filtrée par commerçant, puis en la partageant via un package ou une attribution directe. Ce guide présente l'approche basée sur les vues (recommandée) et l'alternative basée sur les tables, en prenant pour exemple une table de commandes partagée entre plusieurs commerçants.

Quand utiliser cette approche

MaxCompute prend également en charge une fonctionnalité native de contrôle d'accès au niveau des lignes conçue pour la définition de règles à grande échelle. Cette fonctionnalité élimine la création d'objets par utilisateur et évite le stockage redondant, mais elle peut générer des plans de requête plus complexes et comporte certaines limitations décrites dans la rubrique liée.

Les méthodes basées sur les vues et les tables présentées dans ce guide sont adaptées lorsque chaque utilisateur nécessite sa propre règle de filtrage, que le nombre de commerçants est gérable et que vous souhaitez des plans de requête plus simples basés sur des données préfiltrées.

Choisir une méthode

Méthode

Fonctionnement

Cas d'utilisation

Inconvénients

Vues (recommandé)

Créez une vue filtrée par commerçant ; partagez-la via un package ou une attribution directe

Chaque commerçant a besoin d'un accès en lecture seule à ses propres lignes sans coût de stockage supplémentaire

Tables

Créez une table filtrée par commerçant

Chaque commerçant a besoin de son propre jeu de données isolé

Les données sont dupliquées ; les tables doivent rester synchronisées avec la table source

Privilégiez les vues lorsque l'accès en lecture seule aux lignes filtrées est suffisant, ce qui couvre la plupart des scénarios de reporting multi-locataires.

Optez pour les tables lorsque les processus en aval nécessitent une écriture dans le jeu de données filtré, ou lorsque des instantanés préagrégés sont nécessaires d'un point de vue opérationnel. Tenez compte du coût de stockage et de la charge de synchronisation avant de choisir cette approche.

Les deux méthodes créent un objet par commerçant. À grande échelle, envisagez la fonctionnalité native de contrôle d'accès au niveau des lignes qui gère les définitions de règles de manière centralisée sans création d'objet par utilisateur.

Scénario

La table table_order du projet A stocke les enregistrements de transactions de commandes pour tous les commerçants. Tous les commerçants peuvent accéder à la table, mais chacun ne doit voir que les enregistrements de sa propre boutique. La colonne sellerid identifie le commerçant, de sorte qu'un filtre par commerçant sur sellerid assure l'isolation au niveau des lignes.

Prérequis

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

Accorder l'accès via un package

Utilisez un package pour partager la vue filtrée avec le projet du commerçant. Les packages constituent le mécanisme standard de MaxCompute pour le partage de ressources interprojets.

  1. Connectez-vous au client MaxCompute à l'aide de votre compte Alibaba Cloud.

  2. Créez une vue filtrée pour le commerçant dans le projet A. Remplacez sellerid='xxxx' par l'ID vendeur réel du commerçant.

    create view <view_name> as select * from table_order WHERE sellerid='xxxx';

    Pour connaître la syntaxe et les options des vues, consultez Gérer les vues.

  3. Créez un package dans le projet A, ajoutez-y la vue et autorisez le projet du commerçant à l'installer.

    -- Create a package.
    create package <package_name>;
    -- Add the view to the package.
    add table <view_name> to package <package_name>;
    -- Allow the merchant's project to install the package.
    allow project <project_name> to install package <package_name>;

    Pour plus d'informations sur le partage interprojets, consultez Accès aux ressources interprojets basé sur les packages.

  4. Basculez vers le contexte du projet du commerçant, installez le package et accordez à l'utilisateur du commerçant un accès en lecture.

    -- Install the package in the merchant's project.
    install package <Project A>.<package_name>;
    -- Grant the user read permission on the package.
    grant read on package <Project A>.<package_name> to user <user_name>;

Accorder l'accès directement

En alternative aux packages, accordez les autorisations SELECT et DESCRIBE directement sur la vue. Utilisez cette approche lorsque le partage interprojets n'est pas requis.

grant select,describe on table <view_name> to user <user_name>;