Tous les produits
Search
Centre de documentation

MaxCompute:Gestion des autorisations basée sur les stratégies pour les utilisateurs dotés de rôles intégrés

Dernière mise à jour :Aug 10, 2026

Les rôles intégrés dans MaxCompute sont associés à des autorisations étendues. Par exemple, le rôle Development accorde des droits d'opération sur toutes les tables et ressources d'un projet. Lorsque vous devez restreindre certaines opérations pour un utilisateur disposant d'un rôle intégré — comme l'empêcher de supprimer des tables critiques — utilisez le mécanisme de gestion des autorisations basé sur les stratégies pour superposer des règles de refus aux autorisations existantes du rôle.

Toutes les opérations décrites dans cette rubrique nécessitent l'utilisation du client MaxCompute. La console ne prend pas en charge la gestion des règles de refus basées sur les stratégies.

Prérequis

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

Contexte

Pour les utilisateurs déjà associés à un rôle intégré, le mécanisme basé sur les stratégies s'avère plus efficace que celui basé sur les listes de contrôle d'accès (ACL) pour un contrôle granulaire des autorisations. Le tableau ci-dessous indique quand utiliser chaque méthode.

|
**Mécanisme**
|
**Fonctionnement**
|
**Cas d'utilisation**
| | --- | --- | --- | |
**Stratégie**
|
Accorde ou révoque des opérations spécifiques sur les objets du projet (comme les tables) pour un rôle. Les autorisations appliquées au rôle s'appliquent à tous les utilisateurs auxquels ce rôle est attribué.
|
Un utilisateur dispose d'un rôle intégré et vous devez restreindre certaines opérations, par exemple en l'empêchant de supprimer des tables spécifiques.
| |
**ACL**
|
Accorde ou révoque directement des autorisations au niveau des objets pour des utilisateurs ou des groupes.
|
Aucune gestion des autorisations basée sur les stratégies n'est requise.
|

Pour en savoir plus, consultez les rubriques Utilisateurs et rôles et Contrôle d'accès et contrôle de téléchargement basés sur les stratégies.



















Accorder des autorisations à l'aide du mécanisme basé sur les stratégies

L'exemple suivant illustre comment empêcher l'utilisateur RAM Alice (associée au rôle Development) de supprimer les tables dont le nom commence par tb_. Alice appartient au compte Alibaba Cloud bo*@aliyun.com.

Cette approche consiste à créer un rôle de refus distinct (delete_test) plutôt qu'à modifier directement le rôle intégré. Cela permet d'isoler la règle de refus et de faciliter sa révocation : vous pouvez la retirer d'un utilisateur sans affecter les autres personnes partageant le même rôle intégré.

Important

