Tous les produits
Search
Centre de documentation

MaxCompute:Protection des données de projet

Dernière mise à jour :Sep 16, 2026

Les utilisateurs disposant d'un accès à plusieurs projets peuvent créer des risques de sécurité en déplaçant des données entre eux. MaxCompute propose une fonctionnalité de protection des données de projet pour contrôler les flux sortants et sécuriser vos données. Cette rubrique décrit la fonctionnalité de protection des données de projet ainsi que les politiques permettant de gérer les flux sortants.

Contexte

Certaines entreprises ont des exigences élevées en matière de sécurité des données. Elles prennent diverses mesures pour prévenir les fuites de données sensibles. Par exemple, les employés ne peuvent exercer leurs fonctions que sur leur lieu de travail et il leur est interdit de sortir du matériel professionnel du bureau. Tous les ports USB des ordinateurs professionnels sont désactivés. Le problème de sécurité lié au transfert de données d'un projet vers un autre peut toutefois se poser.

Prenons l'exemple de l'utilisatrice Alice, qui dispose des autorisations d'accès aux projets Project1 et Project2. Elle possède l'autorisation Select sur la table table1 dans Project1 et l'autorisation CreateTable sur Project2. Dans ce cas, si la fonctionnalité de protection des données de projet est désactivée, Alice peut exécuter l'instruction suivante pour transférer les données de la table table1 depuis Project1 vers Project2. Cette opération entraîne des risques de fuite de données sensibles.

CREATE TABLE project2.table2 AS SELECT * FROM project1.table1;

L'exemple ci-dessus montre qu'un utilisateur disposant simultanément des autorisations d'accès à plusieurs projets MaxCompute peut transférer des données entre ces projets. MaxCompute fournit la fonctionnalité de protection des données de projet. Si un projet contient des données hautement sensibles, son propriétaire doit activer cette fonctionnalité.

Par défaut, la protection des données de projet est désactivée. Un propriétaire de projet peut l'activer en exécutant la commande set projectProtection=true;. Une fois activée, les flux de données sont restreints : les données ne peuvent entrer dans le projet, mais pas en sortir.

Précautions

Après avoir activé la protection des données de projet, tenez compte des points suivants :

  • Les opérations d'accès aux données interprojets sont bloquées car elles violent les règles de protection des données. Pour créer des exceptions, par exemple pour autoriser le flux sortant de certaines données vers d'autres projets, MaxCompute propose deux stratégies : Politique de flux sortant 1 : Configurer une politique d'exception et Politique de flux sortant 2 : Configurer un projet de confiance.

  • La fonctionnalité de protection des données de projet contrôle les flux de données, mais pas les autorisations d'accès aux données. Le contrôle des flux de données n'est pertinent que si les utilisateurs disposent des autorisations d'accès aux données.

  • Dans MaxCompute, la fonctionnalité de partage de ressources basé sur des packages entre projets est indépendante de la fonctionnalité de protection des données de projet. L'effet de ces fonctionnalités s'exclut mutuellement. Le partage de ressources basé sur des packages est prioritaire sur la protection des données de projet. Par exemple, si un utilisateur du projet B reçoit des autorisations d'accès à un objet du projet A via le partage de ressources basé sur des packages, la fonctionnalité de protection des données de projet ne s'applique pas à cet objet.

Politique de flux sortant 1 : Configurer une politique d'exception

Si des opérations d'accès aux données interprojets sont nécessaires, le propriétaire du projet doit configurer à l'avance une politique d'exception pour permettre à un utilisateur spécifié de transférer les données d'un objet spécifié depuis le projet actuel vers un projet cible. Une fois la politique d'exception configurée, les données de l'objet peuvent être transférées vers le projet spécifié, même si la fonctionnalité de protection des données de projet est activée.

Configuration

Client MaxCompute

Configurez la politique d'exception en même temps que vous activez la protection des données de projet. Après la configuration, exécutez la commande SHOW SecurityConfiguration; pour afficher les détails de la politique. Utilisez la commande suivante pour définir une politique d'exception :

SET ProjectProtection=true with exception <policyfile>;

policyfile correspond au fichier de politique d'exception, qui doit être enregistré au format TXT dans le répertoire bin du chemin d'installation du client MaxCompute. Le format du contenu est le suivant.

 {
 "Version": "1",
 "Statement":
 [{
 "Effect":"Allow",
 "Principal":"<Principal>",
 "Action":["odps:<Action1>[, <Action2>, ...]"],
 "Resource":"acs:odps:*:<Resource>",
 "Condition":{
 "StringEquals": {
 "odps:TaskType":["<Tasktype>"]
 }
 }
 }]
 }

Paramètre

Description

Effect

Indique si le flux sortant des données est autorisé. Définissez la valeur sur Allow. Cette valeur signifie que le flux sortant des données est autorisé.

Principal

Le compte Alibaba Cloud ou l'utilisateur RAM autorisé à transférer des données hors du projet.

Action

L'opération de flux sortant autorisée. Pour plus d'informations sur les actions pour différents types d'objets, consultez la section Autorisations MaxCompute.

Resource

Le projet et l'objet à partir desquels le flux sortant des données est autorisé. Format : `projects//{tables

resources

functions

instances}/`. Pour plus d'informations sur les valeurs des objets, consultez la section Autorisations MaxCompute.

Tasktype

Le type de tâche pour lequel le flux sortant des données est autorisé. Valeurs valides : DT, SQL et MapReduce. DT indique Tunnel.

Console MaxCompute

  1. Connectez-vous à la console MaxCompute et sélectionnez une région dans le coin supérieur gauche.

  2. Dans le volet de navigation de gauche, choisissez Manage Configurations > Projects.

  3. Sur la page Projects, cliquez sur Manage dans la colonne Actions pour le projet cible.

  4. Sur la page Project Settings, cliquez sur l'onglet Parameter Configuration.

  5. Dans la section Permission Properties, cliquez sur Edit.

  6. Activez l'option Project Data Protection, cliquez sur Exception à droite, puis saisissez la politique d'exception dans la boîte de dialogue Set Exception.

     {
     "Version": "1",
     "Statement":
     [{
     "Effect":"Allow",
     "Principal":"<Principal>",
     "Action":["odps:<Action1>[, <Action2>, ...]"],
     "Resource":"acs:odps:*:<Resource>",
     "Condition":{
     "StringEquals": {
     "odps:TaskType":["<Tasktype>"]
     }
     }
     }]
     }

    Paramètre

    Description

    Effect

    Indique si le flux sortant des données est autorisé. Définissez la valeur sur Allow. Cette valeur signifie que le flux sortant des données est autorisé.

    Principal

    Le compte Alibaba Cloud ou l'utilisateur RAM autorisé à transférer des données hors du projet.

    Action

    L'opération de flux sortant autorisée. Pour plus d'informations sur les actions pour différents types d'objets, consultez la section Autorisations MaxCompute.

    Resource

    Le projet et l'objet à partir desquels le flux sortant des données est autorisé. Format : `projects//{tables

    resources

    functions

    instances}/`. Pour plus d'informations sur les valeurs des objets, consultez la section Autorisations MaxCompute.

    Tasktype

    Le type de tâche pour lequel le flux sortant des données est autorisé. Valeurs valides : DT, SQL et MapReduce. DT indique Tunnel.

Exemple

-- Enable project data protection and set an exception policy. 
-- The policy_file is stored in the bin directory of the MaxCompute client installation path.
set ProjectProtection=true with exception policy_file; 

-- The following code shows the content of the policy_file.
{
 "Version": "1",
 "Statement":
 [{
 "Effect":"Allow",
 "Principal":"ALIYUN$Alice@aliyun.com",
 "Action":["odps:Select"],
 "Resource":"acs:odps:*:projects/project_test/tables/table_test",
 "Condition":{
 "StringEquals": {
 "odps:TaskType":["DT", "SQL"]
 }
 }
 }]
 }

L'exemple ci-dessus montre qu'Alice est autorisée à effectuer l'opération Select sur la table project_test.table_test dans une tâche SQL afin de transférer des données du projet project_test vers d'autres projets.

Remarque

Si Alice ne dispose pas de l'autorisation Select sur la table project_test.table_test, elle ne pourra pas transférer de données hors du projet, même si la politique d'exception est configurée.

Considérations

Cette méthode peut entraîner des fuites de données en raison d'une erreur de type « time-of-check to time-of-use » (TOCTOU), également appelée condition de concurrence :

  • Description du problème

    L'exemple suivant décrit comment un utilisateur transfère des données hors d'un projet.

    1. Étape TOC : l'utilisateur A soumet une demande au propriétaire du projet pour exporter les données de la table t1. Après avoir vérifié que la table t1 ne contient pas de données sensibles, le propriétaire du projet configure une politique d'exception pour autoriser l'utilisateur A à exporter les données de la table t1.

    2. Avant le début de l'étape TOU, d'autres utilisateurs écrivent des données sensibles dans la table t1.

    3. Étape TOU : l'utilisateur A exporte les données de la table t1. Toutefois, les données exportées de la table t1 contiennent les données sensibles écrites par d'autres utilisateurs.

  • Solution

    Pour éviter ce problème, nous recommandons au propriétaire du projet de s'assurer qu'aucun autre utilisateur ne peut effectuer l'action Update pour mettre à jour la table, ni les actions Drop et CreateTable pour supprimer la table et en créer une nouvelle portant le même nom. Dans l'exemple précédent, nous recommandons au propriétaire du projet de créer un snapshot de la table t1 lors de l'étape TOC, puis d'utiliser ce snapshot pour configurer la politique d'exception. Assurez-vous également qu'aucun autre utilisateur ne se voit attribuer le rôle Admin.

Politique de flux sortant 2 : Configurer un projet de confiance

Si la fonctionnalité de protection des données de projet est activée pour le projet actuel mais qu'un flux sortant est nécessaire, le propriétaire du projet peut configurer le projet de destination comme un projet de confiance du projet actuel. Ainsi, les données du projet peuvent être transférées vers le projet de confiance. Si plusieurs projets sont spécifiés comme projets de confiance les uns pour les autres, ces projets forment un groupe de projets de confiance. Les données de ces projets ne peuvent être transférées qu'au sein du groupe.

Gestion

Le propriétaire du projet peut exécuter les commandes suivantes pour gérer les projets de confiance :

  • Pour ajouter un projet de confiance au projet actuel, exécutez la commande suivante :

     add trustedproject <project_name>; 
  • Pour supprimer un projet de confiance du projet actuel, exécutez la commande suivante :

     remove trustedproject <project_name>; 
  • Pour interroger tous les projets de confiance du projet actuel, exécutez la commande suivante :

     list trustedprojects; 

Bonnes pratiques

Pour empêcher strictement le flux sortant des données d'un projet, après avoir activé la protection en exécutant set projectProtection=true;, vous devez également vérifier les configurations suivantes :

  • Exécutez la commande list trustedprojects; pour vous assurer qu'aucun projet de confiance n'a été ajouté. Si des projets de confiance existent, évaluez les risques potentiels et exécutez la commande remove trustedproject <project_name>; pour supprimer ceux qui sont inutiles.

  • Exécutez la commande show packages; pour vous assurer qu'aucun package n'est utilisé pour partager des données. Si des packages existent, assurez-vous qu'ils ne contiennent pas de données sensibles, ou exécutez la commande delete package <package_name>; pour supprimer ceux qui sont inutiles.

  • Vous pouvez activer la fonctionnalité de protection des données de projet pour un projet afin d'empêcher l'exportation des données hors de celui-ci. L'utilisation de la fonctionnalité de protection des données de projet est similaire à celle de la fonctionnalité utilisée pour migrer des données entre projets. Les scénarios suivants sont pris en charge :

    • create table <table_in_another_project> as select * from <table_in_a_protected_project>

    • insert overwrite table <table_in_another_project> select * from <table_in_a_protected_project>

    • Écriture des données de table dans des tables d'un autre projet en exécutant des tâches Spark, MapReduce, Graph, Proxima CE et Machine Learning Platform for AI (PAI).

    • Exécution de la commande Tunnel download pour télécharger les données de table MaxCompute sur votre machine locale. Vous pouvez appeler SDK Tunnel ou utiliser Tunnel via un pilote JDBC (Java Database Connectivity).

    • Utilisation de la commande clone table pour copier les données de table vers une table d'un autre projet.

    • Appel d'une fonction définie par l'utilisateur (UDF) pour écrire les données de table dans des tables d'autres projets.

    • Appel d'une UDF pour écrire les données de table dans des tables externes MaxCompute.

  • La fonctionnalité de protection des données de projet et le contrôle d'accès Download peuvent être utilisés conjointement pour un projet afin de télécharger des données. Si vous souhaitez télécharger des données depuis un projet, vous devez vérifier si vous disposez des autorisations associées sur ce projet.

    • Si vous activez la fonctionnalité de protection des données de projet et le contrôle d'accès Download pour un projet, vous pouvez télécharger des données depuis ce projet lorsque vous disposez des autorisations Download et Describe. Une authentification Describe est déclenchée avant que vous puissiez exécuter la commande Tunnel download.

    • Si vous activez la fonctionnalité de protection des données de projet et désactivez le contrôle d'accès Download pour un projet, vous pouvez télécharger des données depuis ce projet lorsque vous disposez de l'autorisation Select sur le projet et que vous configurez la politique d'exception pour le comportement de téléchargement.

    • Si vous désactivez la fonctionnalité de protection des données de projet et activez le contrôle d'accès Download pour un projet, vous pouvez télécharger des données depuis ce projet lorsque vous disposez des autorisations Download et Describe.

    • Si vous désactivez la fonctionnalité de protection des données de projet et le contrôle d'accès Download pour un projet, vous pouvez télécharger des données depuis ce projet lorsque vous disposez de l'autorisation Select sur le projet.