Este tutorial demonstra como usar o Data Lake Formation (DLF) e o E-MapReduce (EMR) para aplicar controle de acesso granular baseado em funções em um data lake com múltiplos motores. O processo abrange permissões nos níveis de banco de dados, tabela e coluna.
Conceitos principais
DLF Catalog: Entidade de nível superior na arquitetura de metadados do DLF. Um catalog agrupa bancos de dados e tabelas, funcionando como limite de permissão. Para mais informações, consulte Data Catalog.
DLF data permissions: Sistema nativo de controle de acesso do DLF que oferece controle granular em quatro dimensões: bancos de dados, tabelas, colunas e funções. Para mais informações, consulte Overview.
EMR: Alibaba Cloud E-MapReduce, uma plataforma gerenciada de big data. Para mais informações, consulte What is EMR on ECS?.
Cenário
Uma empresa opera um cluster EMR com vários motores de consulta (Hive, Spark, Presto e Impala) e precisa de um sistema de permissões unificado. Esse sistema deve aplicar regras de acesso consistentes para todos os usuários em todos os motores.
A tabela a seguir apresenta as quatro funções deste cenário e as permissões necessárias para cada uma:
|
Função |
Usuário RAM |
Escopo |
Permissões |
|
Superadministrador |
|
Todos os bancos de dados e tabelas |
Acesso total; pode conceder permissões a qualquer usuário |
|
Administrador de dados do Negócio A |
|
|
Acesso total; pode conceder permissões de |
|
Desenvolvedor de dados do Negócio A |
|
|
Acesso de leitura e escrita |
|
Analista de dados do Negócio A |
|
|
Acesso de leitura a colunas específicas |
Pré-requisitos
Antes de começar, verifique se você possui:
Uma conta Alibaba Cloud com permissões para criar clusters EMR e usuários RAM
Familiaridade com HiveQL e a CLI Beeline
Etapa 1: Criar um cluster EMR com metadados DLF
Faça login no console do E-MapReduce.
-
Crie um cluster EMR com as seguintes configurações:
Configuração
Valor
Business scenario
Data Lake
Optional services
Selecione pelo menos Hive e DLF-Auth
Metadata
DLF Unified Metadata
DLF Catalog
Selecione um catalog existente ou crie um novo. Este tutorial utiliza
catalog_test. Conclua as configurações restantes e crie o cluster.
Caso já possua um cluster EMR sem o componente DLF-Auth, adicione-o pela opção Add Service na página de gerenciamento do cluster. Se o cluster utilizar metadados Hive não conectados ao DLF, migre-os primeiro. Para assistência na migração, entre em contato com o suporte pelo grupo DingTalk 33719678 .
Etapa 2: Inicializar bancos de dados e tabelas
Faça login no cluster EMR. Para obter instruções, consulte Log on to a cluster.
-
Conecte-se ao HiveServer2 usando o Beeline:
beeline -u jdbc:hive2://<primary-node-name>:10000 -
Execute as instruções HiveQL a seguir para criar os bancos de dados, as tabelas e os dados de teste:
-- Create databases and tables CREATE DATABASE db_a; CREATE TABLE db_a.table1 (col1 STRING, col2 STRING, col3 STRING); CREATE TABLE db_a.table2 (col1 STRING, col2 STRING, col3 STRING); CREATE DATABASE db_b; CREATE TABLE db_b.table1 (col1 STRING, col2 STRING, col3 STRING); -- Insert test data INSERT OVERWRITE TABLE db_a.table1 VALUES ('1','aliyun','emrA1'), ('2','aliyun','dlfA1'); INSERT OVERWRITE TABLE db_a.table2 VALUES ('1','aliyun','emrA2'), ('2','aliyun','dlfA2'); INSERT OVERWRITE TABLE db_b.table1 VALUES ('1','aliyun','emrB1'), ('2','aliyun','dlfB1');
Etapa 3: Criar usuários RAM para cada função
No console do RAM, crie os seguintes usuários RAM:
|
Função |
Usuário RAM |
|
Superadministrador |
|
|
Administrador de dados do Negócio A |
|
|
Desenvolvedor de dados do Negócio A |
|
|
Analista de dados do Negócio A |
|
Etapa 4: Ativar o controle de acesso
Siga as duas etapas abaixo para ativar o controle de acesso no cluster:
Ative o DLF-Auth no cluster EMR. Para obter instruções, consulte DLF-Auth.
Ative o controle de permissões para o catalog no DLF. Para obter instruções, consulte Configure permissions.
Em ambientes de produção, ative a autenticação LDAP para verificar identidades de usuários. Este tutorial não aborda a autenticação LDAP; portanto, nenhuma senha é necessária ao conectar-se com o Beeline.
Etapa 5: Conceder acesso total ao superadministrador
Permissões necessárias: Proprietário da conta Alibaba Cloud ou usuário com as políticas AliyunDLFFullAccess e AliyunRAMReadOnlyAccess.
Faça login no console do Data Lake Formation.
No painel de navegação à esquerda, escolha Data Permission > Role.
Na função admin, adicione
dlf_data_admin. Essa ação concede ao usuário acesso administrativo a todos os dados no DLF, incluindo a capacidade de conceder permissões a outros usuários.Para permitir que
dlf_data_admingerencie permissões de usuários RAM no console DLF, anexe as seguintes políticas no console do RAM: AliyunDLFFullAccess e AliyunRAMReadOnlyAccess.-
Verifique se
dlf_data_adminconsegue acessar todos os bancos de dados. Conecte-se ao Hive comodlf_data_admin:beeline -u jdbc:hive2://<primary-node-name>:10000 -n dlf_data_adminExecute as seguintes consultas:
SELECT * FROM db_a.table1; SELECT * FROM db_b.table1;Ambas as consultas devem ser executadas com sucesso. O superadministrador tem acesso a todos os bancos de dados e tabelas.
Etapa 6: Conceder ao administrador de dados do Negócio A acesso ao db_a
Permissões necessárias: Faça login como dlf_data_admin (superadministrador).
Faça login no console do Data Lake Formation.
No painel de navegação à esquerda, escolha Data Permission > Data Permissions e clique em Add Permission.
-
Preencha os seguintes campos:
Campo
Valor
Principal type
RAM User/Role
Choose principal
dlf_dba_adminResources
Resource Authorization
Select catalog
catalog_testDatabase
db_aDatabase – Data permission
ALL
Database – Granted permission
ALL
All objects in database – Data permission
ALL
All objects in database – Granted permission
ALL
Clique em OK.
Para permitir que
dlf_dba_admingerencie permissões de outros usuários RAM no console DLF, anexe as seguintes políticas no console do RAM: AliyunDLFFullAccess e AliyunRAMReadOnlyAccess.-
Verifique as permissões. Conecte-se ao Hive como
dlf_dba_admin:beeline -u jdbc:hive2://<primary-node-name>:10000 -n dlf_dba_adminExecute as seguintes consultas:
SELECT * FROM db_a.table1; -- Expected: success SELECT * FROM db_b.table1; -- Expected: permission deniedA primeira consulta é bem-sucedida porque
dlf_dba_admintem acesso total adb_a. A segunda consulta falha porquedlf_dba_adminnão possui acesso adb_b.
Etapa 7: Conceder ao desenvolvedor de dados do Negócio A acesso ao db_a
Permissões necessárias: Faça login como dlf_dba_admin (administrador de dados do Negócio A).
Faça login no console do Data Lake Formation.
No painel de navegação à esquerda, escolha Data Permission > Data Permissions e clique em Add Permission.
-
Preencha os seguintes campos:
Campo
Valor
Principal type
RAM User/Role
Choose principal
dlf_dba_devResources
Resource Authorization
Select catalog
catalog_testDatabase
db_aDatabase – Data permission
ALL
Database – Granted permission
ALL
All objects in database – Data permission
ALL
All objects in database – Granted permission
ALL
Clique em OK.
-
Verifique as permissões. Conecte-se ao Hive como
dlf_dba_dev:beeline -u jdbc:hive2://<primary-node-name>:10000 -n dlf_dba_devExecute as seguintes consultas:
SELECT * FROM db_a.table1; -- Expected: success INSERT INTO TABLE db_a.table1 VALUES ('3','aliyun','emrA1'), ('4','aliyun','dlfA1'); -- Expected: success SELECT * FROM db_b.table1; -- Expected: permission denied INSERT INTO TABLE db_b.table1 VALUES ('3','aliyun','emrA1'), ('4','aliyun','dlfA1'); -- Expected: permission deniedAs consultas em
db_asão bem-sucedidas. As consultas emdb_bfalham porquedlf_dba_devtem acesso apenas adb_a.
Etapa 8: Conceder ao analista de dados do Negócio A acesso no nível de coluna
Permissões necessárias: Faça login como dlf_dba_admin (administrador de dados do Negócio A).
Faça login no console do Data Lake Formation.
No painel de navegação à esquerda, escolha Data Permission > Data Permissions e clique em Add Permission.
-
Preencha os seguintes campos:
Campo
Valor
Principal type
RAM User/Role
Choose principal
dlf_dba_analystResources
Resource Authorization
Resource type
Column
Select catalog
catalog_testSelect database
db_aSelect table
table1DataColumn – Data permission
ALL
Clique em OK.
-
Verifique as permissões. Conecte-se ao Hive como
dlf_dba_analyst:beeline -u jdbc:hive2://<primary-node-name>:10000 -n dlf_dba_analystExecute as seguintes consultas:
SELECT col1, col2 FROM db_a.table1; -- Expected: success SELECT * FROM db_a.table1; -- Expected: permission denied (no access to col3) INSERT INTO TABLE db_a.table1 VALUES ('5','aliyun','emrA1'), ('6','aliyun','dlfA1'); -- Expected: permission denied SELECT * FROM db_b.table1; -- Expected: permission deniedO usuário
dlf_dba_analystsó pode lercol1ecol2dedb_a.table1. Qualquer outro acesso — incluindocol3, operações de escrita e consultas entre bancos de dados — é negado.
Próximos passos
Ative a autenticação LDAP para impor a verificação de identidade em produção. Consulte DLF-Auth.
Saiba como revogar ou modifique permissões no console DLF. Consulte Configure permissions.
Explore os controles de permissão no nível de função do DLF para restringir o acesso a UDFs por função.