Todos os produtos
Search
Central de documentação

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

Última atualização: Oct 11, 2026

Para conceder as mesmas permissões a vários usuários em um projeto do MaxCompute, crie uma função, conceda permissões a essa função e, em seguida, atribua-a aos usuários. Dessa forma, os usuários herdam automaticamente as permissões da função. Este tópico descreve a sintaxe para autorização de funções no nível do projeto e fornece exemplos de uso.

Casos de uso de autorização de funções

O MaxCompute suporta os cenários de autorização de funções descritos na tabela a seguir. Após conceder permissões a uma função, você pode attach a role to a user. Caso um usuário não precise mais das permissões, utilize detach a role from a user.

Cenário de autorização de função

Método de autorização

Autorizador

Plataforma de autorização

Grant operation permissions on an object to a role

Para mais informações, consulte a coluna Supported authorizers no tópico Permissões.

Revoke operation permissions on an object from a role

Grant the Download permission to a role

Download permission control

Revoke the Download permission from a role

Grant permissions to access high-sensitivity data to a role

Label-based access control

Revoke permissions to access high-sensitivity data from a role

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

É possível conceder permissões de operação em projetos, tabelas, modelos, resources, funções ou instâncias para uma função.

  • Sintaxe

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

      • Autorização ACL

        GRANT Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All 
              ON project <project_name> 
              TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
      • Autorização por política usando a sintaxe ACL

        GRANT Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All 
              ON project <project_name> 
              TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
    • Conceder permissões de operação em uma tabela a uma função

      • Autorização ACL

        GRANT Describe|Select|Alter|Update|Drop|ShowHistory|All 
              ON TABLE <table_name> [(<column_list>)] 
              TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
      • Autorização por política usando a sintaxe ACL

        GRANT Describe|Select|Alter|Update|Drop|ShowHistory|All 
              ON TABLE <table_name> [(<column_list>)] 
              TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
    • Conceder permissões de operação em um modelo a uma função

      • Autorização ACL

        GRANT Describe|Execute|Alter|Drop|All 
              ON MODEL <model_name> 
              TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
      • Autorização por política usando a sintaxe ACL

        GRANT Describe|Execute|Alter|Drop|All 
              ON MODEL <model_name> 
              TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
    • Conceder permissões de operação em um resource a uma função

      • Autorização ACL

        GRANT Read|Write|Delete|All 
              ON resource <resource_name> 
              TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
      • Autorização por política usando a sintaxe ACL

        GRANT Read|Write|Delete|All 
              ON resource <resource_name> 
              TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
    • Conceder permissões de operação em uma função a uma função

      • Autorização ACL

        GRANT Read|Write|Delete|Execute|All 
              ON FUNCTION <function_name> 
              TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
      • Autorização por política usando a sintaxe ACL

        GRANT Read|Write|Delete|Execute|All 
              ON FUNCTION <function_name>  
              TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
    • Conceder permissões de operação em uma instância a uma função

      • Autorização ACL

        GRANT Read|Write|All 
              ON instance <instance_id> 
              TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
      • Autorização por política usando a sintaxe ACL

        GRANT Read|Write|All  
              ON instance <instance_id>   
              TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
  • Parâmetros

    Para obter mais informações sobre os parâmetros, consulte ACL access control ou Policy-based access control.

  • Exemplos

    Considere que Bob@aliyun.com seja o proprietário do projeto test_project_a e que exista uma função chamada Worker criada nesse projeto. Os exemplos a seguir demonstram como conceder permissões à função Worker.

    • Exemplo 1: Conceder a uma função as permissões para criar tabelas, funções e instâncias, além de listar todos os objetos em um projeto.

      -- Bob enters the test_project_a project.
      use test_project_a;
      -- Grant permissions using ACL.
      GRANT CreateTable, CreateFunction, CreateInstance, List on project test_project_a to ROLE Worker;
      -- Grant permissions using the ACL syntax for policy authorization.
      GRANT CreateTable, CreateFunction, CreateInstance, List 
            ON project test_project_a  
            TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
    • Exemplo 2: Conceder a uma função as permissões para ler metadados e dados de uma tabela.

      -- Bob enters the test_project_a project.
      use test_project_a;
      -- Grant permissions using ACL.
      GRANT Describe, Select ON TABLE sale_detail TO ROLE Worker;
      -- Grant permissions using the ACL syntax for policy authorization.
      GRANT Describe, Select  
            ON TABLE sale_detail   
            TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
    • Exemplo 3: Conceder a uma função todas as permissões em um modelo.

      -- Bob enters the test_project_a project.
      use test_project_a;
      -- Grant permissions using ACL.
      GRANT All ON MODEL my_model TO ROLE Worker;
      -- Grant permissions using the ACL syntax for policy authorization.
      GRANT All  
            ON MODEL my_model  
            TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
    • Exemplo 4: Conceder a uma função as permissões para ler e atualizar um resource.

      -- Bob enters the test_project_a project.
      use test_project_a;
      -- Grant permissions using ACL.
      GRANT Read, Write ON resource udtf.jar TO ROLE Worker;
      -- Grant permissions using the ACL syntax for policy authorization.
      GRANT Read, Write   
            ON resource udtf.jar  
            TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
    • Exemplo 5: Conceder a uma função as permissões para ler e atualizar uma função.

      -- Bob enters the test_project_a project.
      use test_project_a;
      -- Grant permissions using ACL.
      GRANT Read, Write ON FUNCTION udf_test TO ROLE Worker;
      -- Grant permissions using the ACL syntax for policy authorization.
      GRANT Read, Write   
            ON FUNCTION udf_test  
            TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
    • Exemplo 6: Conceder a uma função todas as permissões de operação em uma instância.

      -- Bob enters the test_project_a project.
      use test_project_a;
      -- Grant permissions using ACL.
      GRANT All ON instance 202112300224**** TO ROLE Worker;
      -- Grant permissions using the ACL syntax for 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

