Les tables d'un projet externe appartiennent au compte Alibaba Cloud qui a créé le projet. Pour permettre à d'autres utilisateurs d'interroger ou de modifier ces tables, vous devez les ajouter au projet externe et leur accorder explicitement des autorisations.
Notes d'utilisation
Lorsque la solution data lakehouse est activée pour MaxCompute, ce dernier ne conserve pas les métadonnées dans la source de données. Les politiques sont gérées en fonction des noms des objets présents dans la source de données. Si le nom d'un objet change, ses autorisations deviennent invalides : exécutez Revoke ou supprimez la politique pour les retirer. Si vous ne nettoyez pas les anciennes autorisations avant la création d'un nouvel objet portant le même nom, ce dernier hérite de ces autorisations et peut recevoir un accès non souhaité.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un projet externe créé
Le nom du compte Alibaba Cloud de l'utilisateur cible (format :
ALIYUN$<account_name>)(Facultatif) Si vous accordez l'accès à un utilisateur RAM, la prise en charge de RAM doit être activée pour le projet externe
Pour rechercher les utilisateurs existants dans le projet, exécutez list users; dans le client MaxCompute (odpscmd).
Pour accorder l'accès à d'autres comptes Alibaba Cloud ou utilisateurs RAM, respectez les normes de sécurité de MaxCompute. Pour plus de détails, consultez Présentation des autorisations .
Accorder à un utilisateur l'accès à un projet externe
Le flux d'autorisation concerne deux projets : le projet externe (où vous ajoutez l'utilisateur et accordez les autorisations sur les tables) et le projet principal (où vous accordez les autorisations d'exécution des jobs). Le tableau ci-dessous résume toutes les étapes à suivre.
| Étape | Projet | Objectif | Commande SQL |
|---|---|---|---|
| 1 | Projet externe | Changer de contexte | use <external_project_name>; |
| 2 (Facultatif) | Projet externe | Activer la prise en charge des utilisateurs RAM | add accountprovider ram; |
| 3 (Facultatif) | Projet externe | Activer les types de données compatibles avec Hive | set odps.sql.hive.compatible=true; |
| 4 | Projet externe | Ajouter l'utilisateur au projet | add user <Alibaba Cloud account>; |
| 5 | Projet externe | Accorder l'autorisation de lister les tables | grant List on project external_project to USER <Alibaba Cloud account>; |
| 6 | Projet externe | Accorder des autorisations sur une table | grant All on table <table_name> to user <Alibaba Cloud account>; |
| 7 | Projet principal | Changer de contexte | use <main_project_name>; |
| 8 | Projet principal | Accorder l'autorisation d'exécuter des jobs | grant CreateInstance on project <main_project_name> to user <Alibaba Cloud account>; |
Étape 1 : Basculer vers le projet externe
use <external_project_name>;
Étape 2 : (Facultatif) Activer la prise en charge de RAM
Exécutez cette étape uniquement si l'utilisateur que vous ajoutez est un utilisateur RAM.
add accountprovider ram;
Étape 3 : (Facultatif) Activer les types de données compatibles avec Hive
Exécutez cette étape uniquement si le projet externe est basé sur une source de données externe Hadoop.
set odps.sql.hive.compatible=true;
Étape 4 : Ajouter l'utilisateur au projet
add user <Alibaba Cloud account>;
Remplacez <Alibaba Cloud account> par le nom du compte au format ALIYUN$<account_name>.
Étape 5 : Accorder l'autorisation de lister les tables
grant List on project external_project to USER <Alibaba Cloud account>;
Cela permet à l'utilisateur de voir quelles tables existent dans le projet externe.
Étape 6 : Accorder des autorisations sur une table
grant All on table <table_name> to user <Alibaba Cloud account>;
Remplacez <table_name> par le nom de la table à partager.
Étape 7 : Basculer vers le projet principal
use <main_project_name>;
Étape 8 : Accorder l'autorisation d'exécuter des jobs
grant CreateInstance on project <main_project_name> to user <Alibaba Cloud account>;
Étapes suivantes
Une fois l'accès accordé, l'utilisateur peut interroger et mettre à jour les données des tables dans le projet externe à l'aide de SQL. Pour obtenir la liste complète des opérations prises en charge, consultez Utiliser des instructions SQL pour gérer un projet externe.