Tous les produits
Search
Centre de documentation

MaxCompute:Contrôle d'accès ACL

Dernière mise à jour :Aug 21, 2026

Si vous devez permettre à plusieurs utilisateurs de travailler avec des objets MaxCompute tels que des projets et des tables, vous pouvez utiliser les listes de contrôle d'accès (ACL) pour accorder des autorisations spécifiques aux utilisateurs ou aux rôles. Pour gérer efficacement les autorisations de plusieurs utilisateurs, accordez des autorisations à un rôle, puis attribuez ce rôle aux utilisateurs. Cette rubrique décrit les commandes d'autorisation ACL prises en charge par MaxCompute et fournit des exemples.

Informations générales

Le contrôle d'accès basé sur les ACL utilise un modèle d'autorisation par liste d'autorisation. Vous autorisez explicitement un utilisateur ou un rôle à effectuer des actions spécifiques sur un objet donné. Cela rend l'autorisation simple et précise.

Après la création d'un projet MaxCompute, le contrôle d'accès basé sur les ACL est activé par défaut. Le propriétaire d'un projet peut exécuter la commande set CheckPermissionUsingACL=true|false; dans le projet pour activer ou désactiver cette fonctionnalité.

Le contrôle d'accès basé sur les ACL s'applique aux scénarios suivants.

Scénario

Description

Concédant

Point d'entrée

Accorder des autorisations à un utilisateur

Accordez directement une ou plusieurs actions sur un objet spécifique à un seul utilisateur.

Consultez la colonne Concédants pris en charge de la liste des autorisations.

Accorder des autorisations aux utilisateurs en fonction des rôles

Accordez directement une ou plusieurs actions sur un objet spécifique à un rôle, puis attribuez ce rôle à plusieurs utilisateurs. Les utilisateurs héritent des autorisations du rôle.

Pour plus d'informations sur la création de rôles et leur attribution aux utilisateurs, consultez les rubriques Planification des rôles et Attribuer un rôle à un utilisateur.

Remarque

Les rôles sont conçus pour une gestion efficace des utilisateurs. Évitez d'accorder les mêmes autorisations sur le même objet à plusieurs rôles.

Prérequis

Avant d'utiliser le contrôle d'accès basé sur les ACL, assurez-vous de disposer des informations suivantes :

  • Le nom de compte ou le nom de rôle du destinataire. L'utilisateur ou le rôle doit être ajouté au projet MaxCompute. Les formats de compte sont les suivants : un compte Alibaba Cloud se présente sous la forme ALIYUN$<account_id>, un compte utilisateur RAM se présente sous la forme RAM$<account_id>:<RAM user UID>, et un rôle RAM se présente sous la forme RAM$<account_id>:role/<RAM role name>.

    Vous pouvez exécuter la commande list users; ou list roles; dans le client MaxCompute pour récupérer les noms de compte ou de rôle.

    Pour ajouter un utilisateur ou un rôle, consultez les rubriques Planification et gestion des utilisateurs ou Planification des rôles.

  • Le type d'objet, le nom de l'objet et les actions à accorder.

    Pour plus d'informations sur les types d'objets et les actions, consultez la rubrique Autorisations MaxCompute.

Limites

Les limites suivantes s'appliquent au contrôle d'accès basé sur les ACL :

  • Vous ne pouvez accorder des autorisations qu'à des utilisateurs ou des rôles existants sur des objets existants. Cela évite les risques de sécurité liés à la suppression et à la recréation d'un objet portant le même nom.

  • Le contrôle d'accès basé sur les ACL ne prend pas en charge l'autorisation avec la clause [with grant option]. Par exemple, si l'utilisateur A accorde à l'utilisateur B l'accès à un objet, l'utilisateur B ne peut pas ensuite accorder cette autorisation à l'utilisateur C.

  • L'autorisation ACL utilise un modèle de liste d'autorisation et ne prend pas en charge le modèle de liste de blocage.

Remarques d'utilisation

