Todos os produtos
Search
Central de documentação

MaxCompute:Gerenciamento de permissões baseado em políticas para usuários com funções integradas

Última atualização: Jun 26, 2026

As funções integradas do MaxCompute possuem permissões amplas. Por exemplo, a função Development concede permissões de operação em todas as tabelas e recursos de um projeto. Para restringir operações específicas de um usuário com função integrada — como impedir a exclusão de tabelas críticas — use o mecanismo de gerenciamento de permissões baseado em políticas e aplique regras de negação sobre a função existente.

Todas as operações deste tópico exigem o cliente MaxCompute. O console não oferece suporte ao gerenciamento de regras de negação baseadas em políticas.

Pré-requisitos

Antes de começar, verifique se você tem:

  • O cliente MaxCompute instalado. Para mais informações, consulte Instale e configure o cliente MaxCompute.

  • A função de proprietário do projeto ou a função integrada Super_Administrator ou Admin no projeto de destino.

Contexto

Para usuários que já possuem uma função integrada, o mecanismo baseado em políticas é mais eficaz que a lista de controle de acesso (ACL) no controle granular de permissões. A tabela a seguir indica quando usar cada mecanismo.

Mecanismo

Funcionamento

Cenário de uso

Política

Concede ou revoga operações específicas em objetos do projeto (como tabelas) para uma função. As permissões aplicadas à função valem para todos os usuários atribuídos a ela.

Um usuário possui uma função integrada e você precisa restringir operações específicas, como impedir a exclusão de determinadas tabelas.

ACL

Concede ou revoga permissões no nível de objeto diretamente para usuários ou grupos.

O gerenciamento de permissões baseado em políticas não é necessário.

Para mais informações, consulte Usuários e funções e Controle de acesso e controle de download baseados em políticas.

Conceder permissões com o mecanismo baseado em políticas

O exemplo a seguir mostra como impedir que a usuária RAM Alice (atribuída à função Development) exclua tabelas cujos nomes começam com tb_. Alice pertence à conta Alibaba Cloud bo*@aliyun.com.

Essa abordagem cria uma função de negação separada (delete_test) em vez de modificar a função integrada diretamente. Assim, a regra de negação permanece isolada e fácil de revogar: você pode removê-la de um usuário sem afetar outros que compartilham a mesma função integrada.

Importante

