Todos os produtos
Search
Central de documentação

MaxCompute:Autorização de funções no nível do projeto

Última atualização: Jun 26, 2026

As funções permitem conceder o mesmo conjunto de permissões a vários usuários simultaneamente. Crie uma função, conceda permissões a ela e associe-a aos usuários. Cada usuário herda automaticamente as permissões da função.

Este tópico aborda a sintaxe SQL para conceder e revogar permissões em funções no nível do projeto no MaxCompute. O conteúdo inclui permissões de operação em objetos, permissões de download, permissões baseadas em rótulos para dados de alta sensibilidade e como associar ou desassociar funções de usuários.

Cenários de autorização de funções

Cenário

Método de autorização

Plataforma de autorização

Conceder ou revogar permissões de operação em um objeto

Controle de acesso baseado em Access Control List (ACL) (lista de permissões) ou controle de acesso baseado em políticas (lista de permissões ou lista de bloqueios)

Cliente MaxCompute, Console MaxCompute (recomendado), MaxCompute Studio ou Console DataWorks

Conceder ou revogar a permissão Download

Controle de permissão de download

Mesmas plataformas acima

Conceder ou revogar permissões em dados de alta sensibilidade

Controle de acesso baseado em rótulos

Mesmas plataformas acima

Para consultar os autorizadores permitidos para cada ação, consulte Autorizadores suportados.

Após conceder permissões a uma função, associe a função aos usuários. Para remover o acesso, desassocie a função do usuário.

Conceder permissões de operação em um objeto a uma função

Conceda permissões a uma função para projetos, tabelas, modelos, recursos, funções ou instâncias. As permissões suportadas variam conforme o tipo de objeto:

Tipo de objeto

Permissões suportadas

Projeto

Read, Write, List, CreateTable, CreateInstance, CreateFunction, CreateResource, All

Tabela

Describe, Select, Alter, Update, Drop, ShowHistory, All

Modelo

Describe, Execute, Alter, Drop, All

Recurso

Read, Write, Delete, All

Função

Read, Write, Delete, Execute, All

Instância

Read, Write, All

Sintaxe

Autorização ACL:

GRANT <permissions>
      ON {project <project_name> | TABLE <table_name> [(<column_list>)] | MODEL <model_name> | resource <resource_name> | FUNCTION <function_name> | instance <instance_id>}
      TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];

Autorização por política (usando sintaxe ACL):

GRANT <permissions>
      ON {project <project_name> | TABLE <table_name> [(<column_list>)] | MODEL <model_name> | resource <resource_name> | FUNCTION <function_name> | instance <instance_id>}
      TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);

Para obter detalhes sobre os parâmetros, consulte Controle de acesso baseado em ACL e Controle de acesso baseado em políticas.

Exemplos

Os exemplos a seguir utilizam test_project_a como projeto, Worker como função e Bob@aliyun.com como proprietário do projeto. Cada exemplo apresenta tanto a sintaxe ACL quanto a de política.

Exemplo 1: Conceder permissões no nível do projeto

Conceda à função Worker as permissões para criar tabelas, funções e instâncias, além de listar todos os objetos em test_project_a.

-- Enter the project.
USE test_project_a;
-- ACL authorization
GRANT CreateTable, CreateFunction, CreateInstance, List ON project test_project_a TO ROLE Worker;
-- Policy authorization
GRANT CreateTable, CreateFunction, CreateInstance, List
      ON project test_project_a
      TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");

Exemplo 2: Conceder permissões de tabela

Conceda à função Worker as permissões para ler metadados e dados da tabela sale_detail.

USE test_project_a;
-- ACL authorization
GRANT Describe, Select ON TABLE sale_detail TO ROLE Worker;
-- Policy authorization
GRANT Describe, Select
      ON TABLE sale_detail
      TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");

Exemplo 3: Conceder permissões de modelo

Conceda à função Worker todas as permissões no modelo my_model.

USE test_project_a;
-- ACL authorization
GRANT All ON MODEL my_model TO ROLE Worker;
-- Policy authorization
GRANT All
      ON MODEL my_model
      TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");