Tenez compte des points suivants lorsque vous utilisez le contrôle d'accès basé sur les ACL :

  • Si vous supprimez un objet, MaxCompute révoque automatiquement toutes les autorisations ACL qui lui sont associées.

  • Lorsqu'un utilisateur est supprimé, ses autorisations sont conservées. Si l'utilisateur est ajouté ultérieurement au projet, ses autorisations précédentes sont automatiquement restaurées. Pour effacer définitivement les autorisations d'un utilisateur, consultez la rubrique Effacer les autorisations résiduelles d'un utilisateur supprimé.

Syntaxe

Les commandes de contrôle d'accès basées sur les ACL utilisent la syntaxe suivante :

  • Accorder des autorisations ACL

    grant <actions> on <object_type> <object_name> 
    [(<column_list>)] to <subject_type> <subject_name> 
    [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
  • Révoquer des autorisations ACL

    revoke <actions> on <object_type> <object_name> 
    [(<column_list>)] from <subject_type> <subject_name>;
  • Contrôle d'accès au niveau des colonnes

    grant <actions> on table <table_name> (<column_list>) to <subject_type> <subject_name>;
    revoke <actions> on table <table_name> (<column_list>) from <subject_type> <subject_name>;

Le tableau suivant décrit les paramètres.

Parameter

Required

Description

actions

Yes

Les actions à accorder. Vous pouvez spécifier une ou plusieurs actions dans une seule instruction « grant ».

Séparez les différentes actions par des virgules (,). Pour obtenir la liste des actions valides, consultez la rubrique MaxCompute permissions.

object_type

Yes

Le type d'objet sur lequel les autorisations sont accordées. Une seule instruction ne peut contenir qu'un seul type d'objet.

Pour obtenir la liste des types d'objets valides, consultez la rubrique MaxCompute permissions.

object_name

Yes

Le nom de l'objet. Procédez comme suit pour trouver le nom :

  • Nom du projet : Connectez-vous à la MaxCompute console. Après avoir changé de région dans le coin supérieur gauche, vous trouverez le nom du projet sous l'onglet Projects. Lorsque le type d'objet est un projet, vous ne pouvez interroger que les informations relatives au projet actuel.

  • Nom de la table : Exécutez show tables; dans le MaxCompute client pour récupérer le nom de la table ou de la vue.

  • Nom du modèle : Exécutez show models; dans le MaxCompute client pour récupérer le nom du modèle.

  • Nom de la ressource : Exécutez list resources; dans le MaxCompute client pour récupérer le nom de la ressource.

  • Nom de la fonction : Exécutez list functions; dans le MaxCompute client pour récupérer le nom de la fonction.

  • Nom de l'instance : Exécutez show instances; dans le MaxCompute client pour récupérer l'ID de l'instance.

Vous pouvez utiliser un astérisque () comme caractère générique dans un nom d'objet. Par exemple, table taobao indique toutes les tables dont le nom commence par taobao.

Remarque

L'utilisation d'un caractère générique (*) n'est possible que lors de l'octroi d'autorisations à un ROLE. Les caractères génériques ne sont pas pris en charge lors de l'octroi d'autorisations à un USER.

column_list

No

Ce paramètre est requis uniquement lorsque object_type est défini sur « table » et que vous souhaitez mettre en œuvre un contrôle d'accès au niveau des colonnes. Vous pouvez spécifier une ou plusieurs colonnes. Séparez les noms des différentes colonnes par des virgules (,).

Remarque

Ce paramètre contrôle les autorisations Describe, Select, Alter, Update, Drop, ShowHistory et ALL sur les colonnes spécifiées. Si un niveau de sensibilité est configuré pour une colonne, vous pouvez utiliser le Label-based access control pour contrôler l'accès aux données sensibles en fonction des étiquettes de sensibilité.

privilegeproperties

conditions

No

Contrôle les autorisations en fonction d'attributs tels que la source de la requête et la méthode d'accès. Le format est "<var_name> <Operation> Constant" and "<var_name> <Operation> Constant" and .... Pour obtenir la liste des valeurs prises en charge pour var_name et Operation, consultez la section Conditions.

days

No

Le nombre de jours avant l'expiration de l'autorisation. Si vous ne spécifiez pas ce paramètre, l'autorisation n'expire pas. Si vous spécifiez ce paramètre, MaxCompute supprime automatiquement l'enregistrement d'autorisation après son expiration.

subject_type

Yes

Le type du destinataire de l'autorisation. Valeurs possibles :

  • USER : Un compte Alibaba Cloud ou un utilisateur RAM.

  • ROLE : Un rôle.

subject_name

Yes

Le compte utilisateur ou le nom du rôle du destinataire de l'autorisation. Vous ne pouvez spécifier qu'un seul utilisateur ou rôle par octroi. Formats :

  • Compte Alibaba Cloud : ALIYUN$<account_id>.

  • Utilisateur RAM : RAM$<account_id>:<RAM user UID>.

  • Rôle RAM : RAM$<account_id>:role/<RAM role name>.

Exécutez la commande list users; ou list roles; dans le MaxCompute client pour récupérer le compte utilisateur ou le nom du rôle.

Conditions

Le tableau suivant répertorie les valeurs prises en charge pour les paramètres var_name et Operation des conditions.

var_name

Type

Operation

Description

acs:UserAgent

STRING

  • StringEquals : =

  • StringNotEquals : <>

  • StringLike : like

  • StringNotLike : not like

L'agent utilisateur (User-Agent) du client émettant la requête.

acs:Referer

STRING

Le référent HTTP de la requête.

acs:SourceIp

Adresse IP

  • IpAddress : in (...)

  • NotIpAddress : not in (...)

L'adresse IP du client émettant la requête.

acs:SecureTransport

BOOLEAN

  • True

  • False

Indique si la requête est envoyée via un canal sécurisé, tel que HTTPS.

acs:CurrentTime

DATEANDTIME

  • DateEquals : =

  • DateNotEquals : <>

  • DateLessThan : <

  • DateLessThanEquals : <=

  • DateGreaterThan : >

  • DateGreaterThanEquals : >=

L'heure à laquelle le serveur web reçoit la requête, au format ISO 8601 (par exemple, 2012-11-11T23:59:59Z).

Exemples

Supposons que Bob@aliyun.com (ID de compte : 5527xxxxxxxx5788) soit le propriétaire du projet test_project_a, et qu'Allen (UID : 1652xxxxxxxxxx1538), Alice (UID : 2763xxxxxxxxxx1649) et Tom (UID : 3874xxxxxxxxxx1850) soient des utilisateurs RAM sous Bob@aliyun.com. Les exemples suivants illustrent des opérations d'autorisation à l'aide du client MaxCompute.

  • Exemple 1 : Accorder des autorisations à un utilisateur

    Créez la table sale_detail dans le projet test_project_a et accordez à l'utilisateur Allen les autorisations Describe (lecture des métadonnées) et Select (lecture des données) sur cette table. Voici des exemples de commandes.

    -- Bob switches to the test_project_a project.
    use test_project_a; 
    --Create a partitioned table named sale_detail.
    create table if not exists sale_detail
    (
    shop_name     string,
    customer_id   string,
    total_price   double
    )
    partitioned by (sale_date string, region string);
    --Add the user Allen as a project member.
    add user RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538;
    --Grant permissions to Allen.
    grant Describe, Select on table sale_detail to USER RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538;
    --View the permissions granted to Allen.
    show grants for RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538; 
    --The authorization result is as follows.
    Authorization Type: ACL
    [user/RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538]
    A       projects/test_project_a/tables/sale_detail: Describe | Select
  • Exemple 2 : Accorder des autorisations au niveau des colonnes à un utilisateur

    En vous basant sur la table sale_detail créée dans l'exemple 1, accordez à l'utilisateur Alice toutes les autorisations sur les colonnes shop_name et customer_id de la table sale_detail. Voici des exemples de commandes.

    -- Bob switches to the test_project_a project.
    use test_project_a; 
    --Add user Alice as a project member.
    add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    --Grant column-level permissions to Alice.
    grant All on table sale_detail (shop_name, customer_id) to USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    --View the permissions granted to Alice.
    show grants for RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649; 
    --The authorization result is as follows.
    Authorization Type: ACL
    [user/RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649]
    A       projects/test_project_a/tables/sale_detail/customer_id: All
    A       projects/test_project_a/tables/sale_detail/shop_name: All
  • Exemple 3 : Révoquer les autorisations des utilisateurs

    Sur la base des exemples 1 et 2, révoquez les autorisations des utilisateurs Allen et Alice. Voici des exemples de commandes.

    -- Bob switches to the test_project_a project.
    use test_project_a; 
    --Revoke the permissions from Allen.
    revoke Describe, Select on table sale_detail (shop_name, customer_id) from USER RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538;
    --Revoke the permissions from Alice.
    revoke All on table sale_detail (shop_name, customer_id) from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    --Check Allen's permissions after revocation. The Describe and Select permissions are removed from the permission list.
    show grants for RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538; 
    --Check Alice's permissions after revocation. The All permission is removed from the permission list.
    show grants for RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649; 
  • Exemple 4 : Accorder les mêmes autorisations à plusieurs utilisateurs à l'aide d'un rôle

    Accordez à Alice, Tom et à un autre compte Alibaba Cloud, Lily@aliyun.com (ID de compte : 5638xxxxxxxx6899), les autorisations nécessaires pour créer des instances, des ressources, des fonctions et des tables, ainsi que pour répertorier tous les types d'objets dans le projet test_project_a. Voici des exemples de commandes.

    -- Bob switches to the test_project_a project.
    use test_project_a; 
    --Add the users Alice, Tom, and Lily@aliyun.com as project members.
    add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    add user RAM$5527xxxxxxxx5788:3874xxxxxxxxxx1850;
    add user ALIYUN$5638xxxxxxxx6899;
    --Create the Worker role.
    create role Worker; 
    --Assign the Worker role to the users.
    grant Worker TO RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649; 
    grant Worker TO RAM$5527xxxxxxxx5788:3874xxxxxxxxxx1850; 
    grant Worker TO ALIYUN$5638xxxxxxxx6899; 
    --Grant the Worker role the permissions to create instances, resources, functions, and tables, and to list all object types in the test_project_a project.
    grant CreateInstance, CreateResource, CreateFunction, CreateTable, List on project test_project_a TO ROLE Worker;
    --View the permissions for the user Lily.
    show grants for ALIYUN$5638xxxxxxxx6899; 
    --The following authorization result indicates that the user Lily has the specified permissions.
    [roles]
    worker
    
    Authorization Type: ACL
    [role/worker]
    A       projects/test_project_a: CreateTable | CreateResource | CreateInstance | CreateFunction | List
  • Exemple 5 : Révoquer les mêmes autorisations basées sur un rôle pour plusieurs utilisateurs

    Sur la base de l'exemple 4, révoquez les autorisations des utilisateurs Alice, Tom et Lily@aliyun.com. Voici des exemples de commandes.

    -- Bob switches to the test_project_a project.
    use test_project_a; 
    --Revoke the Worker role from the users Alice, Tom, and Lily@aliyun.com.
    revoke Worker from RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    revoke Worker from RAM$5527xxxxxxxx5788:3874xxxxxxxxxx1850;
    revoke Worker from ALIYUN$5638xxxxxxxx6899;
    --Check Lily's permissions after revocation. The permission list no longer includes the Worker role.
    show grants for ALIYUN$5638xxxxxxxx6899; 

Étapes suivantes

Une fois que vous avez compris le fonctionnement de l'autorisation ACL, vous pouvez gérer les autorisations en fonction de vos besoins métier :