Todos os produtos
Search
Central de documentação

MaxCompute:Proteção de dados do projeto

Última atualização: Sep 16, 2026

Usuários com acesso a vários projetos podem gerar riscos de segurança ao mover dados entre eles. O MaxCompute oferece o recurso de proteção de dados do projeto para controlar a saída de dados e ajudar a proteger as informações do seu projeto. Este tópico descreve o recurso de proteção de dados do projeto e suas políticas para gerenciar o fluxo de saída de dados.

Contexto

Algumas empresas possuem requisitos rigorosos de segurança de dados e adotam diversas medidas para evitar vazamentos de informações sensíveis. Por exemplo, os funcionários só podem realizar suas tarefas no local de trabalho, sem permissão para levar materiais para fora do escritório, e todas as portas USB dos computadores ficam desativadas. Nesse cenário, pode ocorrer um problema de segurança caso um usuário transfira dados de um projeto para outro.

Suponha que a usuária Alice tenha permissões de acesso aos projetos Project1 e Project2. Ela possui a permissão Select na tabela table1 no Project1 e a permissão CreateTable no Project2. Se o recurso de proteção de dados do projeto estiver desativado, Alice poderá executar a instrução a seguir para transferir dados da table1 do Project1 para o Project2. Essa operação gera riscos de vazamento de dados sensíveis.

CREATE TABLE project2.table2 AS SELECT * FROM project1.table1;

O exemplo anterior demonstra que um usuário com permissões de acesso simultâneas a vários projetos do MaxCompute consegue transferir dados entre esses projetos. Para mitigar esse risco, o MaxCompute disponibiliza o recurso de proteção de dados do projeto. Caso um projeto contenha dados altamente sensíveis, o proprietário deve ativar esse recurso.

Por padrão, a proteção de dados do projeto vem desativada. O proprietário do projeto pode ativá-la executando o comando set projectProtection=true;. Após a ativação, o fluxo de dados passa a ser restrito: os dados só podem entrar no projeto, mas não sair dele.

Precauções

Após ativar a proteção de dados do projeto, observe os pontos a seguir:

  • Operações de acesso a dados entre projetos são bloqueadas por violarem as regras de proteção de dados. Para criar exceções, como permitir que dados específicos saiam para outros projetos, o MaxCompute oferece duas estratégias: Data outflow policy 1: Configure an exception policy e Data outflow policy 2: Configure a trusted project.

  • Esse recurso controla o fluxo de dados, mas não as permissões de acesso a eles. O controle de fluxo só é efetivo se os usuários já possuírem permissões de acesso aos dados.

  • No MaxCompute, o recurso de package-based resource sharing across projects é independente da proteção de dados do projeto. Os efeitos desses recursos são mutuamente exclusivos, e o compartilhamento de recursos via pacote tem precedência sobre a proteção de dados do projeto. Por exemplo, se um usuário no Projeto B receber permissões de acesso a um objeto no Projeto A por meio de compartilhamento de recursos via pacote, a proteção de dados do projeto não será aplicada a esse objeto.

Política de saída de dados 1: Configurar uma política de exceção

Caso sejam necessárias operações de acesso a dados entre projetos, o proprietário do projeto deve configurar previamente uma política de exceção. Isso permite que um usuário específico transfira dados de um objeto determinado do projeto atual para um projeto de destino definido. Com a política de exceção configurada, a transferência de dados do objeto para o projeto especificado ocorre mesmo com a proteção de dados do projeto ativada.

Configuração

MaxCompute client

Configure a política de exceção no momento em que ativar a proteção de dados do projeto. Após a configuração, execute o comando SHOW SecurityConfiguration; para visualizar os detalhes da política. Utilize o comando abaixo para definir uma política de exceção:

SET ProjectProtection=true with exception <policyfile>;

policyfile refere-se ao arquivo de Política de Exceção, que deve ser salvo no formato TXT dentro do diretório bin do caminho de instalação do cliente MaxCompute. O formato do conteúdo segue o modelo abaixo.

 {
 "Version": "1",
 "Statement":
 [{
 "Effect":"Allow",
 "Principal":"<Principal>",
 "Action":["odps:<Action1>[, <Action2>, ...]"],
 "Resource":"acs:odps:*:<Resource>",
 "Condition":{
 "StringEquals": {
 "odps:TaskType":["<Tasktype>"]
 }
 }
 }]
 }

