Todos os produtos
Search
Central de documentação

MaxCompute:Acesso a recursos entre projetos com base em pacotes

Última atualização: Jun 26, 2026

Não é possível acessar diretamente recursos em outro projeto, mesmo em cenários entre contas, a menos que você seja membro do projeto de destino. Para ativar esse acesso, o MaxCompute oferece autorização baseada em pacotes. Encapsule recursos e suas permissões em um pacote para que outros projetos possam instalá-lo e obter acesso entre projetos. Este tópico explica a autorização por pacotes e fornece exemplos de uso.

Informações básicas

Neste tópico, uma conta Alibaba Cloud possui vários projetos MaxCompute e precisa compartilhar tabelas específicas, arquivos de recursos e funções definidas pelo usuário (UDFs) no Projeto A com outros projetos dessa mesma conta ou com projetos de outra conta Alibaba Cloud. Compartilhe os recursos com outros projetos usando um dos seguintes métodos:

  • Adicione os usuários dos outros projetos ao Projeto A e conceda a cada usuário as permissões para acessar os recursos. Esse método é complexo; portanto, não recomendamos seu uso em cenários de acesso a recursos entre projetos. Utilize-o apenas quando for necessário um controle de acesso granular aos recursos para um membro da equipe do projeto. Para mais informações sobre a sintaxe dos comandos de autorização, consulte Controle de acesso baseado em ACL.

  • Utilize o mecanismo de controle de acesso baseado em pacotes.

    O mecanismo de controle de acesso baseado em pacotes serve para compartilhar dados e recursos entre projetos. O proprietário do Projeto A empacota os recursos necessários a outros projetos, juntamente com as permissões de operação correspondentes, e autoriza os proprietários desses projetos a instalar o pacote. Após a instalação, os proprietários dos demais projetos podem decidir se autorizam os usuários a acessar os recursos contidos no pacote. A figura a seguir ilustra o funcionamento desse mecanismo.

    Package使用流程

A figura anterior mostra que o mecanismo de controle de acesso baseado em pacotes envolve duas entidades: criador do pacote e usuário do pacote. A tabela a seguir descreve essas entidades e as operações que elas podem executar.

Entidade

Descrição

Operação executável

Função da entidade

Plataforma de operação

Criador do pacote

O projeto ao qual o criador do pacote pertence fornece os recursos a serem compartilhados. O criador agrupa os recursos do projeto e as permissões de operação correspondentes, autorizando os usuários do pacote a instalá-lo e acessar seus recursos.

Crie um pacote

Proprietário do projeto ao qual os recursos pertencem ou usuário com a função de nível de projeto Super_Administrator desse projeto

Adicionar recursos a um pacote

Remover recursos de um pacote

Autorizar um projeto a usar um pacote

Revogar permissões de acesso a um pacote de um projeto

Exclua um pacote

Visualize pacotes

Visualize detalhes de um pacote

Usuário do pacote

O projeto ao qual o usuário do pacote pertence acessa os recursos dentro dele. Após instalar o pacote criado pelo criador, o usuário pode acessar diretamente os recursos ali contidos.

Instale um pacote

Proprietário do projeto que utiliza os recursos ou usuário com a função de nível de projeto Super_Administrator ou Admin desse projeto

Visualize detalhes de um pacote instalado

Autorizar um usuário ou função a acessar um pacote

Desinstalar um pacote

Limites

Antes de utilizar o mecanismo de controle de acesso baseado em pacotes, observe os seguintes limites:

  • É possível adicionar no máximo 1.000 recursos a um único pacote.

  • Um pacote pode ser instalado em até 100.000 projetos MaxCompute.

  • Cada projeto MaxCompute pode instalar no máximo 100 pacotes provenientes de outro projeto MaxCompute.

  • Limite de criação de 100.000 pacotes por projeto MaxCompute.

  • Capacidade máxima de instalação de 100.000 pacotes em um projeto MaxCompute.

