Le contrôle des téléchargements vous permet de gérer les utilisateurs autorisés à exporter des données depuis votre projet MaxCompute via les commandes Tunnel. Sans cette fonctionnalité, tous les utilisateurs et rôles d'un projet peuvent télécharger librement n'importe quelle table ou instance, ce qui expose vos données à un risque d'exfiltration. Une fois la fonctionnalité activée, seuls les utilisateurs ou rôles disposant d'autorisations de téléchargement explicites peuvent exporter des données.
Fonctionnement
Par défaut, le contrôle des téléchargements est désactivé pour les nouveaux projets. Une fois activé au niveau du projet, toutes les opérations de téléchargement basées sur Tunnel nécessitent des autorisations explicites.
Le tableau suivant indique quels objets prennent en charge les autorisations de téléchargement et comment les attribuer :
| Type d'objet | Valeurs valides | Prise en charge des caractères génériques |
|---|---|---|
Table |
Nom de la table ou de la vue | Uniquement basé sur les rôles (*) |
Instance |
Nom de l'instance (identique à l'ID de l'instance) | Non pris en charge |
Deux modèles d'autorisation sont disponibles :
| Modèle | Fonctionnement | Cas d'utilisation idéal |
|---|---|---|
| Autorisation par utilisateur unique | Accordez directement des autorisations de téléchargement à un utilisateur spécifique sur des tables ou instances précises | Accès ciblé pour des utilisateurs individuels |
| Autorisation basée sur les rôles | Accordez des autorisations de téléchargement à un rôle, puis attribuez ce rôle à plusieurs utilisateurs | Gestion de l'accès pour des groupes ; prend en charge les caractères génériques (*) dans les noms d'objets |
Limites et remarques d'utilisation
Limites :
L'autorisation s'applique uniquement aux sujets (utilisateurs ou rôles) et aux objets existants. Vous ne pouvez pas pré-autoriser des sujets ou des objets futurs.
Lorsque vous accordez des autorisations directement à un utilisateur, les caractères génériques (
*) ne sont pas pris en charge dans les noms d'objets. Cette restriction vise à éviter l'octroi involontaire d'un accès trop large. Utilisez l'autorisation basée sur les rôles si vous avez besoin de modèles avec caractères génériques.
Remarques d'utilisation :
Lorsqu'un objet est supprimé, MaxCompute révoque automatiquement toutes les autorisations de téléchargement associées à cet objet.
Lorsqu'un utilisateur est retiré d'un projet, ses autorisations sont conservées. Si l'utilisateur est rajouté, ces autorisations redeviennent actives. Pour supprimer les autorisations résiduelles, consultez la rubrique Supprimer complètement les informations d'autorisation résiduelles d'un utilisateur supprimé.
Activer le contrôle des téléchargements
Autorisations requises : Propriétaire du projet ou rôle Super_Administrator.
Exécutez la commande suivante au niveau du projet :
setproject odps.security.enabledownloadprivilege=true;
Pour désactiver le contrôle des téléchargements :
setproject odps.security.enabledownloadprivilege=false;
Accorder et révoquer des autorisations de téléchargement
Autorisations requises : Pour accorder ou révoquer des autorisations sur un objet, reportez-vous à la colonne Authorized by de la rubrique Autorisations.
Exécutez toutes les commandes sur le client MaxCompute, MaxCompute Studio ou la console DataWorks.
Workflow
Pour l'autorisation par utilisateur unique comme pour celle basée sur les rôles, suivez cette séquence :
Vérifiez que l'utilisateur ou le rôle est membre du projet. Exécutez
list users;oulist roles;sur le client MaxCompute pour rechercher les noms. Pour ajouter des utilisateurs ou des rôles, consultez les rubriques Planification et gestion des utilisateurs ou Planification des rôles.Confirmez les noms des tables ou instances à contrôler. Exécutez
show tables;oushow instances;pour lister les objets disponibles.Exécutez la commande
grantourevoke.Vérifiez le résultat avec
show grantsoudescribe role.
Syntaxe
Accorder des autorisations de téléchargement :
grant Download on <object_type> <object_name> to <subject_type> <subject_name>;
Révoquer des autorisations de téléchargement :
revoke Download on <object_type> <object_name> from <subject_type> <subject_name>;
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
object_type |
Oui | Type de l'objet. Valeurs valides : Table, Instance. Un seul type d'objet par commande. |
object_name |
Oui | Nom de la table, de la vue ou de l'instance. Pour l'autorisation basée sur les rôles, les caractères génériques sont pris en charge. Par exemple, table taobao* correspond à toutes les tables dont le nom commence par taobao. Exécutez show tables; ou show instances; pour obtenir les noms. |
subject_type |
Oui | Type du sujet. Valeurs valides : USER (un compte Alibaba Cloud ou un utilisateur RAM), ROLE (un rôle). |
subject_name |
Oui | Nom de l'utilisateur ou du rôle. Un seul sujet par commande. Utilisez ALIYUN$<account> pour les comptes Alibaba Cloud et RAM$<account>:<username> pour les utilisateurs RAM. Exécutez list users; ou list roles; pour obtenir les noms. |
Exemples
Les exemples suivants utilisent la configuration suivante : username@example.com possède test_project_a. Allen, Tom et Alice sont des utilisateurs RAM sous ce compte. Le contrôle des téléchargements est activé pour le projet.
Exemple 1 : Accorder des autorisations de téléchargement à un utilisateur RAM
Ajoutez Allen au projet et accordez-lui des autorisations de téléchargement sur la table sale_detail :
-- Switch to the project.
use test_project_a;
-- Add Allen as a project member.
add user RAM$username@example.com:Allen;
-- Grant Allen download permissions on sale_detail.
grant Download on table sale_detail to USER RAM$username@example.com:Allen;
-- Verify Allen's permissions.
show grants for RAM$username@example.com:Allen;
Sortie attendue :
Authorization Type: ACL
[user/RAM$username@example.com:Allen]
A projects/test_project_a/tables/sale_detail: Download
Exemple 2 : Révoquer les autorisations de téléchargement d'un utilisateur RAM
Révoquez les autorisations accordées dans l'exemple 1 :
-- Switch to the project.
use test_project_a;
-- Revoke Allen's download permissions.
revoke Download on table sale_detail from USER RAM$username@example.com:Allen;
-- Verify that permissions are removed.
show grants for RAM$username@example.com:Allen;
Exemple 3 : Accorder des autorisations de téléchargement à plusieurs utilisateurs via un rôle
Accordez à Alice et Tom des autorisations de téléchargement sur toutes les tables dont le nom commence par tb_ :
-- Switch to the project.
use test_project_a;
-- Add Alice and Tom as project members.
add user RAM$username@example.com:Alice;
add user RAM$username@example.com:Tom;
-- Create a role.
create role Worker;
-- Assign the role to Alice and Tom.
grant Worker TO RAM$username@example.com:Alice;
grant Worker TO RAM$username@example.com:Tom;
-- Grant the Worker role download permissions on all tb_* tables.
grant Download on table tb_* to ROLE Worker;
-- Verify the role's permissions.
describe role Worker;
Sortie attendue :
Authorization Type: Policy
[role/worker]
A projects/test_project_a/tables/tb_*: Download
Exemple 4 : Révoquer des autorisations de téléchargement basées sur un rôle
Révoquez les autorisations accordées dans l'exemple 3 à Alice et Tom :
-- Switch to the project.
use test_project_a;
-- Remove the Worker role from Alice and Tom.
revoke Worker from RAM$username@example.com:Alice;
revoke Worker from RAM$username@example.com:Tom;
-- Verify that Alice's permissions no longer include download access.
show grants for RAM$username@example.com:Alice;