Todos os produtos
Search
Central de documentação

MaxCompute:Controle de acesso ACL

Última atualização: Aug 21, 2026

Para permitir que vários usuários trabalhem com objetos do MaxCompute, como projetos e tabelas, use Listas de Controle de Acesso (ACLs) para conceder permissões específicas a usuários ou funções. Para gerenciar permissões de múltiplos usuários com eficiência, conceda as permissões a uma função e, em seguida, atribua essa função aos usuários. Este tópico descreve os comandos de autorização ACL compatíveis com o MaxCompute e fornece exemplos de uso.

Informações básicas

O controle de acesso baseado em ACL utiliza um modelo de autorização por lista de permissões. Você permite explicitamente que um usuário ou função execute ações específicas em um objeto específico, tornando a autorização simples e precisa.

Após criar um projeto no MaxCompute, o controle de acesso baseado em ACL é ativado por padrão. O proprietário do projeto pode executar o comando set CheckPermissionUsingACL=true|false; no projeto para ativar ou desativar esse recurso.

O controle de acesso baseado em ACL aplica-se aos seguintes cenários.

Cenário

Descrição

Concedente

Ponto de entrada

Conceder permissões a um usuário

Concede uma ou mais ações em um objeto específico diretamente a um único usuário.

Consulte a coluna Supported grantors na lista de permissões.

Conceder permissões a usuários com base em funções

Concede uma ou mais ações em um objeto específico diretamente a uma função e, em seguida, atribui a função a vários usuários. Os usuários herdam as permissões da função.

Para obter mais informações sobre como criar funções e atribuí-las a usuários, consulte Role planning e Attach a role to a user.

Nota

As funções foram projetadas para facilitar o gerenciamento de usuários. Evite conceder as mesmas permissões no mesmo objeto para múltiplas funções.

Pré-requisitos

Antes de usar o controle de acesso baseado em ACL, certifique-se de ter as seguintes informações:

  • Nome da conta ou nome da função do destinatário. O usuário ou função deve estar adicionado ao projeto do MaxCompute. Os formatos de conta são os seguintes: uma conta Alibaba Cloud segue o formato ALIYUN$<account_id>, uma conta de usuário RAM segue o formato RAM$<account_id>:<RAM user UID>, e uma função RAM segue o formato RAM$<account_id>:role/<RAM role name>.

    Execute o comando list users; ou list roles; no MaxCompute client para obter os nomes das contas ou funções.

    Para adicionar um usuário ou função, consulte User planning and management ou Role planning.

  • Tipo de objeto, nome do objeto e as ações a serem concedidas.

    Para obter mais informações sobre tipos de objetos e ações, consulte MaxCompute permissions.

Limites

Os seguintes limites aplicam-se ao controle de acesso baseado em ACL:

  • É possível conceder permissões apenas a usuários ou funções existentes em objetos existentes. Isso evita riscos de segurança decorrentes da exclusão e recriação de um objeto com o mesmo nome.

  • O controle de acesso baseado em ACL não oferece suporte à autorização com a cláusula [with grant option]. Por exemplo, se o usuário A conceder acesso a um objeto ao usuário B, o usuário B não poderá conceder essa permissão ao usuário C.

  • A autorização ACL utiliza um modelo de lista de permissões e não oferece suporte a um modelo de lista de bloqueios.

Observações de uso

Observe os seguintes pontos ao usar o controle de acesso baseado em ACL:

  • Ao excluir um objeto, o MaxCompute revoga automaticamente todas as permissões ACL associadas a ele.

  • Quando um usuário é removido, suas permissões são mantidas. Se o usuário for adicionado novamente ao projeto posteriormente, suas permissões anteriores serão restauradas automaticamente. Para limpar permanentemente as permissões de um usuário, consulte Clear residual permissions of a removed user.

Sintaxe

Os comandos de controle de acesso baseado em ACL usam a seguinte sintaxe:

  • Conceder permissões ACL

    grant <actions> on <object_type> <object_name> 
    [(<column_list>)] to <subject_type> <subject_name> 
    [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
  • Revogar permissões ACL

    revoke <actions> on <object_type> <object_name> 
    [(<column_list>)] from <subject_type> <subject_name>;
  • Controle de acesso no nível de coluna

    grant <actions> on table <table_name> (<column_list>) to <subject_type> <subject_name>;
    revoke <actions> on table <table_name> (<column_list>) from <subject_type> <subject_name>;

A tabela a seguir descreve os parâmetros.

Parâmetro

Obrigatório

Descrição

actions

Sim

Ações a serem concedidas. É possível especificar uma ou mais ações em uma única instrução 'grant'.

Separe múltiplas ações com vírgulas (,). Para obter uma lista de ações válidas, consulte MaxCompute permissions.

object_type

Sim

Tipo do objeto no qual as permissões serão concedidas. Apenas um tipo de objeto pode ser especificado por instrução.

Para obter uma lista de tipos de objetos válidos, consulte MaxCompute permissions.

object_name

Sim

Nome do objeto. Encontre o nome da seguinte forma:

  • Nome do projeto: Faça login no MaxCompute console. Após alternar a região no canto superior esquerdo, localize o nome do projeto na aba Projects. Quando o tipo de objeto for projeto, será possível consultar informações apenas sobre o projeto atual.

  • Nome da tabela: Execute show tables; no MaxCompute client para obter o nome da tabela ou visualização.

  • Nome do modelo: Execute show models; no MaxCompute client para obter o nome do modelo.

  • Nome do recurso: Execute list resources; no MaxCompute client para obter o nome do recurso.

  • Nome da função: Execute list functions; no MaxCompute client para obter o nome da função.

  • Nome da instância: Execute show instances; no MaxCompute client para obter o ID da instância.

É possível usar um asterisco () como caractere curinga no nome do objeto. Por exemplo, table taobao indica todas as tabelas cujos nomes começam com taobao.

Nota

O uso de caractere curinga (*) é permitido apenas ao conceder permissões a uma ROLE. Caracteres curinga não são suportados ao conceder permissões a um USER.

column_list

Não

Este parâmetro é necessário apenas quando object_type é tabela e você deseja implementar controle de acesso no nível de coluna. É possível especificar uma ou mais colunas. Separe múltiplos nomes de colunas com vírgulas (,).

Nota

Este parâmetro controla as permissões Describe, Select, Alter, Update, Drop, ShowHistory e ALL nas colunas especificadas. Se um nível de sensibilidade estiver configurado para uma coluna, use Label-based access control para controlar o acesso a dados confidenciais com base em rótulos de sensibilidade.

privilegeproperties

conditions

Não

Controla permissões com base em atributos como origem da solicitação e método de acesso. O formato é "<var_name> <Operation> Constant" and "<var_name> <Operation> Constant" and .... Para obter uma lista de valores suportados para var_name e Operation, consulte Conditions.

days

Não

Número de dias até a expiração da permissão. Caso este parâmetro não seja especificado, a permissão não expirará. Se especificado, o MaxCompute remove automaticamente o registro de permissão após a expiração.

subject_type

Sim

Tipo do destinatário. Valores válidos:

  • USER: Uma conta Alibaba Cloud ou um usuário RAM.

  • ROLE: Uma função.

subject_name

Sim

Conta de usuário ou nome da função do destinatário. Apenas um usuário ou função pode ser especificado por concessão. Formatos:

  • Conta Alibaba Cloud: ALIYUN$<account_id>.

  • Usuário RAM: RAM$<account_id>:<RAM user UID>.

  • Função RAM: RAM$<account_id>:role/<RAM role name>.

Execute o comando list users; ou list roles; no MaxCompute client para obter a conta de usuário ou o nome da função.

Condições

A tabela a seguir lista os valores suportados de var_name e Operation para conditions.

var_name

Tipo

Operation

Descrição

acs:UserAgent

STRING

  • StringEquals: =

  • StringNotEquals: <>

  • StringLike: like

  • StringNotLike: not like

User-Agent do cliente solicitante.

acs:Referer

STRING

HTTP Referer da solicitação.

acs:SourceIp

Endereço IP

  • IpAddress: in (...)

  • NotIpAddress: not in (...)

Endereço IP do cliente solicitante.

acs:SecureTransport

BOOLEAN

  • True

  • False

Indica se a solicitação foi enviada por um canal seguro, como HTTPS.

acs:CurrentTime

DATEANDTIME

  • DateEquals: =

  • DateNotEquals: <>

  • DateLessThan: <

  • DateLessThanEquals: <=

  • DateGreaterThan: >

  • DateGreaterThanEquals: >=

Horário em que o servidor web recebe a solicitação, no formato ISO 8601, como 2012-11-11T23:59:59Z.

Exemplos

Considere que Bob@aliyun.com (ID da conta: 5527xxxxxxxx5788) seja o proprietário do projeto test_project_a, e que Allen (UID: 1652xxxxxxxxxx1538), Alice (UID: 2763xxxxxxxxxx1649) e Tom (UID: 3874xxxxxxxxxx1850) sejam usuários RAM sob Bob@aliyun.com. Os exemplos a seguir demonstram operações de autorização usando o MaxCompute client.

  • Exemplo 1: Conceder permissões a um usuário

    Crie a tabela sale_detail no projeto test_project_a e conceda ao usuário Allen as permissões Describe (ler metadados) e Select (ler dados) na tabela. Veja abaixo os comandos de exemplo.

    -- Bob switches to the test_project_a project.
    use test_project_a; 
    --Create a partitioned table named sale_detail.
    create table if not exists sale_detail
    (
    shop_name     string,
    customer_id   string,
    total_price   double
    )
    partitioned by (sale_date string, region string);
    --Add the user Allen as a project member.
    add user RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538;
    --Grant permissions to Allen.
    grant Describe, Select on table sale_detail to USER RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538;
    --View the permissions granted to Allen.
    show grants for RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538; 
    --The authorization result is as follows.
    Authorization Type: ACL
    [user/RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538]
    A       projects/test_project_a/tables/sale_detail: Describe | Select
  • Exemplo 2: Conceder permissões no nível de coluna a um usuário

    Usando a tabela sale_detail criada no Exemplo 1, conceda à usuária Alice todas as permissões nas colunas shop_name e customer_id da tabela sale_detail. Veja abaixo os comandos de exemplo.

    -- Bob switches to the test_project_a project.
    use test_project_a; 
    --Add user Alice as a project member.
    add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    --Grant column-level permissions to Alice.
    grant All on table sale_detail (shop_name, customer_id) to USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    --View the permissions granted to Alice.
    show grants for RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649; 
    --The authorization result is as follows.
    Authorization Type: ACL
    [user/RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649]
    A       projects/test_project_a/tables/sale_detail/customer_id: All
    A       projects/test_project_a/tables/sale_detail/shop_name: All
  • Exemplo 3: Revogar permissões de usuários

    Com base no Exemplo 1 e no Exemplo 2, revogue as permissões dos usuários Allen e Alice. Veja abaixo os comandos de exemplo.

    -- Bob switches to the test_project_a project.
    use test_project_a; 
    --Revoke the permissions from Allen.
    revoke Describe, Select on table sale_detail (shop_name, customer_id) from USER RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538;
    --Revoke the permissions from Alice.
    revoke All on table sale_detail (shop_name, customer_id) from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    --Check Allen's permissions after revocation. The Describe and Select permissions are removed from the permission list.
    show grants for RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538; 
    --Check Alice's permissions after revocation. The All permission is removed from the permission list.
    show grants for RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649; 
  • Exemplo 4: Conceder as mesmas permissões a múltiplos usuários usando uma função

    Conceda a Alice, Tom e outra conta Alibaba Cloud Lily@aliyun.com (ID da conta: 5638xxxxxxxx6899) as permissões para criar instâncias, recursos, funções e tabelas, além de listar todos os tipos de objetos no projeto test_project_a. Veja abaixo os comandos de exemplo.

    -- Bob switches to the test_project_a project.
    use test_project_a; 
    --Add the users Alice, Tom, and Lily@aliyun.com as project members.
    add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    add user RAM$5527xxxxxxxx5788:3874xxxxxxxxxx1850;
    add user ALIYUN$5638xxxxxxxx6899;
    --Create the Worker role.
    create role Worker; 
    --Assign the Worker role to the users.
    grant Worker TO RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649; 
    grant Worker TO RAM$5527xxxxxxxx5788:3874xxxxxxxxxx1850; 
    grant Worker TO ALIYUN$5638xxxxxxxx6899; 
    --Grant the Worker role the permissions to create instances, resources, functions, and tables, and to list all object types in the test_project_a project.
    grant CreateInstance, CreateResource, CreateFunction, CreateTable, List on project test_project_a TO ROLE Worker;
    --View the permissions for the user Lily.
    show grants for ALIYUN$5638xxxxxxxx6899; 
    --The following authorization result indicates that the user Lily has the specified permissions.
    [roles]
    worker
    
    Authorization Type: ACL
    [role/worker]
    A       projects/test_project_a: CreateTable | CreateResource | CreateInstance | CreateFunction | List
  • Exemplo 5: Revogar as mesmas permissões baseadas em função de múltiplos usuários

    Com base no Exemplo 4, revogue as permissões dos usuários Alice, Tom e Lily@aliyun.com. Veja abaixo os comandos de exemplo.

    -- Bob switches to the test_project_a project.
    use test_project_a; 
    --Revoke the Worker role from the users Alice, Tom, and Lily@aliyun.com.
    revoke Worker from RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    revoke Worker from RAM$5527xxxxxxxx5788:3874xxxxxxxxxx1850;
    revoke Worker from ALIYUN$5638xxxxxxxx6899;
    --Check Lily's permissions after revocation. The permission list no longer includes the Worker role.
    show grants for ALIYUN$5638xxxxxxxx6899; 

Próximos passos

Após compreender o funcionamento da autorização ACL, gerencie as permissões conforme as necessidades do seu negócio: