Pour accorder les mêmes autorisations à plusieurs utilisateurs dans un projet MaxCompute, créez un rôle, attribuez-lui des autorisations, puis associez ce rôle aux utilisateurs. Ces derniers héritent alors des autorisations du rôle. Cette rubrique décrit la syntaxe de l'autorisation de rôle au niveau du projet et fournit des exemples.
Cas d'utilisation de l'autorisation de rôle
MaxCompute prend en charge les scénarios d'autorisation de rôle décrits dans le tableau suivant. Après avoir accordé des autorisations à un rôle, vous pouvez associer un rôle à un utilisateur. Si un utilisateur n'a plus besoin des autorisations, vous pouvez dissocier un rôle d'un utilisateur.
Scénario d'autorisation de rôle | Méthode d'autorisation | Autorisateur | Plateforme d'autorisation |
Accorder des autorisations d'opération sur un objet à un rôle |
| Pour plus d'informations, consultez la colonne Autorisateurs pris en charge de la rubrique Autorisations. | |
Révoquer les autorisations d'opération sur un objet d'un rôle | |||
Accorder à un rôle des autorisations d'accès aux données hautement sensibles | |||
Révoquer les autorisations d'accès aux données hautement sensibles d'un rôle |
Accorder des autorisations d'opération sur un objet à un rôle
Vous pouvez accorder à un rôle des autorisations d'opération sur des projets, des tables, des modèles, des ressources, des fonctions ou des instances.
-
Syntaxe
-
Accorder des autorisations d'opération sur un projet à un rôle
-
Autorisation ACL
GRANT Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All ON project <project_name> TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")]; -
Autorisation basée sur des politiques utilisant la syntaxe ACL
GRANT Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All ON project <project_name> TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
-
-
Accorder des autorisations d'opération sur une table à un rôle
-
Autorisation ACL
GRANT Describe|Select|Alter|Update|Drop|ShowHistory|All ON TABLE <table_name> [(<column_list>)] TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")]; -
Autorisation basée sur des politiques utilisant la syntaxe ACL
GRANT Describe|Select|Alter|Update|Drop|ShowHistory|All ON TABLE <table_name> [(<column_list>)] TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
-
-
Accorder des autorisations d'opération sur un modèle à un rôle
-
Autorisation ACL
GRANT Describe|Execute|Alter|Drop|All ON MODEL <model_name> TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")]; -
Autorisation basée sur des politiques utilisant la syntaxe ACL
GRANT Describe|Execute|Alter|Drop|All ON MODEL <model_name> TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
-
-
Accorder des autorisations d'opération sur une ressource à un rôle
-
Autorisation ACL
GRANT Read|Write|Delete|All ON resource <resource_name> TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")]; -
Autorisation basée sur des politiques utilisant la syntaxe ACL
GRANT Read|Write|Delete|All ON resource <resource_name> TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
-
-
Accorder des autorisations d'opération sur une fonction à un rôle
-
Autorisation ACL
GRANT Read|Write|Delete|Execute|All ON FUNCTION <function_name> TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")]; -
Autorisation basée sur des politiques utilisant la syntaxe ACL
GRANT Read|Write|Delete|Execute|All ON FUNCTION <function_name> TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
-
-
Accorder des autorisations d'opération sur une instance à un rôle
-
Autorisation ACL
GRANT Read|Write|All ON instance <instance_id> TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")]; -
Autorisation basée sur des politiques utilisant la syntaxe ACL
GRANT Read|Write|All ON instance <instance_id> TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
-
-
-
Paramètres
Pour plus d'informations sur les paramètres, consultez les rubriques Contrôle d'accès ACL ou Contrôle d'accès basé sur des politiques.
-
Exemples
Supposons que
Bob@aliyun.comsoit le propriétaire du projettest_project_aet qu'un rôle nomméWorkerait été créé dans ce projet. Les exemples suivants montrent comment accorder des autorisations au rôleWorker.-
Exemple 1 : accorder à un rôle les autorisations de créer des tables, des fonctions et des instances, ainsi que de répertorier tous les objets d'un projet.
-- Bob enters the test_project_a project. use test_project_a; -- Grant permissions using ACL. GRANT CreateTable, CreateFunction, CreateInstance, List on project test_project_a to ROLE Worker; -- Grant permissions using the ACL syntax for policy authorization. GRANT CreateTable, CreateFunction, CreateInstance, List ON project test_project_a TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true"); -
Exemple 2 : accorder à un rôle les autorisations de lire les métadonnées et les données d'une table.
-- Bob enters the test_project_a project. use test_project_a; -- Grant permissions using ACL. GRANT Describe, Select ON TABLE sale_detail TO ROLE Worker; -- Grant permissions using the ACL syntax for policy authorization. GRANT Describe, Select ON TABLE sale_detail TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true"); -
Exemple 3 : accorder toutes les autorisations sur un modèle à un rôle.
-- Bob enters the test_project_a project. use test_project_a; -- Grant permissions using ACL. GRANT All ON MODEL my_model TO ROLE Worker; -- Grant permissions using the ACL syntax for policy authorization. GRANT All ON MODEL my_model TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true"); -
Exemple 4 : accorder à un rôle les autorisations de lire et de mettre à jour une ressource.
-- Bob enters the test_project_a project. use test_project_a; -- Grant permissions using ACL. GRANT Read, Write ON resource udtf.jar TO ROLE Worker; -- Grant permissions using the ACL syntax for policy authorization. GRANT Read, Write ON resource udtf.jar TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true"); -
Exemple 5 : accorder à un rôle les autorisations de lire et de mettre à jour une fonction.
-- Bob enters the test_project_a project. use test_project_a; -- Grant permissions using ACL. GRANT Read, Write ON FUNCTION udf_test TO ROLE Worker; -- Grant permissions using the ACL syntax for policy authorization. GRANT Read, Write ON FUNCTION udf_test TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true"); -
Exemple 6 : accorder toutes les autorisations d'opération sur une instance à un rôle.
-- Bob enters the test_project_a project. use test_project_a; -- Grant permissions using ACL. GRANT All ON instance 202112300224**** TO ROLE Worker; -- Grant permissions using the ACL syntax for policy authorization. GRANT All ON instance 202112300224**** TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
-
Révoquer les autorisations d'opération sur un objet d'un rôle
Vous pouvez révoquer les autorisations d'opération sur des projets, des tables, des modèles, des ressources, des fonctions ou des instances d'un rôle.
-
Syntaxe
-
Révoquer les autorisations d'opération sur un projet d'un rôle
-
Révoquer les autorisations accordées via ACL
REVOKE Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All ON project <project_name> FROM ROLE <role_name>; -
Révoquer les autorisations accordées via une autorisation basée sur des politiques
REVOKE Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All ON project <project_name> FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
-
-
Révoquer les autorisations d'opération sur une table d'un rôle
-
Révoquer les autorisations accordées via ACL
REVOKE Describe|Select|Alter|Update|Drop|ShowHistory|All ON TABLE <table_name> [(<column_list>)] FROM ROLE <role_name>; -
Révoquer les autorisations accordées via une autorisation basée sur des politiques
REVOKE Describe|Select|Alter|Update|Drop|ShowHistory|All ON TABLE <table_name> [(<column_list>)] FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
-
-
Révoquer les autorisations d'opération sur un modèle d'un rôle
-
Révoquer les autorisations accordées via ACL
REVOKE Describe|Execute|Alter|Drop|All ON MODEL <model_name> FROM ROLE <role_name>; -
Révoquer les autorisations accordées via une autorisation basée sur des politiques
REVOKE Describe|Execute|Alter|Drop|All ON MODEL <model_name> FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
-
-
Révoquer les autorisations d'opération sur une ressource d'un rôle
-
Révoquer les autorisations accordées via ACL
REVOKE Read|Write|Delete|All ON resource <resource_name> FROM ROLE <role_name>; -
Révoquer les autorisations accordées via une autorisation basée sur des politiques
REVOKE Read|Write|Delete|All ON resource <resource_name> FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
-
-
Révoquer les autorisations d'opération sur une fonction d'un rôle
-
Révoquer les autorisations accordées via ACL
REVOKE Read|Write|Delete|Execute|All ON FUNCTION <function_name> FROM ROLE <role_name>; -
Révoquer les autorisations accordées via une autorisation basée sur des politiques
REVOKE Read|Write|Delete|Execute|All ON FUNCTION <function_name> FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
-
-
Révoquer les autorisations d'opération sur une instance d'un rôle
-
Révoquer les autorisations accordées via ACL
REVOKE Read|Write|All ON instance <instance_id> FROM ROLE <role_name>; -
Révoquer les autorisations accordées via une autorisation basée sur des politiques
REVOKE Read|Write|All ON instance <instance_id> FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
-
-
-
Paramètres
Pour plus d'informations sur les paramètres, consultez les rubriques Contrôle d'accès ACL ou Contrôle d'accès basé sur des politiques.
-
Exemples
Les exemples suivants montrent comment révoquer des autorisations du rôle
Worker.-
Exemple 1 : révoquer du rôle
Workerles autorisations de créer des tables, des fonctions et des instances, ainsi que de répertorier tous les objets d'un projet.-- Bob enters the test_project_a project. use test_project_a; -- Revoke permissions granted using ACL. REVOKE CreateTable, CreateFunction, CreateInstance, List ON project test_project_a FROM ROLE Worker; -- Revoke permissions granted using policy authorization. REVOKE CreateTable, CreateFunction, CreateInstance, List ON project test_project_a FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true"); -
Exemple 2 : révoquer du rôle
Workerles autorisations de lire les métadonnées et les données d'une table.-- Bob enters the test_project_a project. use test_project_a; -- Revoke permissions granted using ACL. REVOKE Describe, Select ON TABLE sale_detail TO ROLE Worker; -- Revoke permissions granted using policy authorization. REVOKE Describe, Select ON TABLE sale_detail FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true"); -
Exemple 3 : révoquer toutes les autorisations sur un modèle du rôle
Worker.-- Bob enters the test_project_a project. use test_project_a; -- Revoke permissions granted using ACL. REVOKE All ON MODEL my_model FROM ROLE Worker; -- Revoke permissions granted using policy authorization. REVOKE All ON MODEL my_model FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true"); -
Exemple 4 : révoquer du rôle
Workerles autorisations de lire et de mettre à jour une ressource.-- Bob enters the test_project_a project. USE test_project_a; -- Revoke permissions granted using ACL. REVOKE Read, Write ON resource udtf.jar FROM ROLE Worker; -- Revoke permissions granted using policy authorization. REVOKE Read, Write ON resource udtf.jar FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true"); -
Exemple 5 : révoquer du rôle
Workerles autorisations de lire et de mettre à jour une fonction.-- Bob enters the test_project_a project. USE test_project_a; -- Revoke permissions granted using ACL. REVOKE Read, Write ON FUNCTION udf_test FROM ROLE Worker; -- Revoke permissions granted using policy authorization. REVOKE Read, Write ON FUNCTION udf_test FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true"); -
Exemple 6 : révoquer toutes les autorisations d'opération sur une instance du rôle
Worker.-- Bob enters the test_project_a project. USE test_project_a; -- Revoke permissions granted using ACL. REVOKE All ON instance 202112300224**** FROM ROLE Worker; -- Revoke permissions granted using policy authorization. REVOKE All ON instance 202112300224**** FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
-
Accorder l'autorisation Download à un rôle
Vous pouvez accorder à un rôle l'autorisation de télécharger des données depuis des tables, des ressources, des fonctions ou des instances.
-
Syntaxe
GRANT Download ON {Table|Resource|Function|Instance} <object_name> TO ROLE <role_name>; -
Paramètres
Pour plus d'informations sur les paramètres, consultez la rubrique Contrôle des autorisations de téléchargement.
-
Exemple
Supposons que le contrôle des autorisations de téléchargement soit activé pour le projet
test_project_a. L'exemple suivant montre comment accorder au rôleWorkerl'autorisation de télécharger des données depuis une table spécifique.-- Bob enters the test_project_a project. USE test_project_a; -- Bob grants the permission to the Worker role. GRANT Download ON TABLE sale_detail TO ROLE Worker;
Révoquer l'autorisation Download d'un rôle
Vous pouvez révoquer l'autorisation de télécharger des données depuis des tables, des ressources, des fonctions ou des instances d'un rôle.
-
Syntaxe
REVOKE Download ON {Table|Resource|Function|Instance} <object_name> FROM ROLE <role_name>; -
Paramètres
Pour plus d'informations sur les paramètres, consultez la rubrique Contrôle des autorisations de téléchargement.
-
Exemple
L'exemple suivant montre comment révoquer du rôle
Workerl'autorisation de télécharger des données depuis une table spécifique.-- Bob enters the test_project_a project. USE test_project_a; -- Bob revokes the permission from the Worker role. REVOKE Download ON TABLE sale_detail FROM ROLE Worker;
Accorder à un rôle des autorisations d'accès aux données hautement sensibles
Après avoir défini un libellé de niveau d'autorisation pour un rôle, si ce dernier doit accéder à des données d'un niveau de sensibilité supérieur, vous devez lui accorder les autorisations requises. Pour savoir comment définir un libellé de niveau d'autorisation pour un utilisateur ou un rôle, consultez la section Définir un libellé de niveau d'autorisation pour un utilisateur ou un rôle.
-
Syntaxe
GRANT Label <number> ON TABLE <table_name> [(<column_list>)] TO ROLE <role_name> [WITH exp <days>]; -
Paramètres
Pour plus d'informations sur les paramètres, consultez la section Autorisation explicite basée sur les libellés.
-
Exemple
Supposons que, dans le projet
test_project_a, le libellé de niveau d'autorisation du rôleWorkersoit 2. L'exemple suivant montre comment accorder à ce rôle l'autorisation d'accéder aux données dont le niveau de sensibilité maximal est 4 dans la tablesale_detail.-- Bob enters the test_project_a project. USE test_project_a; -- Bob grants the permission to the Worker role. GRANT Label 4 ON TABLE sale_detail TO ROLE Worker;
Révoquer les autorisations d'accès aux données hautement sensibles d'un rôle
Vous pouvez révoquer les autorisations d'accès aux données hautement sensibles d'un rôle. Le niveau d'autorisation du rôle lui-même n'est pas affecté.
-
Syntaxe
REVOKE Label ON TABLE <table_name> [(<column_list>)] FROM ROLE <role_name>; -
Paramètres
Pour plus d'informations sur les paramètres, consultez la section Révoquer l'autorisation explicite basée sur les libellés.
-
Exemple
L'exemple suivant montre comment révoquer du rôle
Workerl'autorisation d'accéder aux données dont le niveau de sensibilité maximal est 4 dans la tablesale_detail.-- Bob enters the test_project_a project. USE test_project_a; -- Bob revokes the permission from the Worker role. REVOKE Label ON TABLE sale_detail FROM ROLE Worker;
Associer un rôle à un utilisateur
Vous pouvez associer un rôle intégré ou personnalisé au niveau du projet à un utilisateur. Ce dernier hérite alors des autorisations du rôle.
-
Syntaxe
GRANT <role_name> TO <user_name>; -
Notes
Plusieurs utilisateurs peuvent être associés au même rôle, et un utilisateur peut être associé à plusieurs rôles.
-
Paramètres
Paramètre
Obligatoire
Description
role_name
Oui
Nom du rôle à associer à l'utilisateur.
Vous pouvez exécuter la commande
list roles;dans le client MaxCompute pour afficher les informations sur les rôles.user_name
Oui
Nom de l'utilisateur auquel vous souhaitez associer le rôle.
Vous pouvez exécuter la commande
list users;dans le client MaxCompute pour afficher les informations sur les utilisateurs. -
Exemple
Cet exemple montre comment associer le rôle
Workerà l'utilisateurKa**@aliyun.comet à l'utilisateur RAMRAM$Bob@aliyun.com:Allendans un projet MaxCompute.-- Bob enters the test_project_a project. USE test_project_a; -- Bob attaches the role to the users. GRANT Worker TO ALIYUN$Ka**@aliyun.com; GRANT Worker TO RAM$Bob@aliyun.com:Allen;
Dissocier un rôle d'un utilisateur
Vous pouvez dissocier un rôle d'un utilisateur. Ce dernier ne dispose plus des autorisations accordées par ce rôle.
-
Syntaxe
REVOKE <role_name> FROM <user_name>; -
Paramètres
Paramètre
Obligatoire
Description
role_name
Oui
Nom du rôle à dissocier de l'utilisateur.
Vous pouvez exécuter la commande
list roles;dans le client MaxCompute pour obtenir le nom du rôle.user_name
Oui
Nom de l'utilisateur duquel vous souhaitez dissocier le rôle.
Vous pouvez utiliser le client MaxCompute pour exécuter la commande
list users;afin d'obtenir le nom d'utilisateur. -
Exemple
Cet exemple montre comment dissocier le rôle
WorkerdeKate@aliyun.comet deRAM$Bob@aliyun.com:Allen.-- Bob enters the test_project_a project. USE test_project_a; -- Bob detaches the role from the users. REVOKE Worker FROM ALIYUN$Kate@aliyun.com; REVOKE Worker FROM RAM$Bob@aliyun.com:Allen;
Étapes suivantes
Après avoir accordé des autorisations à un rôle, vous pouvez effectuer les opérations suivantes selon vos besoins :