Seul le propriétaire du projet ou les utilisateurs disposant du rôle Super_Administrator ou Admin peuvent effectuer cette opération.

  1. Installez et démarrez le client MaxCompute.

  2. Exécutez la commande CREATE ROLE pour créer un rôle nommé delete_test.

    CREATE ROLE delete_test;

    Pour plus d'informations, consultez la rubrique Planification des rôles.

  3. Exécutez la commande GRANT afin de configurer le rôle delete_test pour refuser les opérations DROP sur toutes les tables dont le nom commence par tb_.

    GRANT DROP ON TABLE tb_* TO ROLE delete_test privilegeproperties("policy" = "true", "allow"="false");

    L'indicateur "policy" = "true" active le mécanisme basé sur les stratégies. L'indicateur "allow"="false" définit la règle comme un refus. Pour plus d'informations sur la syntaxe GRANT, consultez la section « Contrôle d'accès basé sur les stratégies à l'aide de l'instruction GRANT » dans la rubrique Contrôle d'accès et contrôle de téléchargement basés sur les stratégies.

  4. Exécutez la commande GRANT pour attribuer le rôle delete_test à Alice.

    GRANT delete_test TO ram$bo*@aliyun.com:Alice;

    Si vous ignorez le compte Alibaba Cloud auquel Alice appartient, exécutez la commande LIST USERS; sur le client MaxCompute pour le rechercher. Pour plus d'informations, consultez la rubrique Planification des rôles.

  5. Exécutez la commande SHOW GRANTS pour vérifier les autorisations d'Alice.

    SHOW GRANTS FOR ram$bo*@aliyun.com:Alice;

    Vérifiez que la sortie inclut un bloc [role/delete_test] sous Authorization Type: Policy avec un préfixe D (Deny) sur l'entrée tb_*: Drop.

    [roles]
    role_project_admin, delete_test
    
    Authorization Type: Policy
    [role/delete_test]
    D       projects/mcproject_name/tables/tb_*: Drop
    [role/role_project_admin]
    A       projects/mcproject_name: *
    A       projects/mcproject_name/instances/*: *
    A       projects/mcproject_name/jobs/*: *
    A       projects/mcproject_name/offlinemodels/*: *
    A       projects/mcproject_name/packages/*: *
    A       projects/mcproject_name/registration/functions/*: *
    A       projects/mcproject_name/resources/*: *
    A       projects/mcproject_name/tables/*: *
    A       projects/mcproject_name/volumes/*: *
    
    Authorization Type: ObjectCreator
    AG      projects/mcproject_name/tables/local_test: All
    AG      projects/mcproject_name/tables/mr_multiinout_out1: All
    AG      projects/mcproject_name/tables/mr_multiinout_out2: All
    AG      projects/mcproject_name/tables/ramtest: All
    AG      projects/mcproject_name/tables/wc_in: All
    AG      projects/mcproject_name/tables/wc_in1: All
    AG      projects/mcproject_name/tables/wc_in2: All
    AG      projects/mcproject_name/tables/wc_out: All

    Pour plus d'informations, consultez la rubrique Interrogation des autorisations à l'aide de MaxCompute SQL.

  6. Connectez-vous au client MaxCompute en tant qu'Alice et exécutez la commande DROP TABLE pour tester la restriction.

    DROP TABLE tb_test;

    Si la règle de refus est active, la commande échoue avec une erreur similaire à :

    FAILED: Catalog Service Failed, ErrorCode: 50, Error Message: ODPS-0130013:Authorization exception - Authorization Failed [4011],
    You have NO privilege 'odps:Drop' on {acs:odps:*:projects/mcproject_name/tables/tb_test}.
    Explicitly denied by policy.
    Context ID:85efa8e9-40da-4660-bbfd-b503dfa64c0a. --->Tips: Pricipal:RAM$bo*@aliyun.com:Alice; Deny by policy

    Deux expressions confirment que la règle de refus basée sur les stratégies est effective : Explicitly denied by policy au milieu de l'erreur, et Deny by policy à la fin. Si aucune de ces expressions n'apparaît, ou si la table est supprimée, vérifiez que toutes les étapes précédentes ont été correctement effectuées.

Révoquer des autorisations à l'aide du mécanisme basé sur les stratégies

Si les tables préfixées par tb_ ne sont plus critiques et que vous souhaitez autoriser Alice à les supprimer, révoquez l'autorisation de refus à l'aide de l'une des deux méthodes ci-dessous.

Important

Seul le propriétaire du projet ou les utilisateurs disposant du rôle Super_Administrator ou Admin peuvent effectuer cette opération.

Méthode 1 : Supprimer la règle de refus du rôle

Utilisez cette méthode pour supprimer la restriction de refus tout en conservant le rôle delete_test attribué à Alice.

  1. Installez et démarrez le client MaxCompute.

  2. Exécutez la commande REVOKE pour supprimer la règle de refus du rôle delete_test.

    REVOKE DROP ON TABLE tb_* FROM ROLE delete_test privilegeproperties("policy" = "true", "allow"="false");

    Pour plus d'informations sur la syntaxe REVOKE, consultez la section « Contrôle d'accès basé sur les stratégies à l'aide de l'instruction GRANT » dans la rubrique Contrôle d'accès et contrôle de téléchargement basés sur les stratégies.

  3. Exécutez la commande SHOW GRANTS pour vérifier que la règle de refus a été supprimée.

    SHOW GRANTS FOR ram$bo*@aliyun.com:Alice;

    Le bloc [role/delete_test] ne doit plus apparaître sous Authorization Type: Policy, ce qui confirme que la restriction est levée.

    [roles]
    role_project_admin, delete_test
    
    Authorization Type: Policy
    [role/role_project_admin]
    A       projects/mcproject_name: *
    A       projects/mcproject_name/instances/*: *
    A       projects/mcproject_name/jobs/*: *
    A       projects/mcproject_name/offlinemodels/*: *
    A       projects/mcproject_name/packages/*: *
    A       projects/mcproject_name/registration/functions/*: *
    A       projects/mcproject_name/resources/*: *
    A       projects/mcproject_name/tables/*: *
    A       projects/mcproject_name/volumes/*: *
    
    Authorization Type: ObjectCreator
    AG      projects/mcproject_name/tables/local_test: All
    AG      projects/mcproject_name/tables/mr_multiinout_out1: All
    AG      projects/mcproject_name/tables/mr_multiinout_out2: All
    AG      projects/mcproject_name/tables/ramtest: All
    AG      projects/mcproject_name/tables/tb_test: All
    AG      projects/mcproject_name/tables/wc_in: All
    AG      projects/mcproject_name/tables/wc_in1: All
    AG      projects/mcproject_name/tables/wc_in2: All
    AG      projects/mcproject_name/tables/wc_out: All

    Pour plus d'informations, consultez la rubrique Interrogation des autorisations à l'aide de MaxCompute SQL.

  4. Connectez-vous au client MaxCompute en tant qu'Alice et exécutez la commande DROP TABLE pour confirmer que la suppression fonctionne désormais.

    DROP TABLE tb_test;

    Si la réponse OK s'affiche, la règle de refus a bien été supprimée.

Méthode 2 : Révoquer le rôle de refus de l'utilisateur

Utilisez cette méthode pour dissocier complètement Alice du rôle delete_test. Vous pouvez également supprimer le rôle s'il n'est plus nécessaire.

  1. Installez et démarrez le client MaxCompute.

  2. Exécutez la commande REVOKE pour retirer le rôle delete_test d'Alice.

    REVOKE delete_test FROM ram$bo*@aliyun.com:Alice;

    Pour plus d'informations, consultez la rubrique Planification des rôles.

  3. Exécutez la commande SHOW GRANTS pour confirmer qu'Alice ne dispose plus du rôle delete_test.

    SHOW GRANTS FOR ram$bo*@aliyun.com:Alice;

    L'entrée delete_test doit être absente de la ligne [roles].

    [roles]
    role_project_admin
    
    Authorization Type: Policy
    [role/role_project_admin]
    A       projects/mcproject_name: *
    A       projects/mcproject_name/instances/*: *
    A       projects/mcproject_name/jobs/*: *
    A       projects/mcproject_name/offlinemodels/*: *
    A       projects/mcproject_name/packages/*: *
    A       projects/mcproject_name/registration/functions/*: *
    A       projects/mcproject_name/resources/*: *
    A       projects/mcproject_name/tables/*: *
    A       projects/mcproject_name/volumes/*: *
    
    Authorization Type: ObjectCreator
    AG      projects/mcproject_name/tables/local_test: All
    AG      projects/mcproject_name/tables/mr_multiinout_out1: All
    AG      projects/mcproject_name/tables/mr_multiinout_out2: All
    AG      projects/mcproject_name/tables/ramtest: All
    AG      projects/mcproject_name/tables/wc_in: All
    AG      projects/mcproject_name/tables/wc_in1: All
    AG      projects/mcproject_name/tables/wc_in2: All
    AG      projects/mcproject_name/tables/wc_out: All
  4. Connectez-vous au client MaxCompute en tant qu'Alice et exécutez la commande DROP TABLE pour confirmer que la restriction est levée.

    DROP TABLE tb_test;

    Si la réponse OK s'affiche, Alice peut désormais supprimer les tables tb_*.

  5. (Facultatif) Exécutez la commande DROP ROLE pour supprimer le rôle delete_test s'il n'est plus nécessaire.

    DROP ROLE delete_test;

    Si la réponse OK s'affiche, le rôle est supprimé. Pour plus d'informations, consultez la rubrique Planification des rôles.