Exemplo 4: Conceder permissões de recurso

Conceda à função Worker as permissões para ler e atualizar o recurso udtf.jar.

USE test_project_a;
-- ACL authorization
GRANT Read, Write ON resource udtf.jar TO ROLE Worker;
-- Policy authorization
GRANT Read, Write
      ON resource udtf.jar
      TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");

Exemplo 5: Conceder permissões de função

Conceda à função Worker as permissões para ler e atualizar a função udf_test.

USE test_project_a;
-- ACL authorization
GRANT Read, Write ON FUNCTION udf_test TO ROLE Worker;
-- Policy authorization
GRANT Read, Write
      ON FUNCTION udf_test
      TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");

Exemplo 6: Conceder permissões de instância

Conceda à função Worker todas as permissões na instância 202112300224****.

USE test_project_a;
-- ACL authorization
GRANT All ON instance 202112300224**** TO ROLE Worker;
-- Policy authorization
GRANT All
      ON instance 202112300224****
      TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");

Revogar permissões de operação em um objeto de uma função

Sintaxe

Revogar permissões concedidas via ACL:

REVOKE <permissions>
       ON {project <project_name> | TABLE <table_name> [(<column_list>)] | MODEL <model_name> | resource <resource_name> | FUNCTION <function_name> | instance <instance_id>}
       FROM ROLE <role_name>;

Revogar permissões concedidas via política:

REVOKE <permissions>
       ON {project <project_name> | TABLE <table_name> [(<column_list>)] | MODEL <model_name> | resource <resource_name> | FUNCTION <function_name> | instance <instance_id>}
       FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");

Para obter detalhes sobre os parâmetros, consulte Controle de acesso baseado em ACL e Controle de acesso baseado em políticas.

Exemplos

Os exemplos a seguir revogam permissões da função Worker em test_project_a.

Exemplo 1: Revogar permissões no nível do projeto

USE test_project_a;
-- Revoke ACL-granted permissions.
REVOKE CreateTable, CreateFunction, CreateInstance, List ON project test_project_a FROM ROLE Worker;
-- Revoke policy-granted permissions.
REVOKE CreateTable, CreateFunction, CreateInstance, List
      ON project test_project_a
      FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");

Exemplo 2: Revogar permissões de tabela

USE test_project_a;
-- Revoke ACL-granted permissions.
REVOKE Describe, Select ON TABLE sale_detail FROM ROLE Worker;
-- Revoke policy-granted permissions.
REVOKE Describe, Select
      ON TABLE sale_detail
      FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");

Exemplo 3: Revogar permissões de modelo

USE test_project_a;
-- Revoke ACL-granted permissions.
REVOKE All ON MODEL my_model FROM ROLE Worker;
-- Revoke policy-granted permissions.
REVOKE All
      ON MODEL my_model
      FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");

Exemplo 4: Revogar permissões de recurso

USE test_project_a;
-- Revoke ACL-granted permissions.
REVOKE Read, Write ON resource udtf.jar FROM ROLE Worker;
-- Revoke policy-granted permissions.
REVOKE Read, Write
      ON resource udtf.jar
      FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");

Exemplo 5: Revogar permissões de função

USE test_project_a;
-- Revoke ACL-granted permissions.
REVOKE Read, Write ON FUNCTION udf_test FROM ROLE Worker;
-- Revoke policy-granted permissions.
REVOKE Read, Write
      ON FUNCTION udf_test
      FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");

Exemplo 6: Revogar permissões de instância

USE test_project_a;
-- Revoke ACL-granted permissions.
REVOKE All ON instance 202112300224**** FROM ROLE Worker;
-- Revoke policy-granted permissions.
REVOKE All
      ON instance 202112300224****
      FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");

Conceder a permissão Download a uma função

Conceda a uma função a permissão para baixar dados de tabelas, recursos, funções ou instâncias. O controle de permissão de download deve estar ativado no projeto antes da execução deste comando.

Sintaxe

GRANT Download ON {Table|Resource|Function|Instance} <object_name> TO ROLE <role_name>;

