Lorsque vous utilisez Hologres pour accélérer les requêtes sur les données MaxCompute via des tables externes, des autorisations insuffisantes peuvent provoquer des erreurs. Les sections suivantes décrivent les erreurs d'autorisation MaxCompute courantes, leurs causes et les solutions associées.
Hologres accède aux données MaxCompute par le biais de tables externes. L'administrateur MaxCompute gère les autorisations relatives aux tables MaxCompute côté MaxCompute. En cas d'erreur d'autorisation, vous devez généralement accorder ou modifier les autorisations dans MaxCompute.
Résumé des problèmes
La liste suivante récapitule les erreurs d'autorisation MaxCompute fréquentes dans Hologres et fournit des liens vers les solutions correspondantes.
You have NO privilege 'odps:Select' on xxx when querying a foreign table
The sensitive label of column 'xxx' is 2, but your effective label is 0
You have NO privilege 'odps:Select' on xxx when accessing a table across projects
You have NO privilege 'odps:List' on xxx when creating a foreign table
Access denied by project ip white list when creating a foreign table
You don't exist in project xxx when creating a foreign table
Échec de la requête sur une table externe : You have NO privilege 'odps:Select' on xxx
Problème
Après avoir créé une table externe dans la console Hologres, vous interrogez cette table et l'erreur suivante s'affiche : You have NO privilege 'odps:Select' on xxx.
Cause
Le compte actuel ne dispose pas de l'autorisation SELECT sur la table MaxCompute.
Solution
Demandez à l'administrateur MaxCompute d'accorder l'autorisation SELECT sur la table au compte actuel dans MaxCompute. Pour plus d'informations, consultez la rubrique Accorder des autorisations dans MaxCompute.
Une fois l'autorisation accordée, interrogez à nouveau la table externe pour vérifier que l'erreur ne se produit plus.
Échec de la requête sur une table externe : The sensitive label of column 'xxx' is 2, but your effective label is 0
Problème
Après avoir créé une table externe dans la console Hologres, vous interrogez cette table et l'erreur suivante s'affiche : The sensitive label of column 'xxx' is 2, but your effective label is 0.
Cause
Le compte actuel ne dispose d'autorisations que sur certaines colonnes de la table MaxCompute.
Solution
Utilisez l'une des méthodes suivantes pour résoudre ce problème :
(Recommandé) Mettez à niveau votre instance Hologres vers la version V0.8 ou ultérieure. Il s'agit de la solution privilégiée si votre instance prend en charge la mise à niveau. Recherchez et rejoignez le groupe d'utilisateurs Hologres pour demander une mise à niveau. Pour plus d'informations, consultez la rubrique Rejoindre le groupe d'utilisateurs Hologres.
Si vous ne pouvez pas mettre à niveau votre instance, ajoutez les paramètres suivants avant la requête à exécuter.
set hg_experimental_enable_odps_executor=on;
set hg_experimental_enable_query_master=on;
Si vous pouvez obtenir des autorisations sur toutes les colonnes, demandez à l'administrateur MaxCompute d'accorder un accès complet aux colonnes au compte actuel. Pour plus d'informations, consultez la rubrique Accorder des autorisations dans MaxCompute. Après avoir appliqué la méthode sélectionnée, interrogez à nouveau la table externe pour confirmer que la requête aboutit.
Échec de l'accès interprojets : You have NO privilege 'odps:Select' on xxx
Problème
Le compte actuel dispose déjà de l'autorisation SELECT sur la table MaxCompute, mais l'erreur suivante s'affiche lorsque le compte accède à la table MaxCompute entre différents projets : You have NO privilege 'odps:Select' on xxx.
Cause
Le compte actuel possède l'autorisation SELECT sur la table MaxCompute, mais l'accès interprojets échoue toujours. Cela se produit lorsque MaxCompute utilise une autorisation basée sur le projet pour l'accès interprojets.
Solution
Si MaxCompute utilise une autorisation basée sur le projet, ajoutez les instructions SET suivantes avant votre instruction SQL dans Hologres. Remplacez <holoprojectname> par le nom de votre projet Hologres.
-- For a V0.7 instance, run the following statement to grant permissions
set seahawks.seahawks_internal_current_odps_project='<holoprojectname>';
-- For a V0.8 instance, run the following statement to grant permissions
set hg_experimental_odps_current_project_name = '<holoprojectname>';
Après avoir ajouté l'instruction SET, exécutez à nouveau la requête interprojets pour vérifier que l'erreur ne se produit plus.
Échec de la création d'une table externe : You have NO privilege 'odps:List' on xxx
Problème
Lorsque vous utilisez HoloWeb ou DataStudio dans la console Hologres pour créer une table externe via l'interface visuelle, l'erreur suivante s'affiche : You have NO privilege 'odps:List' on xxx.
Cause
Le compte actuel ne dispose pas de l'autorisation LIST permettant d'afficher toutes les tables dans MaxCompute.
Solution
Demandez à l'administrateur MaxCompute d'accorder au compte actuel l'autorisation LIST pour afficher toutes les tables dans MaxCompute. Pour plus d'informations, consultez la rubrique Accorder des autorisations dans MaxCompute.
Utilisez des instructions SQL pour créer une table externe et interroger les données au lieu de l'interface visuelle. Pour plus d'informations, consultez la rubrique Créer une table externe à l'aide de SQL. Après avoir appliqué la méthode sélectionnée, réessayez de créer la table externe pour vérifier que l'erreur ne se produit plus.
Échec de la création d'une table externe : Access denied by project ip white list
Problème
Lorsque vous utilisez HoloWeb dans la console Hologres pour créer une table externe, l'erreur suivante s'affiche : Access denied by project ip white list: sourceIP:'xxxx' is not in white list. project: xxxx.
Cause
Le projet MaxCompute actuel est configuré pour un accès basé sur une liste d'autorisation, et HoloWeb ne figure pas dans cette liste.
Solution
Lorsque la fonctionnalité de liste d'autorisation IP est activée pour un projet MaxCompute, seules les adresses IP figurant dans la liste peuvent accéder au projet. Même avec un AccessKey ID et un AccessKey secret valides, les requêtes provenant d'adresses IP absentes de la liste sont rejetées. Ajoutez l'adresse IP indiquée dans le message d'erreur à la liste d'autorisation du projet MaxCompute. Pour plus d'informations, consultez la rubrique Définir des listes d'autorisation d'adresses IP.
Une fois l'adresse IP ajoutée à la liste d'autorisation, réessayez de créer la table externe pour vérifier que l'erreur ne se produit plus.
Échec de la création d'une table externe : You don't exist in project xxx
Problème
Lorsque vous créez une table externe, l'erreur suivante s'affiche : You don't exist in project xxx.
Cause
Le compte qui crée la table externe ne dispose pas de l'autorisation d'accès au projet MaxCompute spécifié.
Solution
Vérifiez le nom du projet MaxCompute auquel vous souhaitez accéder. Si le nom du projet est incorrect, utilisez le nom correct. Si le nom du projet est correct mais que l'erreur persiste, accordez au compte indiqué dans le message d'erreur l'autorisation d'accéder au projet MaxCompute. Pour plus d'informations, consultez la rubrique Ajouter un utilisateur à un projet MaxCompute.
Une fois l'autorisation accordée, réessayez de créer la table externe pour vérifier que l'erreur est résolue.