Crie um pacote

O criador do pacote cria um pacote em um projeto MaxCompute.

  • Sintaxe

    create package <package_name>;
  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    package_name

    Sim

    Nome do pacote, que deve ser exclusivo dentro do projeto. O nome deve ter entre 1 e 128 caracteres e pode conter letras, dígitos e sublinhados (_).

    Execute o comando show packages; no cliente MaxCompute para visualizar os pacotes criados.

  • Exemplos

    Neste exemplo, a conta Alibaba Cloud Bob@aliyun.com é proprietária do projeto test_project_a e precisa autorizar outros projetos a acessar recursos específicos nesse projeto. Crie um pacote. Comandos de exemplo:

    -- Switch to the test_project_a project.
    use test_project_a; 
    -- Create a package named datashare.
    create package datashare;

Adicionar recursos a um pacote

O criador adiciona ao pacote os recursos necessários aos usuários.

  • Sintaxe

    add <object_type> <object_name> to package <package_name> [with privileges <privileges>];
  • Limites

    Não é possível adicionar projetos a um pacote.

  • Precauções

    Ao adicionar recursos a um pacote, eles não são empacotados como snapshots. Se os dados do recurso forem atualizados após a adição ao pacote, os usuários acessarão a versão mais recente desses dados.

  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    object_type

    Sim

    Tipo do objeto a ser adicionado ao pacote. Só é possível especificar um tipo de objeto por vez.

    Para mais informações sobre tipos de objetos, consulte Permissões.

    object_name

    Sim

    Nome do objeto a ser removido do pacote. Obtenha o nome do objeto usando um dos seguintes métodos:

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

    • Nome do arquivo de recurso: Execute o comando list resources; no cliente MaxCompute para obter o nome do recurso.

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

    • Nome da instância: Execute o comando show instances; no cliente MaxCompute para obter o nome da instância.

    Nota
    • Ao adicionar recursos, use o caractere curinga (). Por exemplo, add table to package package_name; adiciona todas as tabelas ao pacote.

    • Ao adicionar recursos a um pacote, não especifique o nome no formato NomeDoProjeto.NomeDoRecurso. Por exemplo, para adicionar uma tabela chamada table do Projeto A a um pacote, não use A.table como nome do recurso. Especifique apenas table.

    package_name

    Sim

    Nome do pacote.

    Execute o comando show packages; no cliente MaxCompute para visualizar os pacotes criados.

    privileges

    Não

    Permissões de operação sobre os recursos no pacote. Se este parâmetro não for especificado, as permissões Read, Describe e Select serão adicionadas por padrão. Os recursos e suas permissões são inseparáveis e não podem ser atualizados individualmente após a adição ao pacote. Para alterar os recursos ou as permissões, remova-os do pacote e adicione-os novamente com as configurações desejadas.

    Para mais informações sobre permissões de operação, consulte Permissões.

  • Exemplos

    Adicione o arquivo de recurso udtf.jar e as tabelas sale_detail e bank_data do projeto test_project_a ao pacote criado. Comandos de exemplo:

    -- Add resources to the package.
    add resource udtf.jar to package datashare;
    add table sale_detail to package datashare;

Remover recursos de um pacote

O criador remove recursos do pacote criado.

  • Sintaxe

    remove <object_type> <object_name> from package <package_name>; 
  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    object_type

    Sim

    Tipo do objeto a ser removido do pacote. Só é possível remover um objeto por vez.

    Para mais informações sobre tipos de objetos, consulte Permissões.

    object_name

    Sim

    Nome do objeto a ser removido do pacote. Obtenha o nome do objeto usando um dos seguintes métodos:

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

    • Nome do arquivo de recurso: Execute o comando list resources; no cliente MaxCompute para obter o nome do recurso.

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

    • Nome da instância: Execute o comando show instances; no cliente MaxCompute para obter o nome da instância.

    package_name

    Sim

    Nome do pacote.

    Execute o comando show packages; no cliente MaxCompute para visualizar os pacotes criados.

  • Exemplos

    Remova a tabela sale_detail do pacote datashare. Comando de exemplo:

    -- Remove a resource from the package.
    remove table sale_detail from package datashare;