Parâmetro

Descrição

Effect

Define se a saída de dados é permitida. Defina o valor como Allow. Esse valor indica que a saída de dados está autorizada.

Principal

Conta Alibaba Cloud ou usuário RAM autorizado a transferir dados para fora do projeto.

Action

Operação de saída de dados permitida. Para obter informações sobre as ações aplicáveis a diferentes tipos de objetos, consulte MaxCompute permissions.

Resource

Projeto e objeto dos quais a saída de dados é permitida. Formato: `projects//{tables

resources

functions

instances}/`. Para mais detalhes sobre os valores de objetos, consulte MaxCompute permissions.

Tasktype

Tipo de job no qual a saída de dados é permitida. Valores válidos: DT, SQL e MapReduce. DT refere-se ao Tunnel.

MaxCompute console

  1. Faça login no MaxCompute console e selecione uma região no canto superior esquerdo.

  2. No painel de navegação à esquerda, escolha Manage Configurations > Projects.

  3. Na página Projects, clique em Manage na coluna Actions do projeto desejado.

  4. Na página Project Settings, clique na aba Parameter Configuration.

  5. Na seção Permission Properties, clique em Edit.

  6. Ative a opção Project Data Protection, clique em Exception à direita e insira a política de exceção na caixa de diálogo Set Exception.

     {
     "Version": "1",
     "Statement":
     [{
     "Effect":"Allow",
     "Principal":"<Principal>",
     "Action":["odps:<Action1>[, <Action2>, ...]"],
     "Resource":"acs:odps:*:<Resource>",
     "Condition":{
     "StringEquals": {
     "odps:TaskType":["<Tasktype>"]
     }
     }
     }]
     }

    Parâmetro

    Descrição

    Effect

    Define se a saída de dados é permitida. Defina o valor como Allow. Esse valor indica que a saída de dados está autorizada.

    Principal

    Conta Alibaba Cloud ou usuário RAM autorizado a transferir dados para fora do projeto.

    Action

    Operação de saída de dados permitida. Para obter informações sobre as ações aplicáveis a diferentes tipos de objetos, consulte MaxCompute permissions.

    Resource

    Projeto e objeto dos quais a saída de dados é permitida. Formato: `projects//{tables

    resources

    functions

    instances}/`. Para mais detalhes sobre os valores de objetos, consulte MaxCompute permissions.

    Tasktype

    Tipo de job no qual a saída de dados é permitida. Valores válidos: DT, SQL e MapReduce. DT refere-se ao Tunnel.

Exemplo

-- Enable project data protection and set an exception policy. 
-- The policy_file is stored in the bin directory of the MaxCompute client installation path.
set ProjectProtection=true with exception policy_file; 

-- The following code shows the content of the policy_file.
{
 "Version": "1",
 "Statement":
 [{
 "Effect":"Allow",
 "Principal":"ALIYUN$Alice@aliyun.com",
 "Action":["odps:Select"],
 "Resource":"acs:odps:*:projects/project_test/tables/table_test",
 "Condition":{
 "StringEquals": {
 "odps:TaskType":["DT", "SQL"]
 }
 }
 }]
 }

O exemplo acima mostra que Alice tem permissão para executar a operação Select na tabela project_test.table_test dentro de um job SQL, permitindo a transferência de dados do projeto project_test para outros projetos.

Nota

Mesmo com a política de exceção configurada, Alice não conseguirá transferir dados para fora do projeto se não possuir a permissão Select na tabela project_test.table_test.

Considerações

