Os exemplos seguintes criam e usam um cluster do Dataproc com o Kerberos ativado com os componentes Ranger e Solr para controlar o acesso dos utilizadores aos recursos do Hadoop, YARN e HIVE.
Notas:
Pode aceder à IU Web do Ranger através do gateway de componentes.
Num cluster do Ranger com Kerberos, o Dataproc mapeia um utilizador do Kerberos para o utilizador do sistema removendo o domínio e a instância do utilizador do Kerberos. Por exemplo, o principal do Kerberos
user1/cluster-m@MY.REALM
é mapeado para o sistemauser1
e as políticas do Ranger são definidas para permitir ou negar autorizações parauser1
.
Crie o cluster.
- O seguinte comando
gcloud
pode ser executado numa janela de terminal local ou a partir do Cloud Shell de um projeto.gcloud dataproc clusters create cluster-name \ --region=region \ --optional-components=SOLR,RANGER \ --enable-component-gateway \ --properties="dataproc:ranger.kms.key.uri=projects/project-id/locations/global/keyRings/keyring/cryptoKeys/key,dataproc:ranger.admin.password.uri=gs://bucket/admin-password.encrypted" \ --kerberos-root-principal-password-uri=gs://bucket/kerberos-root-principal-password.encrypted \ --kerberos-kms-key=projects/project-id/locations/global/keyRings/keyring/cryptoKeys/key
- O seguinte comando
Depois de o cluster estar em execução, navegue para a página Clusters do Dataproc na Google Cloud consola e, de seguida, selecione o nome do cluster para abrir a página Detalhes do cluster. Clique no separador Interfaces Web para apresentar uma lista de links do gateway de componentes para as interfaces Web dos componentes predefinidos e opcionais instalados no cluster. Clique no link Ranger.
Inicie sessão no Ranger introduzindo o nome de utilizador "admin" e a palavra-passe de administrador do Ranger.
A IU de administração do Ranger é aberta num navegador local.
Política de acesso do YARN
Este exemplo cria uma política do Ranger para permitir e negar o acesso do utilizador à fila root.default do YARN.
Selecione
yarn-dataproc
na IU de administração do Ranger.Na página yarn-dataproc Policies (Políticas do yarn-dataproc), clique em Add New Policy (Adicionar nova política). Na página Criar política, os seguintes campos são introduzidos ou selecionados:
Policy Name
: "yarn-policy-1"Queue
: "root.default"Audit Logging
: "Sim"Allow Conditions
:Select User
: "userone"Permissions
: "Selecionar tudo" para conceder todas as autorizações
Deny Conditions
:Select User
: "usertwo"Permissions
: "Selecionar tudo" para negar todas as autorizações
Clique em Adicionar para guardar a política. A política está listada na página Políticas do yarn-dataproc:
Execute uma tarefa mapreduce do Hadoop na janela de sessão SSH principal como userone:
userone@example-cluster-m:~$ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduced-examples. jar pi 5 10
- A IU do Ranger mostra que
userone
teve autorização para enviar a tarefa.
- A IU do Ranger mostra que
Execute a tarefa MapReduce do Hadoop na janela da sessão SSH principal da VM como
usertwo
:usertwo@example-cluster-m:~$ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduced-examples. jar pi 5 10
- A IU do Ranger mostra que o acesso de
usertwo
foi negado para enviar o trabalho.
- A IU do Ranger mostra que o acesso de
Política de acesso do HDFS
Este exemplo cria uma política do Ranger para permitir e negar o acesso do utilizador ao diretório /tmp
do HDFS.
Selecione
hadoop-dataproc
na IU de administração do Ranger.Na página hadoop-dataproc Policies (Políticas do hadoop-dataproc), clique em Add New Policy (Adicionar nova política). Na página Criar política, os seguintes campos são introduzidos ou selecionados:
Policy Name
: "hadoop-policy-1"Resource Path
: "/tmp"Audit Logging
: "Sim"Allow Conditions
:Select User
: "userone"Permissions
: "Selecionar tudo" para conceder todas as autorizações
Deny Conditions
:Select User
: "usertwo"Permissions
: "Selecionar tudo" para negar todas as autorizações
Clique em Adicionar para guardar a política. A política está listada na página Políticas do hadoop-dataproc:
Aceda ao diretório
/tmp
do HDFS como userone:userone@example-cluster-m:~$ hadoop fs -ls /tmp
- A IU do Ranger mostra que o utilizador
userone
teve acesso autorizado ao diretório /tmp do HDFS.
- A IU do Ranger mostra que o utilizador
Aceda ao diretório
/tmp
do HDFS comousertwo
:usertwo@example-cluster-m:~$ hadoop fs -ls /tmp
- A IU do Ranger mostra que o utilizador
usertwo
teve o acesso ao diretório /tmp do HDFS negado.
- A IU do Ranger mostra que o utilizador
Política de acesso do Hive
Este exemplo cria uma política do Ranger para permitir e negar o acesso do utilizador a uma tabela do Hive.
Crie uma pequena tabela
employee
através da CLI do Hive na instância principal.hive> CREATE TABLE IF NOT EXISTS employee (eid int, name String); INSERT INTO employee VALUES (1 , 'bob') , (2 , 'alice'), (3 , 'john');
Selecione
hive-dataproc
na IU de administração do Ranger.Na página hive-dataproc Policies (Políticas do hive-dataproc), clique em Add New Policy (Adicionar nova política). Na página Criar política, os seguintes campos são introduzidos ou selecionados:
Policy Name
: "hive-policy-1"database
: "default"table
: "employee"Hive Column
: "*"Audit Logging
: "Sim"Allow Conditions
:Select User
: "userone"Permissions
: "Selecionar tudo" para conceder todas as autorizações
Deny Conditions
:Select User
: "usertwo"Permissions
: "Selecionar tudo" para negar todas as autorizações
Clique em Adicionar para guardar a política. A política é apresentada na página hive-dataproc Policies:
Execute uma consulta a partir da sessão SSH principal da VM na tabela de funcionários do Hive como userone:
userone@example-cluster-m:~$ beeline -u "jdbc:hive2://$(hostname -f):10000/default;principal=hive/$(hostname -f)@REALM" -e "select * from employee;"
- A consulta userone tem êxito:
Connected to: Apache Hive (version 2.3.6) Driver: Hive JDBC (version 2.3.6) Transaction isolation: TRANSACTION_REPEATABLE_READ +---------------+----------------+ | employee.eid | employee.name | +---------------+----------------+ | 1 | bob | | 2 | alice | | 3 | john | +---------------+----------------+ 3 rows selected (2.033 seconds)
- A consulta userone tem êxito:
Execute uma consulta a partir da sessão SSH principal da VM na tabela de funcionários do Hive como usertwo:
usertwo@example-cluster-m:~$ beeline -u "jdbc:hive2://$(hostname -f):10000/default;principal=hive/$(hostname -f)@REALM" -e "select * from employee;"
- O acesso de usertwo à tabela é negado:
Error: Could not open client transport with JDBC Uri: ... Permission denied: user=usertwo, access=EXECUTE, inode="/tmp/hive"
- O acesso de usertwo à tabela é negado:
Acesso detalhado ao Hive
O Ranger suporta a ocultação e os filtros ao nível da linha no Hive. Este exemplo
baseia-se no exemplo anterior hive-policy-1
adicionando políticas de filtragem e ocultação.
Selecione
hive-dataproc
na IU de administração do Ranger e, de seguida, selecione o separador Masking e clique em Add New Policy.Na página Criar política, os seguintes campos são introduzidos ou selecionados para criar uma política para ocultar (anular) a coluna do nome do funcionário:
Policy Name
: "hive-masking policy"database
: "default"table
: "employee"Hive Column
: "name"Audit Logging
: "Sim"Mask Conditions
:Select User
: "userone"Access Types
: "select" add/edit permissionsSelect Masking Option
: "nullify"Clique em Adicionar para guardar a política.
Selecione
hive-dataproc
na IU de administração do Ranger e, de seguida, selecione o separador Filtro ao nível da linha e clique em Adicionar nova política.Na página Criar política, os seguintes campos são introduzidos ou selecionados para criar uma política para filtrar (devolver) linhas em que
eid
não é igual a1
:Policy Name
: "hive-filter policy"Hive Database
: "default"Hive Table
: "employee"Audit Logging
: "Sim"Mask Conditions
:Select User
: "userone"Access Types
: "select" add/edit permissionsRow Level Filter
: expressão de filtro "eid != 1"Clique em Adicionar para guardar a política.
Repita a consulta anterior da sessão SSH principal da VM na tabela de funcionários do Hive como userone:
userone@example-cluster-m:~$ beeline -u "jdbc:hive2://$(hostname -f):10000/default;principal=hive/$(hostname -f)@REALM" -e "select * from employee;"
- A consulta é devolvida com a coluna de nome ocultada e bob(eid=1) filtrada dos resultados.:
Transaction isolation: TRANSACTION_REPEATABLE_READ +---------------+----------------+ | employee.eid | employee.name | +---------------+----------------+ | 2 | NULL | | 3 | NULL | +---------------+----------------+ 2 rows selected (0.47 seconds)
- A consulta é devolvida com a coluna de nome ocultada e bob(eid=1) filtrada dos resultados.: