O controle de download permite gerenciar quem pode exportar dados do projeto MaxCompute por meio de comandos Tunnel. Sem esse recurso, qualquer usuário ou função no projeto pode baixar tabelas ou instâncias livremente, o que gera risco de exfiltração de dados. Após a ativação, apenas usuários ou funções com permissões explícitas de download podem exportar dados.
Como funciona
Por padrão, o controle de download vem desativado em novos projetos. Após ativá-lo no nível do projeto, todas as operações de download baseadas em Tunnel passam a exigir permissões explícitas.
A tabela a seguir mostra quais objetos aceitam permissões de download e como autorizá-los:
|
Tipo de objeto |
Valores válidos |
Suporte a curinga |
|
|
Nome da tabela ou visualização |
Apenas baseado em função ( |
|
|
Nome da instância (igual ao ID da instância) |
Sem suporte para curingas |
Dois modelos de autorização estão disponíveis:
|
Modelo |
Como funciona |
Mais indicado para |
|
Autorização de usuário único |
Concede permissões de download diretamente a um usuário em tabelas ou instâncias específicas |
Acesso direcionado a usuários individuais |
|
Autorização baseada em função |
Concede permissões de download a uma função e, em seguida, atribui essa função a vários usuários |
Gerenciar acesso de grupos; aceita curingas ( |
Limites e observações de uso
Limites:
A autorização se aplica somente a sujeitos (usuários ou funções) e objetos já existentes. Não é possível pré-autorizar sujeitos ou objetos futuros.
Ao conceder permissões diretamente a um usuário, não há suporte para curingas (
*) nos nomes dos objetos. Essa restrição evita concessões amplas e não intencionais de acesso. Utilize autorização baseada em função quando precisar de padrões com curingas.
Observações de uso:
Quando um objeto é excluído, o MaxCompute revoga automaticamente todas as permissões de download associadas a ele.
Se um usuário for removido de um projeto, suas permissões serão mantidas. Caso o usuário seja readicionado, essas permissões voltarão a ficar ativas. Para limpar permissões residuais, consulte Limpar completamente as informações de permissão residual de um usuário removido.
Ativar o controle de download
Permissões necessárias: Proprietário do projeto ou função Super_Administrator.
Execute o seguinte comando no nível do projeto:
setproject odps.security.enabledownloadprivilege=true;
Para desativar o controle de download:
setproject odps.security.enabledownloadprivilege=false;
Conceder e revogar permissões de download
Permissões necessárias: Para conceder ou revogar permissões em um objeto, consulte a coluna Authorized by em Permissões.
Execute todos os comandos no cliente MaxCompute, no MaxCompute Studio ou no console DataWorks.
Fluxo de trabalho
Tanto para autorização de usuário único quanto para autorização baseada em função, siga esta sequência:
Confirme se o usuário ou a função é membro do projeto. Execute
list users;oulist roles;no cliente MaxCompute para consultar os nomes. Para adicionar usuários ou funções, consulte Planejamento e gerenciamento de usuários ou Planejamento de funções.Verifique os nomes das tabelas ou instâncias a serem controladas. Execute
show tables;oushow instances;para listar os objetos disponíveis.Execute o comando
grantourevoke.Verifique o resultado com
show grantsoudescribe role.
Sintaxe
Conceder permissões de download:
grant Download on <object_type> <object_name> to <subject_type> <subject_name>;
Revogar permissões de download:
revoke Download on <object_type> <object_name> from <subject_type> <subject_name>;
Parâmetros
|
Parâmetro |
Obrigatório |
Descrição |
|
|
Sim |
Tipo do objeto. Valores válidos: |
|
|
Sim |
Nome da tabela, visualização ou instância. Na autorização baseada em função, há suporte para curingas. Por exemplo, |
|
|
Sim |
Tipo do sujeito. Valores válidos: |
|
|
Sim |
Nome do usuário ou da função. Um sujeito por comando. Use |
Exemplos
Os exemplos a seguir utilizam esta configuração: username@example.com é proprietário de test_project_a. Allen, Tom e Alice são usuários RAM dessa conta. O controle de download está ativado para o projeto.
Exemplo 1: Conceder permissões de download a um usuário RAM
Adicione Allen ao projeto e conceda permissões de download na tabela sale_detail:
-- Switch to the project.
use test_project_a;
-- Add Allen as a project member.
add user RAM$username@example.com:Allen;
-- Grant Allen download permissions on sale_detail.
grant Download on table sale_detail to USER RAM$username@example.com:Allen;
-- Verify Allen's permissions.
show grants for RAM$username@example.com:Allen;
Saída esperada:
Authorization Type: ACL
[user/RAM$username@example.com:Allen]
A projects/test_project_a/tables/sale_detail: Download
Exemplo 2: Revogar permissões de download de um usuário RAM
Revogue as permissões concedidas no Exemplo 1:
-- Switch to the project.
use test_project_a;
-- Revoke Allen's download permissions.
revoke Download on table sale_detail from USER RAM$username@example.com:Allen;
-- Verify that permissions are removed.
show grants for RAM$username@example.com:Allen;
Exemplo 3: Conceder permissões de download a vários usuários por meio de uma função
Conceda a Alice e Tom permissões de download em todas as tabelas cujos nomes começam com tb_:
-- Switch to the project.
use test_project_a;
-- Add Alice and Tom as project members.
add user RAM$username@example.com:Alice;
add user RAM$username@example.com:Tom;
-- Create a role.
create role Worker;
-- Assign the role to Alice and Tom.
grant Worker TO RAM$username@example.com:Alice;
grant Worker TO RAM$username@example.com:Tom;
-- Grant the Worker role download permissions on all tb_* tables.
grant Download on table tb_* to ROLE Worker;
-- Verify the role's permissions.
describe role Worker;
Saída esperada:
Authorization Type: Policy
[role/worker]
A projects/test_project_a/tables/tb_*: Download
Exemplo 4: Revogar permissões de download baseadas em função
Revogue as permissões concedidas no Exemplo 3 de Alice e Tom:
-- Switch to the project.
use test_project_a;
-- Remove the Worker role from Alice and Tom.
revoke Worker from RAM$username@example.com:Alice;
revoke Worker from RAM$username@example.com:Tom;
-- Verify that Alice's permissions no longer include download access.
show grants for RAM$username@example.com:Alice;