Somente o proprietário do projeto ou usuários com a função Super_Administrator ou Admin podem executar esta operação.

  1. Instale e inicie o cliente MaxCompute.

  2. Execute CREATE ROLE para criar a função delete_test.

    CREATE ROLE delete_test;

    Para mais informações, consulte Planejamento de funções.

  3. Execute GRANT para configurar a função delete_test e negar operações DROP em todas as tabelas cujos nomes começam com tb_.

    GRANT DROP ON TABLE tb_* TO ROLE delete_test privilegeproperties("policy" = "true", "allow"="false");

    O sinalizador "policy" = "true" ativa o mecanismo baseado em políticas. O sinalizador "allow"="false" define a regra como negação. Para mais detalhes sobre a sintaxe GRANT, consulte a seção "Controle de acesso baseado em políticas usando a instrução GRANT" em Controle de acesso e controle de download baseados em políticas.

  4. Execute GRANT para atribuir a função delete_test à usuária Alice.

    GRANT delete_test TO ram$bo*@aliyun.com:Alice;

    Se não souber a qual conta Alibaba Cloud Alice pertence, execute LIST USERS; no cliente MaxCompute para consultá-la. Para mais informações, consulte Planejamento de funções.

  5. Execute SHOW GRANTS para verificar as permissões de Alice.

    SHOW GRANTS FOR ram$bo*@aliyun.com:Alice;

    Confirme se a saída inclui um bloco [role/delete_test] em Authorization Type: Policy com o prefixo D (Deny) na entrada tb_*: Drop.

    [roles]
    role_project_admin, delete_test
    
    Authorization Type: Policy
    [role/delete_test]
    D       projects/mcproject_name/tables/tb_*: Drop
    [role/role_project_admin]
    A       projects/mcproject_name: *
    A       projects/mcproject_name/instances/*: *
    A       projects/mcproject_name/jobs/*: *
    A       projects/mcproject_name/offlinemodels/*: *
    A       projects/mcproject_name/packages/*: *
    A       projects/mcproject_name/registration/functions/*: *
    A       projects/mcproject_name/resources/*: *
    A       projects/mcproject_name/tables/*: *
    A       projects/mcproject_name/volumes/*: *
    
    Authorization Type: ObjectCreator
    AG      projects/mcproject_name/tables/local_test: All
    AG      projects/mcproject_name/tables/mr_multiinout_out1: All
    AG      projects/mcproject_name/tables/mr_multiinout_out2: All
    AG      projects/mcproject_name/tables/ramtest: All
    AG      projects/mcproject_name/tables/wc_in: All
    AG      projects/mcproject_name/tables/wc_in1: All
    AG      projects/mcproject_name/tables/wc_in2: All
    AG      projects/mcproject_name/tables/wc_out: All

    Para mais informações, consulte Consultar permissões usando MaxCompute SQL.

  6. Faça login no cliente MaxCompute como Alice e execute DROP TABLE para testar a restrição.

    DROP TABLE tb_test;

    Se a regra de negação estiver ativa, o comando falhará com um erro semelhante a:

    FAILED: Catalog Service Failed, ErrorCode: 50, Error Message: ODPS-0130013:Authorization exception - Authorization Failed [4011],
    You have NO privilege 'odps:Drop' on {acs:odps:*:projects/mcproject_name/tables/tb_test}.
    Explicitly denied by policy.
    Context ID:85efa8e9-40da-4660-bbfd-b503dfa64c0a. --->Tips: Pricipal:RAM$bo*@aliyun.com:Alice; Deny by policy

    Duas frases confirmam que a regra de negação baseada em política está em vigor: Explicitly denied by policy no meio da mensagem de erro e Deny by policy ao final. Se nenhuma dessas frases aparecer ou se a tabela for excluída, verifique se todas as etapas anteriores foram concluídas corretamente.

Revogar permissões com o mecanismo baseado em políticas

Se as tabelas com o prefixo tb_ deixarem de ser críticas e você quiser permitir que Alice as exclua, revogue a permissão de negação com um dos dois métodos abaixo.

Importante

Somente o proprietário do projeto ou usuários com a função Super_Administrator ou Admin podem executar esta operação.

Método 1: Remover a regra de negação da função

Use este método para remover a restrição de negação e manter a função delete_test atribuída a Alice.

  1. Instale e inicie o cliente MaxCompute.

  2. Execute REVOKE para remover a regra de negação da função delete_test.

    REVOKE DROP ON TABLE tb_* FROM ROLE delete_test privilegeproperties("policy" = "true", "allow"="false");

    Para mais informações sobre a sintaxe REVOKE, consulte a seção "Controle de acesso baseado em políticas usando a instrução GRANT" em Controle de acesso e controle de download baseados em políticas.

  3. Execute SHOW GRANTS para verificar se a regra de negação foi removida.

    SHOW GRANTS FOR ram$bo*@aliyun.com:Alice;

    O bloco [role/delete_test] não deve mais aparecer em Authorization Type: Policy, o que confirma a remoção da restrição.

    [roles]
    role_project_admin, delete_test
    
    Authorization Type: Policy
    [role/role_project_admin]
    A       projects/mcproject_name: *
    A       projects/mcproject_name/instances/*: *
    A       projects/mcproject_name/jobs/*: *
    A       projects/mcproject_name/offlinemodels/*: *
    A       projects/mcproject_name/packages/*: *
    A       projects/mcproject_name/registration/functions/*: *
    A       projects/mcproject_name/resources/*: *
    A       projects/mcproject_name/tables/*: *
    A       projects/mcproject_name/volumes/*: *
    
    Authorization Type: ObjectCreator
    AG      projects/mcproject_name/tables/local_test: All
    AG      projects/mcproject_name/tables/mr_multiinout_out1: All
    AG      projects/mcproject_name/tables/mr_multiinout_out2: All
    AG      projects/mcproject_name/tables/ramtest: All
    AG      projects/mcproject_name/tables/tb_test: All
    AG      projects/mcproject_name/tables/wc_in: All
    AG      projects/mcproject_name/tables/wc_in1: All
    AG      projects/mcproject_name/tables/wc_in2: All
    AG      projects/mcproject_name/tables/wc_out: All

    Para mais informações, consulte Consultar permissões usando MaxCompute SQL.

  4. Faça login no cliente MaxCompute como Alice e execute DROP TABLE para confirmar que a exclusão agora é bem-sucedida.

    DROP TABLE tb_test;

    Se o sistema retornar OK, a regra de negação foi removida com sucesso.

Método 2: Revogar a função de negação do usuário

Use este método para remover completamente a associação de Alice à função delete_test. Opcionalmente, exclua a função se ela não for mais necessária.

  1. Instale e inicie o cliente MaxCompute.

  2. Execute REVOKE para remover a função delete_test de Alice.

    REVOKE delete_test FROM ram$bo*@aliyun.com:Alice;

    Para mais informações, consulte Planejamento de funções.

  3. Execute SHOW GRANTS para confirmar que Alice não tem mais a função delete_test.

    SHOW GRANTS FOR ram$bo*@aliyun.com:Alice;

    A entrada delete_test deve estar ausente da linha [roles].

    [roles]
    role_project_admin
    
    Authorization Type: Policy
    [role/role_project_admin]
    A       projects/mcproject_name: *
    A       projects/mcproject_name/instances/*: *
    A       projects/mcproject_name/jobs/*: *
    A       projects/mcproject_name/offlinemodels/*: *
    A       projects/mcproject_name/packages/*: *
    A       projects/mcproject_name/registration/functions/*: *
    A       projects/mcproject_name/resources/*: *
    A       projects/mcproject_name/tables/*: *
    A       projects/mcproject_name/volumes/*: *
    
    Authorization Type: ObjectCreator
    AG      projects/mcproject_name/tables/local_test: All
    AG      projects/mcproject_name/tables/mr_multiinout_out1: All
    AG      projects/mcproject_name/tables/mr_multiinout_out2: All
    AG      projects/mcproject_name/tables/ramtest: All
    AG      projects/mcproject_name/tables/wc_in: All
    AG      projects/mcproject_name/tables/wc_in1: All
    AG      projects/mcproject_name/tables/wc_in2: All
    AG      projects/mcproject_name/tables/wc_out: All
  4. Faça login no cliente MaxCompute como Alice e execute DROP TABLE para confirmar a remoção da restrição.

    DROP TABLE tb_test;

    Se o sistema retornar OK, Alice poderá excluir tabelas tb_*.

  5. (Opcional) Execute DROP ROLE para excluir a função delete_test se ela não for mais necessária.

    DROP ROLE delete_test;

    Se o sistema retornar OK, a função será excluída. Para mais informações, consulte Planejamento de funções.