Todos os produtos
Search
Central de documentação

MaxCompute:Acesso a recursos entre projetos com base em packages

Última atualização: Aug 21, 2026

O acesso direto a recursos entre projetos (incluindo contas diferentes) não é permitido se você não for membro do projeto proprietário. Para resolver isso, o MaxCompute oferece um mecanismo de controle de acesso baseado em packages, que agrupa recursos e permissões em um package instalável por outros projetos para permitir o acesso entre eles. Este tópico explica como utilizar o controle de acesso por packages 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) do Projeto A com outros projetos dessa mesma conta ou com projetos de outra conta Alibaba Cloud. É possível compartilhar esses recursos com outros projetos usando um dos seguintes métodos:

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

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

    Esse mecanismo permite compartilhar dados e recursos entre projetos. O proprietário do Projeto A agrupa os recursos necessários aos outros projetos, juntamente com as permissões de operação sobre eles, e autoriza os proprietários dos demais projetos a instalar o package. Após a instalação, os proprietários dos outros projetos podem decidir se autorizam seus usuários a acessar os recursos contidos no package. A figura a seguir ilustra o funcionamento do mecanismo de controle de acesso baseado em packages.

    PackageUsage process

A figura anterior mostra que o mecanismo de controle de acesso baseado em packages envolve duas entidades: criador do package e usuário do package. A tabela a seguir descreve as informações sobre 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 package

O projeto ao qual o criador do package pertence fornece os recursos a serem compartilhados. O criador do package agrupa os recursos do projeto que precisam ser compartilhados e as permissões de operação sobre esses recursos, além de autorizar os usuários do package a instalá-lo e acessar seu conteúdo.

Crie um package

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

Add resources to a package

Remove resources from a package

Authorize a package to use a package

Revoke access permissions on a package from a project

Exclua um package

Visualize packages

Visualize os detalhes de um package

Usuário do package

O projeto ao qual o usuário do package pertence acessa os recursos contidos nele. Após instalar o package criado pelo criador, o usuário do package pode acessar diretamente os recursos incluídos.

Instale um package

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

Visualize os detalhes de um package instalado

Authorize a user or role to access a package

Uninstall a package

Limites

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

  • Um package aceita no máximo 1.000 recursos.

  • É possível instalar um package em até 100.000 projetos MaxCompute.

  • Um projeto MaxCompute pode ter no máximo 100 packages instalados provenientes de outro projeto MaxCompute.

  • Cada projeto MaxCompute permite a criação de até 100.000 packages.

  • O limite de instalação é de 100.000 packages por projeto MaxCompute.

Criar um package

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

  • Sintaxe

    create package <package_name>;
  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    package_name

    Sim

    Nome do package, que deve ser único 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; na MaxCompute client para visualizar todos os packages 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 desse projeto. Crie um package. Comandos de exemplo:

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

Adicionar recursos a um package

O criador do package adiciona ao package criado os recursos necessários aos usuários do package.

  • Sintaxe

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

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

  • Precauções

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

  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    object_type

    Sim

    Tipo do objeto a ser adicionado ao package. Especifique apenas um tipo de objeto por vez.

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

    object_name

    Sim

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

    Nota
    • É possível usar o caractere curinga asterisco () ao adicionar recursos. Por exemplo, add table to package package_name; adiciona todas as tabelas ao package.

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

    package_name

    Sim

    Nome do package.

    Execute o comando show packages; na MaxCompute client para visualizar todos os packages criados.

    privileges

    Não

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

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

  • Exemplos

    Adicione o arquivo de recurso udtf.jar e as tabelas sale_detail e bank_data do projeto test_project_a ao package 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 package

O criador do package remove recursos do package 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 package. Remova apenas um objeto por vez.

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

    object_name

    Sim

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

    package_name

    Sim

    Nome do package.

    Execute o comando show packages; na MaxCompute client para visualizar todos os packages criados.

  • Exemplos

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

    --Remove a resource from a package.
    remove Table sale_detail from package datashare;

Autorizar um projeto a usar um package

O criador do package em um projeto autoriza outros projetos a usar o package criado.

  • 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 que você deseja autorizar a usar o package.

    Faça login no MaxCompute console, selecione uma região no canto superior esquerdo e localize o nome do projeto na aba Projects.

    package_name

    Sim

    Nome do package.

    Execute o comando show packages; na MaxCompute client para visualizar todos os packages 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 que o usuário do package pode acessar. O projeto MaxCompute autorizado terá acesso apenas aos dados do package cujo nível de sensibilidade seja igual ou inferior ao valor especificado em number. Se não especificado, o nível de sensibilidade padrão é 0.

    Para mais informações sobre controle de acesso baseado em rótulos, consulte Label-based access control.

  • Exemplos

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

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

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

O criador do package revoga as permissões de acesso a um package de um projeto.

  • 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 você deseja revogar as permissões de acesso ao package.

    Faça login no MaxCompute console, selecione uma região no canto superior esquerdo e localize o nome do projeto na aba Projects.

    package_name

    Sim

    Nome do package.

    Execute o comando show packages; na MaxCompute client para visualizar todos os packages criados.

  • Exemplos

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

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

Excluir um package

O criador do package exclui um package.

  • Sintaxe

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

    A exclusão de um package remove 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 package a ser excluído.

    Execute o comando show packages; na MaxCompute client para visualizar todos os packages criados.

  • Exemplos

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

    -- Drop the package.
    drop package datashare;