Autorizar um projeto a usar um pacote

O criador do pacote em um projeto autoriza outros projetos a usá-lo.

  • Sintaxe

    allow project <project_name> to install package <package_name> [using label <number>];
  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    project_name

    Sim

    Nome do projeto MaxCompute a ser autorizado a usar o pacote.

    Para visualizar o nome de um projeto MaxCompute, faça login no console MaxCompute. Na barra de navegação superior, selecione uma região. Em seguida, visualize o nome do projeto MaxCompute na aba Project management.

    package_name

    Sim

    Nome do pacote.

    Execute o comando show packages; no cliente MaxCompute para visualizar os pacotes criados.

    number

    Não

    Este parâmetro aplica uma política de controle de acesso baseada em rótulos. Ele define o nível de sensibilidade dos dados acessíveis ao usuário do pacote. O projeto MaxCompute autorizado só poderá acessar dados cuja sensibilidade seja igual ou inferior ao nível definido por number. Caso omitido, o nível de sensibilidade padrão será 0.

    Para mais informações sobre controle de acesso baseado em rótulos, consulte Controle de acesso baseado em rótulos.

  • Exemplos

    Autorize o projeto test_project_b a instalar o pacote datashare criado no projeto test_project_a. Comando de exemplo:

    -- Authorize project test_project_b to install the package.
    allow project test_project_b to install package datashare;

Revogar permissões de acesso a um pacote de um projeto

O criador revoga as permissões de acesso a um pacote de um projeto específico.

  • Sintaxe

    disallow project <project_name> to install package <package_name>;
  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    project_name

    Sim

    Nome do projeto MaxCompute do qual revogar as permissões de acesso ao pacote.

    Para visualizar o nome de um projeto MaxCompute, faça login no console MaxCompute. Na barra de navegação superior, selecione uma região. Em seguida, visualize o nome do projeto MaxCompute na aba Project management.

    package_name

    Sim

    Nome do pacote.

    Execute o comando show packages; no cliente MaxCompute para visualizar os pacotes criados.

  • Exemplos

    Revogue as permissões de instalação do pacote datashare do projeto test_project_a para o projeto test_project_b. Comando de exemplo:

    -- Revoke the permission to install the package.
    disallow project test_project_b to install package datashare;

Exclua um pacote

O criador exclui um pacote existente.

  • Sintaxe

    delete|drop package <package_name>;
  • Precauções

    A exclusão de um pacote limpa todas as informações sobre as permissões concedidas por meio dele.

  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    package_name

    Sim

    Nome do pacote a ser excluído.

    Execute o comando show packages; no cliente MaxCompute para visualizar os pacotes criados.

  • Exemplos

    Exclua o pacote datashare criado no projeto test_project_a. Comando de exemplo:

    -- Delete the package.
    drop package datashare;

Visualize pacotes

O criador visualiza os pacotes criados ou instalados em um projeto MaxCompute.

  • Sintaxe

    show packages;
  • Exemplos

    Visualize as informações sobre os pacotes criados ou instalados no projeto test_project_a. Comando de exemplo:

    -- List packages.
    show packages;

    O resultado retornado contém as seguintes informações:

    • PackageName: nome do pacote criado ou instalado.

    • CreateTime: momento da criação do pacote.

    • SourceProject: nome do projeto MaxCompute ao qual o pacote pertence.

    • InstallTime: momento da instalação do pacote.

    • Status: status atual do pacote.

    +-------------+--------------------------+
    | PackageName | CreateTime               |
    +-------------+--------------------------+
    | datashare   | 2021-12-28T18:10:39+0800 |
    +-------------+--------------------------+
    +-------------+--------------------+--------------------------+--------+
    | PackageName | SourceProject      | InstallTime              | Status |
    +-------------+--------------------+--------------------------+--------+
    | systables   | information_schema | 2020-11-24T14:11:23+0800 | OK     |
    +-------------+--------------------+--------------------------+--------+