Para obter detalhes sobre os parâmetros, consulte Controle de permissão de download.

Exemplo

Conceda à função Worker a permissão para baixar dados da tabela sale_detail.

-- Enter the project.
USE test_project_a;
-- Grant the Download permission to the role.
GRANT Download ON TABLE sale_detail TO ROLE Worker;

Revogar a permissão Download de uma função

Sintaxe

REVOKE Download ON {Table|Resource|Function|Instance} <object_name> FROM ROLE <role_name>;

Para obter detalhes sobre os parâmetros, consulte Controle de permissão de download.

Exemplo

Revogue a permissão de baixar dados da tabela sale_detail da função Worker.

USE test_project_a;
REVOKE Download ON TABLE sale_detail FROM ROLE Worker;

Conceder permissões de acesso a dados de alta sensibilidade a uma função

Use a autorização baseada em rótulos para conceder a uma função acesso a dados com nível de sensibilidade superior ao seu nível atual. Para obter informações sobre como definir um rótulo de nível de permissão para uma função, consulte Definir um rótulo de nível de permissão para um usuário ou função.

Sintaxe

GRANT Label <number> ON TABLE <table_name> [(<column_list>)] TO ROLE <role_name> [WITH exp <days>];

Para obter detalhes sobre os parâmetros, consulte Autorização explícita baseada em rótulos.

Exemplo

A função Worker possui um rótulo de nível de permissão igual a 2. Conceda a ela acesso a dados com nível máximo de sensibilidade 4 na tabela sale_detail.

USE test_project_a;
GRANT Label 4 ON TABLE sale_detail TO ROLE Worker;

Revogar permissões de acesso a dados de alta sensibilidade de uma função

A revogação de permissões baseadas em rótulos não afeta o próprio rótulo de nível de permissão da função.

Sintaxe

REVOKE Label ON TABLE <table_name> [(<column_list>)] FROM ROLE <role_name>;

Para obter detalhes sobre os parâmetros, consulte Revogar autorização explícita baseada em rótulos.

Exemplo

Revogue a permissão de acessar dados com nível de sensibilidade até 4 na tabela sale_detail da função Worker.

USE test_project_a;
REVOKE Label ON TABLE sale_detail FROM ROLE Worker;

Associar uma função a um usuário

Associe uma função integrada ou personalizada no nível do projeto a um usuário. O usuário herda todas as permissões concedidas a essa função. Vários usuários podem compartilhar a mesma função, e um único usuário pode ter múltiplas funções.

Sintaxe

GRANT <role_name> TO <user_name>;

Parâmetros

Parâmetro

Obrigatório

Descrição

role_name

Sim

Nome da função a ser associada. Execute list roles; no cliente MaxCompute para visualizar as funções disponíveis.

user_name

Sim

Nome do usuário de destino. Execute list users; no cliente MaxCompute para visualizar os membros do projeto.

Exemplo

Associe a função Worker à conta Alibaba Cloud Ka**@aliyun.com e ao usuário RAM RAM$Bob@aliyun.com:Allen.

USE test_project_a;
GRANT Worker TO ALIYUN$Ka**@aliyun.com;
GRANT Worker TO RAM$Bob@aliyun.com:Allen;

Desassociar uma função de um usuário

Ao desassociar uma função, o usuário perde todas as permissões concedidas por ela.

Sintaxe

REVOKE <role_name> FROM <user_name>;

Parâmetros

Parâmetro

Obrigatório

Descrição

role_name

Sim

Nome da função a ser desassociada. Execute list roles; no cliente MaxCompute para obter o nome da função.

user_name

Sim

Nome do usuário de destino. Execute list users; no cliente MaxCompute para obter o nome de usuário.

Exemplo

Desassocie a função Worker de Kate@aliyun.com e RAM$Bob@aliyun.com:Allen.

USE test_project_a;
REVOKE Worker FROM ALIYUN$Kate@aliyun.com;
REVOKE Worker FROM RAM$Bob@aliyun.com:Allen;

Próximos passos