Ao usar o Hologres para acelerar consultas a dados do MaxCompute por meio de tabelas externas, a falta de permissões adequadas pode gerar erros. As seções a seguir descrevem os erros de permissão mais comuns do MaxCompute, suas causas e soluções.
O Hologres acessa dados do MaxCompute por meio de tabelas externas. O administrador do MaxCompute gerencia as permissões das tabelas diretamente no MaxCompute. Quando ocorre um erro de permissão, geralmente é necessário conceder ou modifique permissões no MaxCompute.
Resumo dos problemas
A lista a seguir resume os erros comuns de permissão do MaxCompute no Hologres e fornece links para as respectivas soluções.
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
Falha na consulta à tabela externa: You have NO privilege 'odps:Select' on xxx
Problema
Após crie uma tabela externa no console do Hologres, a consulta à tabela externa retorna o seguinte erro: You have NO privilege 'odps:Select' on xxx.
Causa
A conta atual não tem a permissão SELECT na tabela do MaxCompute.
Solução
Solicite ao administrador do MaxCompute que conceda a permissão SELECT na tabela para a conta atual no MaxCompute. Para obter mais informações, consulte Grant permissions in MaxCompute.
Depois que a permissão for concedida, consulte a tabela externa novamente para verifique se o erro foi resolvido.
Falha na consulta à tabela externa: The sensitive label of column 'xxx' is 2, but your effective label is 0
Problema
Após crie uma tabela externa no console do Hologres, a consulta à tabela externa retorna o seguinte erro: The sensitive label of column 'xxx' is 2, but your effective label is 0.
Causa
A conta atual tem permissões apenas em algumas colunas da tabela do MaxCompute.
Solução
Use um dos métodos a seguir para resolver esse problema:
(Recomendado) Atualize sua instância do Hologres para a versão V0.8 ou posterior. Esta é a solução preferencial caso sua instância suporte a atualização. Pesquise e participe do grupo de usuários do Hologres para solicitar a atualização. Para obter mais informações, consulte Join the Hologres user group.
Caso não seja possível atualizar a instância, adicione os parâmetros a seguir antes da consulta execute.
set hg_experimental_enable_odps_executor=on;
set hg_experimental_enable_query_master=on;
Se for possível obter permissões em todas as colunas, solicite ao administrador do MaxCompute que conceda acesso total às colunas para a conta atual. Para obter mais informações, consulte Grant permissions in MaxCompute. Após aplicar o método escolhido, consulte a tabela externa novamente para confirme que a consulta foi bem-sucedida.
Falha no acesso entre projetos: You have NO privilege 'odps:Select' on xxx
Problema
A conta atual já tem a permissão SELECT na tabela do MaxCompute, mas o acesso à tabela do MaxCompute entre projetos retorna o seguinte erro: You have NO privilege 'odps:Select' on xxx.
Causa
Embora a conta atual tenha a permissão SELECT na tabela do MaxCompute, o acesso entre projetos ainda falha. Isso ocorre quando o MaxCompute usa autorização baseada em projeto para acessos entre projetos.
Solução
Se o MaxCompute usar autorização baseada em projeto, adicione as instruções SET a seguir antes da instrução SQL no Hologres. Substitua <holoprojectname> pelo nome do seu projeto no 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>';
Após adicionar a instrução SET, execute a consulta entre projetos novamente para verifique se o erro foi resolvido.
Falha na criação da tabela externa: You have NO privilege 'odps:List' on xxx
Problema
Ao usar o HoloWeb ou o DataStudio no console do Hologres para crie uma tabela externa pela interface visual, o sistema retorna o seguinte erro: You have NO privilege 'odps:List' on xxx.
Causa
A conta atual não tem a permissão LIST para visualize todas as tabelas no MaxCompute.
Solução
Solicite ao administrador do MaxCompute que conceda à conta atual a permissão LIST para visualize todas as tabelas no MaxCompute. Para obter mais informações, consulte Grant permissions in MaxCompute.
Use instruções SQL para crie a tabela externa e consultar dados em vez de usar a interface visual. Para obter mais informações, consulte Create a foreign table by using SQL. Após aplicar o método escolhido, tente crie a tabela externa novamente para verifique se o erro foi resolvido.
Falha na criação da tabela externa: Access denied by project ip white list
Problema
Ao usar o HoloWeb no console do Hologres para crie uma tabela externa, o sistema retorna o seguinte erro: Access denied by project ip white list: sourceIP:'xxxx' is not in white list. project: xxxx.
Causa
O projeto atual do MaxCompute está configurado para acesso baseado em lista de permissões, e o HoloWeb não está incluído nessa lista.
Solução
Quando o recurso de lista de permissões de IP está ativado para um projeto do MaxCompute, apenas endereços IP presentes na lista podem acessar o projeto. Mesmo com um AccessKey ID e um AccessKey secret válidos, solicitações originadas de endereços IP fora da lista são rejeitadas. Adicione o endereço IP indicado na mensagem de erro à lista de permissões do projeto do MaxCompute. Para obter mais informações, consulte Set IP address whitelists.
Depois que o endereço IP for adicionado à lista de permissões, tente crie a tabela externa novamente para verifique se o erro foi resolvido.
Falha na criação da tabela externa: You don't exist in project xxx
Problema
Ao crie uma tabela externa, o sistema retorna o seguinte erro: You don't exist in project xxx.
Causa
A conta que cria a tabela externa não tem permissão para acessar o projeto especificado do MaxCompute.
Solução
Verifique o nome do projeto do MaxCompute que você deseja acessar. Se o nome estiver incorreto, use o nome correto. Caso o nome esteja correto, mas o erro persista, conceda à conta mencionada na mensagem de erro a permissão para acessar o projeto do MaxCompute. Para obter mais informações, consulte Add a user to a MaxCompute project.
Após a concessão da permissão, tente crie a tabela externa novamente para verifique se o erro foi resolvido.