Todos os produtos
Search
Central de documentação

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

Última atualização: Sep 17, 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 ela e associe-a aos usuários. Assim, os usuários herdam 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.

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

O MaxCompute oferece suporte aos cenários de autorização de funções descritos na tabela a seguir. Após conceder permissões a uma função, você pode associar a função a um usuário. Caso um usuário não precise mais das permissões, desassocie a função do usuário.

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

Método de autorização

Autorizador

Plataforma de autorização

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

Para obter mais informações, consulte a coluna Autorizadores suportados no tópico Permissões.

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

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

Controle de permissão de baixe

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

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

Controle de acesso baseado em rótulo

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

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

Você pode conceder permissões de operação em projetos, tabelas, modelos, recursos, funções ou instâncias a 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 recurso 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 Controle de acesso ACL ou Controle de acesso baseado em política.

  • 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 recurso.

      -- 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, recursos, 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 recurso 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 Controle de acesso ACL ou Controle de acesso baseado em política.

  • 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 recurso.

      -- 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 Baixe a uma função

Você pode conceder a uma função a permissão para baixar dados de tabelas, recursos, 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 Controle de permissão de baixe.

  • Exemplo

    Suponha que o controle de permissão de baixe 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 Baixe de uma função

Você pode revogar de uma função a permissão para baixar dados de tabelas, recursos, 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 Controle de permissão de baixe.

  • 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, conceda as permissões adequadas. Para saber mais sobre como configurar um rótulo de nível de permissão para um usuário ou 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>];
  • Parâmetros

    Para obter mais informações sobre os parâmetros, consulte Autorização explícita baseada em rótulo.

  • 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

Você pode revogar as permissões de acesso a dados de alta sensibilidade de uma função sem alterar o nível de permissão intrínseco dela.

  • 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 Revogar autorização explícita baseada em rótulo.

  • 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;

Associar uma função a um usuário

Associe uma função integrada ou personalizada do nível do projeto a um usuário para que ele herde as permissões dessa 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 associada ao usuário.

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

    user_name

    Sim

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

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

  • Exemplo

    Este exemplo demonstra como associar 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

Desassocie uma função de um usuário para remover as permissões concedidas por meio dela.

  • 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 cliente MaxCompute para obter o nome da função.

    user_name

    Sim

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

    Utilize o cliente MaxCompute 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óximas etapas

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