Visualize detalhes de um pacote

O criador visualiza os detalhes de um pacote criado em um projeto MaxCompute.

  • Sintaxe

    describe package <package_name>;
  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    package_name

    Sim

    Nome do pacote.

    Execute o comando show packages; no cliente MaxCompute para visualizar os pacotes criados.

  • Exemplos

    Visualize os recursos e permissões incluídos no pacote datashare do projeto test_project_a. Comando de exemplo:

    -- View package details.
    describe package datashare;

    O resultado retornado contém as seguintes informações:

    • CreateTime: momento da criação do pacote.

    • PackageName: nome do pacote.

    • SourceProject: nome do projeto MaxCompute ao qual o pacote pertence.

    • ObjectType: tipo de um objeto no pacote.

    • ObjectName: nome de um objeto no pacote.

    • ObjectPrivileges: permissões sobre um objeto no pacote.

    • ProjectName: projeto autorizado a instalar o pacote.

    • UserLabel: rótulo do usuário.

    CreateTime:         2021-12-28T18:10:39+0800
    PackageName:        datashare
    SourceProject:      test_project_a
    
    Object List
    +--------------+------------------------------------------+------------------+
    | ObjectType   | ObjectName                               | ObjectPrivileges |
    +--------------+------------------------------------------+------------------+
    | RESOURCE     | udtf.jar                                 | Read             |
    +--------------+------------------------------------------+------------------+
    | TABLE        | sale_detail                              | Describe,Select  |
    +--------------+------------------------------------------+------------------+
    
    Allowed Project List
    +-----------------+-----------+
    | ProjectName     | UserLabel |
    +-----------------+-----------+
    | test_project_b  | 0         |
    +-----------------+-----------+

Instale um pacote

O usuário instala um pacote em um projeto MaxCompute.

  • Sintaxe

    install package <project_name>.<package_name>;
  • Precauções

    Os pacotes são expandidos durante a instalação. Após a instalação, execute o comando show packages; para listar os pacotes instalados. Para ver os recursos e permissões do pacote, execute o comando describe package <package_name>; .

  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    project_name

    Sim

    Nome do projeto MaxCompute ao qual o pacote pertence.

    Para visualizar o nome de um projeto MaxCompute, faça login no console MaxCompute. Na barra de navegação superior, selecione uma região. Em seguida, visualize o nome do projeto MaxCompute na aba Project management.

    package_name

    Sim

    Nome do pacote.

    Execute o comando show packages; no cliente MaxCompute para visualizar os pacotes criados.

  • Exemplos

    Instale o pacote datashare do projeto test_project_a no projeto test_project_b. Neste exemplo, a conta Alibaba Cloud Amy@aliyun.com é proprietária do projeto test_project_b. Comando de exemplo:

    -- Switch to the test_project_b project.
    use test_project_b; 
    -- Install the package.
    install package test_project_a.datashare;

Visualize detalhes de um pacote instalado

