Les rôles permettent d'accorder le même ensemble d'autorisations à plusieurs utilisateurs simultanément. Créez un rôle, accordez-lui des autorisations, puis associez-le aux utilisateurs : chaque utilisateur hérite automatiquement des autorisations du rôle.
Cette rubrique décrit la syntaxe SQL permettant d'accorder et de révoquer des autorisations sur les rôles au niveau du projet dans MaxCompute. Elle couvre les autorisations d'opération sur les objets, les autorisations de téléchargement, les autorisations basées sur des libellés pour les données hautement sensibles, ainsi que les procédures d'association et de dissociation des rôles aux utilisateurs.
Scénarios d'autorisation de rôle
|
Scénario |
Méthode d'autorisation |
Plateforme d'autorisation |
|
Accorder ou révoquer des autorisations d'opération sur un objet |
Contrôle d'accès basé sur les listes de contrôle d'accès (ACL) (liste d'autorisation) ou contrôle d'accès basé sur des politiques (liste d'autorisation ou liste de blocage) |
Client MaxCompute, console MaxCompute (recommandée), MaxCompute Studio ou console DataWorks |
|
Accorder ou révoquer l'autorisation de téléchargement |
Mêmes plateformes que ci-dessus |
|
|
Accorder ou révoquer des autorisations sur les données hautement sensibles |
Mêmes plateformes que ci-dessus |
Pour connaître les auteurs d'autorisation habilités à effectuer chaque action, consultez la section Auteurs d'autorisation pris en charge.
Après avoir accordé des autorisations à un rôle, associez le rôle aux utilisateurs. Pour supprimer l'accès, dissociez le rôle de l'utilisateur.
Accorder des autorisations d'opération sur un objet à un rôle
Accordez à un rôle des autorisations sur des projets, des tables, des modèles, des ressources, des fonctions ou des instances. Les autorisations prises en charge varient selon le type d'objet :
|
Type d'objet |
Autorisations prises en charge |
|
Projet |
|
|
Table |
|
|
Modèle |
|
|
Ressource |
|
|
Fonction |
|
|
Instance |
|
Syntaxe
Autorisation ACL :
GRANT <permissions>
ON {project <project_name> | TABLE <table_name> [(<column_list>)] | MODEL <model_name> | resource <resource_name> | FUNCTION <function_name> | instance <instance_id>}
TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
Autorisation basée sur des politiques (utilisation de la syntaxe ACL) :
GRANT <permissions>
ON {project <project_name> | TABLE <table_name> [(<column_list>)] | MODEL <model_name> | resource <resource_name> | FUNCTION <function_name> | instance <instance_id>}
TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
Pour plus de détails sur les paramètres, consultez les rubriques Contrôle d'accès basé sur les ACL et Contrôle d'accès basé sur des politiques.
Exemples
Les exemples suivants utilisent test_project_a comme projet, Worker comme rôle et Bob@aliyun.com comme propriétaire du projet. Chaque exemple présente à la fois la syntaxe ACL et la syntaxe basée sur des politiques.
Exemple 1 : Accorder des autorisations au niveau du projet
Accordez au rôle Worker les autorisations de créer des tables, des fonctions et des instances, ainsi que de lister tous les objets dans test_project_a.
-- Enter the project.
USE test_project_a;
-- ACL authorization
GRANT CreateTable, CreateFunction, CreateInstance, List ON project test_project_a TO ROLE Worker;
-- Policy authorization
GRANT CreateTable, CreateFunction, CreateInstance, List
ON project test_project_a
TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Exemple 2 : Accorder des autorisations sur une table
Accordez au rôle Worker les autorisations de lire les métadonnées et les données de la table sale_detail.
USE test_project_a;
-- ACL authorization
GRANT Describe, Select ON TABLE sale_detail TO ROLE Worker;
-- Policy authorization
GRANT Describe, Select
ON TABLE sale_detail
TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Exemple 3 : Accorder des autorisations sur un modèle
Accordez au rôle Worker toutes les autorisations sur le modèle my_model.
USE test_project_a;
-- ACL authorization
GRANT All ON MODEL my_model TO ROLE Worker;
-- Policy authorization
GRANT All
ON MODEL my_model
TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Exemple 4 : Accorder des autorisations sur une ressource
Accordez au rôle Worker les autorisations de lire et de mettre à jour la ressource udtf.jar.
USE test_project_a;
-- ACL authorization
GRANT Read, Write ON resource udtf.jar TO ROLE Worker;
-- Policy authorization
GRANT Read, Write
ON resource udtf.jar
TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Exemple 5 : Accorder des autorisations sur une fonction
Accordez au rôle Worker les autorisations de lire et de mettre à jour la fonction udf_test.
USE test_project_a;
-- ACL authorization
GRANT Read, Write ON FUNCTION udf_test TO ROLE Worker;
-- Policy authorization
GRANT Read, Write
ON FUNCTION udf_test
TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Exemple 6 : Accorder des autorisations sur une instance
Accordez au rôle Worker toutes les autorisations sur l'instance 202112300224****.
USE test_project_a;
-- ACL authorization
GRANT All ON instance 202112300224**** TO ROLE Worker;
-- 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
Syntaxe
Révoquer les autorisations accordées via ACL :
REVOKE <permissions>
ON {project <project_name> | TABLE <table_name> [(<column_list>)] | MODEL <model_name> | resource <resource_name> | FUNCTION <function_name> | instance <instance_id>}
FROM ROLE <role_name>;
Révoquer les autorisations accordées via une politique :
REVOKE <permissions>
ON {project <project_name> | TABLE <table_name> [(<column_list>)] | MODEL <model_name> | resource <resource_name> | FUNCTION <function_name> | instance <instance_id>}
FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
Pour plus de détails sur les paramètres, consultez les rubriques Contrôle d'accès basé sur les ACL et Contrôle d'accès basé sur des politiques.
Exemples
Les exemples suivants révoquent des autorisations du rôle Worker dans test_project_a.
Exemple 1 : Révoquer des autorisations au niveau du projet
USE test_project_a;
-- Revoke ACL-granted permissions.
REVOKE CreateTable, CreateFunction, CreateInstance, List ON project test_project_a FROM ROLE Worker;
-- Revoke policy-granted permissions.
REVOKE CreateTable, CreateFunction, CreateInstance, List
ON project test_project_a
FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Exemple 2 : Révoquer des autorisations sur une table
USE test_project_a;
-- Revoke ACL-granted permissions.
REVOKE Describe, Select ON TABLE sale_detail FROM ROLE Worker;
-- Revoke policy-granted permissions.
REVOKE Describe, Select
ON TABLE sale_detail
FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Exemple 3 : Révoquer des autorisations sur un modèle
USE test_project_a;
-- Revoke ACL-granted permissions.
REVOKE All ON MODEL my_model FROM ROLE Worker;
-- Revoke policy-granted permissions.
REVOKE All
ON MODEL my_model
FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Exemple 4 : Révoquer des autorisations sur une ressource
USE test_project_a;
-- Revoke ACL-granted permissions.
REVOKE Read, Write ON resource udtf.jar FROM ROLE Worker;
-- Revoke policy-granted permissions.
REVOKE Read, Write
ON resource udtf.jar
FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Exemple 5 : Révoquer des autorisations sur une fonction
USE test_project_a;
-- Revoke ACL-granted permissions.
REVOKE Read, Write ON FUNCTION udf_test FROM ROLE Worker;
-- Revoke policy-granted permissions.
REVOKE Read, Write
ON FUNCTION udf_test
FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Exemple 6 : Révoquer des autorisations sur une instance
USE test_project_a;
-- Revoke ACL-granted permissions.
REVOKE All ON instance 202112300224**** FROM ROLE Worker;
-- Revoke policy-granted permissions.
REVOKE All
ON instance 202112300224****
FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Accorder l'autorisation de téléchargement à un rôle
Accordez à un rôle l'autorisation de télécharger des données depuis des tables, des ressources, des fonctions ou des instances. Le contrôle des autorisations de téléchargement doit être activé pour le projet avant d'exécuter cette commande.
Syntaxe
GRANT Download ON {Table|Resource|Function|Instance} <object_name> TO ROLE <role_name>;
Pour plus de détails sur les paramètres, consultez la rubrique Contrôle des autorisations de téléchargement.
Exemple
Accordez au rôle Worker l'autorisation de télécharger des données depuis la table sale_detail.
-- Enter the project.
USE test_project_a;
-- Grant the Download permission to the role.
GRANT Download ON TABLE sale_detail TO ROLE Worker;
Révoquer l'autorisation de téléchargement d'un rôle
Syntaxe
REVOKE Download ON {Table|Resource|Function|Instance} <object_name> FROM ROLE <role_name>;
Pour plus de détails sur les paramètres, consultez la rubrique Contrôle des autorisations de téléchargement.
Exemple
Révoquez l'autorisation de télécharger des données depuis la table sale_detail du rôle Worker.
USE test_project_a;
REVOKE Download ON TABLE sale_detail FROM ROLE Worker;
Accorder à un rôle des autorisations d'accès aux données hautement sensibles
Utilisez l'autorisation basée sur des libellés pour accorder à un rôle l'accès aux données dont le niveau de sensibilité est supérieur à son niveau actuel. Pour savoir comment définir un libellé de niveau d'autorisation pour 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>];
Pour plus de détails sur les paramètres, consultez la section Autorisation explicite basée sur des libellés.
Exemple
Le rôle Worker possède un libellé de niveau d'autorisation de 2. Accordez-lui l'accès aux données dont le niveau de sensibilité maximal est de 4 dans la table sale_detail.
USE test_project_a;
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
La révocation des autorisations basées sur des libellés n'affecte pas le libellé de niveau d'autorisation propre au rôle.
Syntaxe
REVOKE Label ON TABLE <table_name> [(<column_list>)] FROM ROLE <role_name>;
Pour plus de détails sur les paramètres, consultez la section Révoquer l'autorisation explicite basée sur des libellés.
Exemple
Révoquez l'autorisation d'accéder aux données dont le niveau de sensibilité va jusqu'à 4 dans la table sale_detail du rôle Worker.
USE test_project_a;
REVOKE Label ON TABLE sale_detail FROM ROLE Worker;
Associer un rôle à un utilisateur
Associez un rôle prédéfini ou personnalisé au niveau du projet à un utilisateur. L'utilisateur hérite de toutes les autorisations accordées à ce rôle. Plusieurs utilisateurs peuvent partager le même rôle et un utilisateur peut détenir plusieurs rôles.
Syntaxe
GRANT <role_name> TO <user_name>;
Paramètres
|
Paramètre |
Obligatoire |
Description |
|
|
Oui |
Nom du rôle à associer. Exécutez |
|
|
Oui |
Nom de l'utilisateur cible. Exécutez |
Exemple
Associez le rôle Worker au compte Alibaba Cloud Ka**@aliyun.com et à l'utilisateur RAM RAM$Bob@aliyun.com:Allen.
USE test_project_a;
GRANT Worker TO ALIYUN$Ka**@aliyun.com;
GRANT Worker TO RAM$Bob@aliyun.com:Allen;
Dissocier un rôle d'un utilisateur
Après la dissociation d'un rôle, l'utilisateur perd toutes les autorisations accordées par ce rôle.
Syntaxe
REVOKE <role_name> FROM <user_name>;
Paramètres
|
Paramètre |
Obligatoire |
Description |
|
|
Oui |
Nom du rôle à dissocier. Exécutez |
|
|
Oui |
Nom de l'utilisateur cible. Exécutez |
Exemple
Dissociez le rôle Worker de Kate@aliyun.com et de RAM$Bob@aliyun.com:Allen.
USE test_project_a;
REVOKE Worker FROM ALIYUN$Kate@aliyun.com;
REVOKE Worker FROM RAM$Bob@aliyun.com:Allen;