Você pode revogar as permissões de operação em projetos, tabelas, modelos, resources, funções ou instâncias de uma função.

  • Sintaxe

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

      • Revogar permissões concedidas via ACL

        REVOKE Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All 
              ON project <project_name> 
              FROM ROLE <role_name>;
      • Revogar permissões concedidas via autorização por política

        REVOKE Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All 
              ON project <project_name> 
              FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
    • Revogar permissões de operação em uma tabela de uma função

      • Revogar permissões concedidas via ACL

        REVOKE Describe|Select|Alter|Update|Drop|ShowHistory|All 
              ON TABLE <table_name> [(<column_list>)] 
              FROM ROLE <role_name>;
      • Revogar permissões concedidas via autorização por política

        REVOKE Describe|Select|Alter|Update|Drop|ShowHistory|All 
              ON TABLE <table_name> [(<column_list>)] 
              FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
    • Revogar permissões de operação em um modelo de uma função

      • Revogar permissões concedidas via ACL

        REVOKE Describe|Execute|Alter|Drop|All 
              ON MODEL <model_name>
              FROM ROLE <role_name>;
      • Revogar permissões concedidas via autorização por política

        REVOKE Describe|Execute|Alter|Drop|All 
              ON MODEL <model_name> 
              FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
    • Revogar permissões de operação em um resource de uma função

      • Revogar permissões concedidas via ACL

        REVOKE Read|Write|Delete|All 
              ON resource <resource_name> 
              FROM ROLE <role_name>;
      • Revogar permissões concedidas via autorização por política

        REVOKE Read|Write|Delete|All 
              ON resource <resource_name> 
              FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
    • Revogar permissões de operação em uma função de uma função

      • Revogar permissões concedidas via ACL

        REVOKE Read|Write|Delete|Execute|All 
              ON FUNCTION <function_name> 
              FROM ROLE <role_name>;
      • Revogar permissões concedidas via autorização por política

        REVOKE Read|Write|Delete|Execute|All 
              ON FUNCTION <function_name>  
              FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
    • Revogar permissões de operação em uma instância de uma função

      • Revogar permissões concedidas via ACL

        REVOKE Read|Write|All 
              ON instance <instance_id> 
              FROM ROLE <role_name>;
      • Revogar permissões concedidas via autorização por política

        REVOKE Read|Write|All  
              ON instance <instance_id>   
              FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
  • Parâmetros

    Para obter mais informações sobre os parâmetros, consulte ACL access control ou Policy-based access control.

  • Exemplos

    Os exemplos a seguir mostram como revogar permissões da função Worker.

    • Exemplo 1: Revogar da função Worker as permissões para criar tabelas, funções e instâncias, bem como listar todos os objetos em um projeto.

      -- Bob enters the test_project_a project.
      use test_project_a;
      -- Revoke permissions granted using ACL.
      REVOKE CreateTable, CreateFunction, CreateInstance, List ON project test_project_a FROM ROLE Worker;
      -- Revoke permissions granted using policy authorization.
      REVOKE CreateTable, CreateFunction, CreateInstance, List 
            ON project test_project_a  
            FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
    • Exemplo 2: Revogar da função Worker as permissões para ler metadados e dados de uma tabela.

      -- Bob enters the test_project_a project.
      use test_project_a;
      -- Revoke permissions granted using ACL.
      REVOKE Describe, Select ON TABLE sale_detail TO ROLE Worker;
      -- Revoke permissions granted using policy authorization.
      REVOKE Describe, Select  
            ON TABLE sale_detail   
            FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
    • Exemplo 3: Revogar da função Worker todas as permissões em um modelo.

      -- Bob enters the test_project_a project.
      use test_project_a;
      -- Revoke permissions granted using ACL.
      REVOKE All ON MODEL my_model FROM ROLE Worker;
      -- Revoke permissions granted using policy authorization.
      REVOKE All  
            ON MODEL my_model  
            FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
    • Exemplo 4: Revogar da função Worker as permissões para ler e atualizar um resource.

      -- Bob enters the test_project_a project.
      USE test_project_a;
      -- Revoke permissions granted using ACL.
      REVOKE Read, Write ON resource udtf.jar FROM ROLE Worker;
      -- Revoke permissions granted using policy authorization.
      REVOKE Read, Write   
            ON resource udtf.jar  
            FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
    • Exemplo 5: Revogar da função Worker as permissões para ler e atualizar uma função.

      -- Bob enters the test_project_a project.
      USE test_project_a;
      -- Revoke permissions granted using ACL.
      REVOKE Read, Write ON FUNCTION udf_test FROM ROLE Worker;
      -- Revoke permissions granted using policy authorization.
      REVOKE Read, Write   
            ON FUNCTION udf_test  
            FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
    • Exemplo 6: Revogar da função Worker todas as permissões de operação em uma instância.

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

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