Este método pode causar vazamentos de dados devido a um erro TOCTOU (time-of-check to time-of-use), também conhecido como condição de corrida:

  • Descrição do problema

    O exemplo a seguir ilustra como um usuário transfere dados para fora de um projeto.

    1. Fase TOC: O Usuário A solicita ao proprietário do projeto a exportação dos dados da tabela t1. Após confirmar que a tabela t1 não contém dados sensíveis, o proprietário configura uma política de exceção autorizando o Usuário A a exportar esses dados.

    2. Antes do início da fase TOU, outros usuários gravam dados sensíveis na tabela t1.

    3. Fase TOU: O Usuário A exporta os dados da tabela t1. No entanto, os dados exportados incluem as informações sensíveis inseridas pelos outros usuários.

  • Solução

    Para evitar essa situação, recomenda-se que o proprietário do projeto garanta que nenhum outro usuário possa executar a ação Update para modificar a tabela, nem as ações Drop e CreateTable para excluir a tabela e criar outra com o mesmo nome. No exemplo anterior, sugere-se que o proprietário crie um snapshot da tabela t1 durante a fase TOC e utilize esse snapshot para configurar a política de exceção. Além disso, certifique-se de que nenhum outro usuário tenha a função Admin atribuída.

Política de saída de dados 2: Configurar um projeto confiável

Se a proteção de dados do projeto estiver ativada no projeto atual, mas houver necessidade de saída de dados, o proprietário pode configurar o projeto de destino como um projeto confiável. Dessa forma, os dados poderão ser transferidos para esse projeto confiável. Quando vários projetos são definidos como confiáveis entre si, eles formam um grupo de projetos confiáveis, e a transferência de dados ocorre exclusivamente dentro desse grupo.

Gerenciamento

O proprietário do projeto pode executar os comandos abaixo para gerenciar projetos confiáveis:

  • Para adicionar um projeto confiável ao projeto atual, execute o seguinte comando:

     add trustedproject <project_name>; 
  • Para remover um projeto confiável do projeto atual, execute o seguinte comando:

     remove trustedproject <project_name>; 
  • Para listar todos os projetos confiáveis do projeto atual, execute o seguinte comando:

     list trustedprojects; 

Melhores práticas

Para impedir estritamente a saída de dados de um projeto, após ativar a proteção com o comando set projectProtection=true;, verifique também as configurações a seguir:

  • Execute o comando list trustedprojects; para garantir que não haja projetos confiáveis adicionados. Caso existam, avalie os riscos potenciais e utilize o comando remove trustedproject <project_name>; para remover aqueles que forem desnecessários.

  • Utilize o comando show packages; para assegurar que nenhum pacote esteja sendo usado para compartilhar dados. Se houver pacotes, confirme que não contêm dados sensíveis ou execute o comando delete package <package_name>; para eliminar os desnecessários.

  • A ativação da proteção de dados do projeto impede a exportação indevida de informações. O uso desse recurso assemelha-se ao processo de migração de dados entre projetos, abrangendo os seguintes cenários:

    • create table <table_in_another_project> as select * from <table_in_a_protected_project>

    • insert overwrite table <table_in_another_project> select * from <table_in_a_protected_project>

    • Gravação de dados em tabelas de outro projeto por meio de jobs Spark, MapReduce, Graph, Proxima CE e Machine Learning Platform for AI (PAI).

    • Execução do comando Tunnel download para baixar dados de tabelas do MaxCompute para sua máquina local. É possível chamar o SDK Tunnel ou utilizar o Tunnel por meio de um driver Java Database Connectivity (JDBC).

    • Uso do comando clone table para copiar dados de uma tabela para outra em um projeto diferente.

    • Chamada de uma função definida pelo usuário (UDF) para gravar dados de tabelas em outros projetos.

    • Invocação de uma UDF para escrever dados de tabelas em tabelas externas do MaxCompute.

  • Tanto a proteção de dados do projeto quanto o controle de acesso Download podem ser usados para baixar dados de um projeto. Para realizar o download, verifique se você possui as permissões adequadas no projeto.

    • Com a proteção de dados do projeto e o controle de acesso Download ativados, o download de dados exige as permissões Download e Describe no projeto. Uma autenticação Describe é acionada antes da execução do comando Tunnel download.

    • Quando a proteção de dados do projeto está ativada e o controle de acesso Download desativado, o download requer a permissão Select no projeto e a configuração de uma política de exceção para o comportamento de download.

    • Se a proteção de dados do projeto estiver desativada e o controle de acesso Download ativado, bastam as permissões Download e Describe no projeto para realizar o download.

    • Com ambos os recursos desativados (proteção de dados do projeto e controle de acesso Download), o download de dados é permitido mediante a posse da permissão Select no projeto.