O usuário visualiza os detalhes de um pacote instalado em um projeto MaxCompute.

  • Sintaxe

    describe package <project_name>.<package_name>;
  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    project_name

    Sim

    Nome do projeto MaxCompute ao qual o pacote pertence.

    Para visualizar o nome de um projeto MaxCompute, faça login no console MaxCompute. Na barra de navegação superior, selecione uma região. Em seguida, visualize o nome do projeto MaxCompute na aba Project management.

    package_name

    Sim

    Nome do pacote.

    Execute o comando show packages; no cliente MaxCompute para visualizar os pacotes criados.

  • Exemplos

    Visualize os recursos e permissões no pacote datashare instalado no projeto test_project_b. Comando de exemplo:

    -- View package details.
    describe package test_project_a.datashare;

    O resultado retornado contém as seguintes informações:

    • CreateTime: momento da criação do pacote.

    • PackageName: nome do pacote.

    • SourceProject: nome do projeto MaxCompute ao qual o pacote pertence.

    • ObjectType: tipo de um objeto no pacote.

    • ObjectName: nome de um objeto no pacote.

    • ObjectPrivileges: permissões sobre um objeto no pacote.

    CreateTime:         2021-12-28T18:10:39+0800
    PackageName:        datashare
    SourceProject:      test_project_a
    
    Object List
    +--------------+------------------------------------------+------------------+
    | ObjectType   | ObjectName                               | ObjectPrivileges |
    +--------------+------------------------------------------+------------------+
    | RESOURCE     | udtf.jar                                 | Read             |
    +--------------+------------------------------------------+------------------+
    | TABLE        | sale_detail                              | Describe,Select  |
    +--------------+------------------------------------------+------------------+

Autorizar um usuário ou função a acessar um pacote

O usuário autoriza um usuário ou função a acessar um pacote no projeto MaxCompute onde ele está instalado.

O pacote instalado é um tipo de objeto independente no MaxCompute. Para acessar recursos em um pacote, é necessária a permissão Read sobre ele. Sem essa permissão, o proprietário do projeto e usuários com a função Super_Administrator ou Admin podem concedê-la usando listas de controle de acesso (ACLs). Para mais informações sobre controle de acesso baseado em ACL, consulte Controle de acesso baseado em ACL.

  • Sintaxe

    grant <actions> on package <project_name>.<package_name> to {USER|ROLE} <name>;
  • Precauções

    Após a concessão da permissão Read a um usuário ou função, o acesso aos recursos do pacote fica restrito ao projeto onde ele foi instalado. Para gerenciar permissões de pacotes de forma granular, consulte Controle de acesso para pacotes.

  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    actions

    Sim

    Permissões de operação sobre os recursos no pacote. Defina o valor como Read.

    project_name

    Sim

    Nome do projeto MaxCompute ao qual o pacote pertence.

    Para visualizar o nome de um projeto MaxCompute, faça login no console MaxCompute. Na barra de navegação superior, selecione uma região. Em seguida, visualize o nome do projeto MaxCompute na aba Project management.

    package_name

    Sim

    Nome do pacote.

    Execute o comando show packages; no cliente MaxCompute para visualizar os pacotes criados.

    name

    Sim

    Nome da conta de usuário ou função à qual conceder permissões de acesso. Só é possível especificar uma conta de usuário ou função por operação de autorização.

    Execute o comando list users; ou list roles; no cliente MaxCompute para localizar nomes de usuários ou funções.

  • Exemplos

    Neste exemplo, Bella é uma usuária RAM da conta Alibaba Cloud Amy@aliyun.com. Autorize Bella a acessar o pacote datashare. Comando de exemplo:

    -- Grant Bella access to the package.
    grant Read on package test_project_a.datashare to user RAM$Am*******n.com:Bella;

Revogar permissões de acesso a um pacote de um usuário ou função

O usuário revoga as permissões de acesso a um pacote de um usuário ou função no projeto MaxCompute onde o pacote está instalado.

  • Sintaxe

    revoke <actions> on package <project_name>.<package_name> from {USER|ROLE} <name>;
  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    actions

    Sim

    Permissões de operação sobre os recursos no pacote. Defina o valor como Read.

    project_name

    Sim

    Nome do projeto MaxCompute ao qual o pacote pertence.

    Para visualizar o nome de um projeto MaxCompute, faça login no console MaxCompute. Na barra de navegação superior, selecione uma região. Em seguida, visualize o nome do projeto MaxCompute na aba Project management.

    package_name

    Sim

    Nome do pacote.

    Execute o comando show packages; no cliente MaxCompute para visualizar os pacotes criados.

    name

    Sim

    Nome da conta de usuário ou função da qual revogar as permissões de acesso ao pacote. Só é possível especificar uma conta de usuário ou função por operação de revogação.

    Execute o comando list users; ou list roles; no cliente MaxCompute para localizar nomes de contas de usuários ou funções.

  • Exemplos

    Revogue as permissões de acesso ao pacote da usuária Bella. Comando de exemplo:

    -- Revoke the permission for Bella to access the package.
    revoke Read on package test_project_a.datashare from user RAM$Am*******n.com:Bella;

Desinstalar um pacote

O usuário desinstala um pacote de um projeto MaxCompute.

  • Sintaxe

    uninstall package <project_name>.<package_name>;
  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    project_name

    Sim

    Nome do projeto MaxCompute ao qual o pacote pertence.

    Para visualizar o nome de um projeto MaxCompute, faça login no console MaxCompute. Na barra de navegação superior, selecione uma região. Em seguida, visualize o nome do projeto MaxCompute na aba Project management.

    package_name

    Sim

    Nome do pacote.

    Execute o comando show packages; no cliente MaxCompute para visualizar os pacotes criados.

  • Exemplos

    Desinstale o pacote datashare do projeto test_project_b. Comando de exemplo:

    -- Uninstall the datashare package.
    uninstall package test_project_a.datashare;

Exemplo de uso

Neste exemplo, a conta Alibaba Cloud Bob@aliyun.com é proprietária do projeto test_project_a. A conta Alibaba Cloud Amy@aliyun.com é proprietária do projeto test_project_b. Para atender a necessidades de negócios, compartilhe o arquivo de recurso udtf.jar e a tabela sale_detail do projeto test_project_a com o projeto test_project_b. Além disso, permita que a usuária RAM Amy@aliyun.com:Bella do projeto test_project_b acesse esses recursos. Execute as etapas a seguir no cliente MaxCompute:

  1. Acesse o projeto test_project_a e crie um pacote usando a conta Alibaba Cloud Bob@aliyun.com.

    -- Switch to the test_project_a project.
    use test_project_a; 
    -- Create a package named datashare.
    create package datashare;
  2. Use a conta Alibaba Cloud Bob@aliyun.com para adicionar recursos ao pacote criado.

    -- Add resources to the package.
    add resource udtf.jar to package datashare;
    add table sale_detail to package datashare;
  3. Use a conta Alibaba Cloud Bob@aliyun.com para autorizar o projeto test_project_b a instalar o pacote.

    -- Authorize project test_project_b to install the package.
    allow project test_project_b to install package datashare;
  4. Acesse o projeto test_project_b e instale o pacote usando a conta Alibaba Cloud Amy@aliyun.com.

    -- Switch to the test_project_b project.
    use test_project_b;
    -- Install the package.
    install package test_project_a.datashare;
    -- View the list of resources in the package.
    describe package test_project_a.datashare;
    -- The following result is returned.
    CreateTime:         2021-12-28T18:10:39+0800
    PackageName:        datashare
    SourceProject:      test_project_a
    
    Object List
    +--------------+------------------------------------------+------------------+
    | ObjectType   | ObjectName                               | ObjectPrivileges |
    +--------------+------------------------------------------+------------------+
    | RESOURCE     | udtf.jar                                 | Read             |
    +--------------+------------------------------------------+------------------+
    | TABLE        | sale_detail                              | Describe,Select  |
    +--------------+------------------------------------------+------------------+
  5. Use a conta Alibaba Cloud Amy@aliyun.com para autorizar Bella a acessar o pacote.

    -- Grant Bella permission to access the package.
    grant Read on package test_project_a.datashare to user RAM$Am*******n.com:Bella;
  6. Bella lê dados da tabela sale_detail.

    SELECT * FROM test_project_a.sale_detail;

Referências