É possível conceder a uma função a permissão para baixar dados de tabelas, resources, funções ou instâncias.

  • Sintaxe

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

    Para obter mais informações sobre os parâmetros, consulte Download permission control.

  • Exemplo

    Suponha que o controle de permissão de download esteja ativado para o projeto test_project_a. O exemplo a seguir mostra como conceder à função Worker a permissão para baixar dados de uma tabela específica.

    -- Bob enters the test_project_a project.
    USE test_project_a;
    -- Bob grants the permission to the Worker role.
    GRANT Download ON TABLE sale_detail TO ROLE Worker;

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

Você pode revogar de uma função a permissão para baixar dados de tabelas, resources, funções ou instâncias.

  • Sintaxe

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

    Para obter mais informações sobre os parâmetros, consulte Download permission control.

  • Exemplo

    O exemplo a seguir demonstra como revogar da função Worker a permissão para baixar dados de uma tabela específica.

    -- Bob enters the test_project_a project.
    USE test_project_a;
    -- Bob revokes the permission from the Worker role.
    REVOKE Download ON TABLE sale_detail FROM ROLE Worker;

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

Após definir um rótulo de nível de permissão para uma função, caso ela precise acessar dados com um nível de sensibilidade superior, será necessário conceder as permissões adequadas. Para saber mais sobre como definir um rótulo de nível de permissão para um usuário ou função, consulte Set a permission level label for a user or role.

  • Sintaxe

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

    Para obter mais informações sobre os parâmetros, consulte Explicit label-based authorization.

  • Exemplo

    Considere que, no projeto test_project_a, o rótulo de nível de permissão da função Worker seja 2. O exemplo abaixo ilustra como conceder a essa função a permissão para acessar dados com nível máximo de sensibilidade 4 na tabela sale_detail.

    -- Bob enters the test_project_a project.
    USE test_project_a;
    -- Bob grants the permission to the Worker role.
    GRANT Label 4 ON TABLE sale_detail TO ROLE Worker;

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