Visualizar packages

O criador do package visualiza os packages criados ou instalados em um projeto MaxCompute.

  • Sintaxe

    show packages;
  • Exemplos

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

    -- View a list of packages.
    show packages;

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

    • PackageName: nome do package criado ou instalado.

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

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

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

    • Status: status atual do package.

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

Visualizar detalhes de um package

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

  • Sintaxe

    describe package <package_name>;
  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    package_name

    Sim

    Nome do package.

    Execute o comando show packages; na MaxCompute client para visualizar todos os packages criados.

  • Exemplos

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

    -- View the details of the datashare package.
    describe package datashare;

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

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

    • PackageName: nome do package.

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

    • ObjectType: tipo de um objeto no package.

    • ObjectName: nome de um objeto no package.

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

    • ProjectName: projeto autorizado a instalar o package.

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

Instalar um package

O usuário do package instala um package em um projeto MaxCompute.

  • Sintaxe

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

    O package é expandido durante a instalação. Após a instalação, execute o comando show packages; para visualizar o package instalado e o comando describe package <package_name>; para verificar seus recursos e permissões.

  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    project_name

    Sim

    Nome do projeto MaxCompute ao qual o package pertence.

    Faça login no MaxCompute console, selecione uma região no canto superior esquerdo e localize o nome do projeto na aba Projects.

    package_name

    Sim

    Nome do package.

    Execute o comando show packages; na MaxCompute client para visualizar todos os packages criados.

  • Exemplos

    Instale o package 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;

Visualizar detalhes de um package instalado

O usuário do package visualiza os detalhes de um package 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 package pertence.

    Faça login no MaxCompute console, selecione uma região no canto superior esquerdo e localize o nome do projeto na aba Projects.

    package_name

    Sim

    Nome do package.

    Execute o comando show packages; na MaxCompute client para visualizar todos os packages criados.

  • Exemplos

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

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

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

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

    • PackageName: nome do package.

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

    • ObjectType: tipo de um objeto no package.

    • ObjectName: nome de um objeto no package.

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

    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 package

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

O package instalado é um tipo de objeto independente no MaxCompute. Para acessar os recursos de um package, é necessária a permissão Read sobre ele. Caso não possua essa permissão, o proprietário do projeto ou 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 ACL-based access control.

  • 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 package será permitido apenas no projeto onde o package foi instalado. Para gerenciar permissões de packages de forma granular, consulte Access control for packages.

  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    actions

    Sim

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

    project_name

    Sim

    Nome do projeto MaxCompute ao qual o package pertence.

    Faça login no MaxCompute console, selecione uma região no canto superior esquerdo e localize o nome do projeto na aba Projects.

    package_name

    Sim

    Nome do package.

    Execute o comando show packages; na MaxCompute client para visualizar todos os packages criados.

    name

    Sim

    Nome da conta de usuário ou função à qual você deseja conceder permissões de acesso. Especifique apenas uma conta de usuário ou função por operação de autorização.

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

  • Exemplos

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

    -- Grant Bella permission to access the package.
    grant Read on package test_project_a.datashare to user RAM$Amy@aliyun.com:Bella;

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

O usuário do package revoga as permissões de acesso a um package de um usuário ou função no projeto MaxCompute onde o package 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 package. Defina o valor como Read.

    project_name

    Sim

    Nome do projeto MaxCompute ao qual o package pertence.

    Faça login no MaxCompute console, selecione uma região no canto superior esquerdo e localize o nome do projeto na aba Projects.

    package_name

    Sim

    Nome do package.

    Execute o comando show packages; na MaxCompute client para visualizar todos os packages criados.

    name

    Sim

    Nome da conta de usuário ou função da qual você deseja revogar as permissões de acesso ao package. Especifique apenas uma conta de usuário ou função por operação de revogação.

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

  • Exemplos

    Revogue as permissões de acesso ao package de Bella. Comando de exemplo:

     -- Revoke access to the package from the user RAM$Amy@aliyun.com:Bella.
    revoke Read on package test_project_a.datashare from user RAM$Amy@aliyun.com:Bella;

Desinstalar um package

O usuário do package desinstala um package instalado em 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 package pertence.

    Faça login no MaxCompute console, selecione uma região no canto superior esquerdo e localize o nome do projeto na aba Projects.

    package_name

    Sim

    Nome do package.

    Execute o comando show packages; na MaxCompute client para visualizar todos os packages criados.

  • Exemplos

    Desinstale o package datashare instalado no projeto test_project_b. Comando de exemplo:

    -- Uninstall the 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, você deseja compartilhar 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, a usuária RAM Amy@aliyun.com:Bella do projeto test_project_b deve ter acesso a esses recursos. Execute as etapas a seguir no cliente MaxCompute:

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

    -- Switch to the test_project_a project.
    use test_project_a; 
    -- Create a package.
    create package datashare;
  2. Use a conta Alibaba Cloud Bob@aliyun.com para adicionar recursos ao package 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 package.

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

    -- Switch to project test_project_b.
    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 package.

    -- Grant Bella permission to access the package.
    grant Read on package test_project_a.datashare to user RAM$Amy@aliyun.com:Bella; 
  6. Bella consulta a tabela sale_detail.

    SELECT * FROM test_project_a.sale_detail;

Referências