É possível revogar as permissões de acesso a dados de alta sensibilidade de uma função. O nível de permissão da própria função permanece inalterado.

  • Sintaxe

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

    Para obter mais informações sobre os parâmetros, consulte Revoke explicit label-based authorization.

  • Exemplo

    O exemplo a seguir mostra como revogar da função Worker a permissão para acessar dados com nível máximo de sensibilidade 4 na tabela sale_detail.

    -- Bob enters the test_project_a project.
    USE test_project_a;
    -- Bob revokes the permission from the Worker role.
    REVOKE Label ON TABLE sale_detail FROM ROLE Worker;

Atribuir uma função a um usuário

Você pode atribuir uma função integrada ou personalizada do nível do projeto a um usuário. Assim, o usuário herda as permissões associadas a essa função.

  • Sintaxe

    GRANT <role_name> TO <user_name>;
  • Observações

    Vários usuários podem ser associados à mesma função, e um único usuário pode receber múltiplas funções.

  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    role_name

    Sim

    Nome da função a ser atribuída ao usuário.

    Execute o comando list roles; no MaxCompute client para visualizar as informações das funções.

    user_name

    Sim

    Nome do usuário ao qual você deseja atribuir a função.

    Execute o comando list users; no MaxCompute client para visualizar as informações dos usuários.

  • Exemplo

    Este exemplo demonstra como atribuir a função Worker ao usuário Ka**@aliyun.com e ao usuário RAM RAM$Bob@aliyun.com:Allen em um projeto do MaxCompute.

    -- Bob enters the test_project_a project.
    USE test_project_a;
    -- Bob attaches the role to the users.
    GRANT Worker TO ALIYUN$Ka**@aliyun.com;
    GRANT Worker TO RAM$Bob@aliyun.com:Allen;

Desassociar uma função de um usuário

É possível desassociar uma função de um usuário. Após a remoção, o usuário perde as permissões que haviam sido concedidas por meio daquela função.

  • 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 do usuário.

    Execute o comando list roles; no MaxCompute client para obter o nome da função.

    user_name

    Sim

    Nome do usuário do qual você deseja desassociar a função.

    Utilize o MaxCompute client para executar o comando list users; e obter o nome de usuário.

  • Exemplo

    Este exemplo ilustra como desassociar a função Worker de Kate@aliyun.com e de RAM$Bob@aliyun.com:Allen.

    -- Bob enters the test_project_a project.
    USE test_project_a;
    -- Bob detaches the role from the users.
    REVOKE Worker FROM ALIYUN$Kate@aliyun.com;
    REVOKE Worker FROM RAM$Bob@aliyun.com:Allen;

Próximos passos

Após conceder permissões a uma função, realize as operações abaixo conforme necessário: