O plug-in Dataproc Ranger do Cloud Storage, disponível com As versões de imagem 1.5 e 2.0 do Dataproc ativam um serviço de autorização em cada VM do cluster do Dataproc. O serviço de autorização avalia Solicitações do conector do Cloud Storage às políticas de Ranger e, se a solicitação for permitida, retorna um token de acesso para o cluster Conta de serviço de VM.
O plug-in Ranger para Cloud Storage depende do Kerberos para autenticação; e integra-se ao suporte do conector do Cloud Storage para tokens de delegação. Os tokens de delegação são armazenados MySQL no nó mestre do cluster. A senha raiz do banco de dados é especificado nas propriedades do cluster quando Crie o cluster do Dataproc.
Antes de começar
Conceda Criador de token de conta de serviço e o papel de Administrador de papéis do IAM no Conta de serviço da VM do Dataproc em seu projeto.
Instalar o plug-in do Ranger para Cloud Storage
Execute os comandos a seguir em uma janela de terminal local ou em Cloud Shell para instalar o Ranger plug-in do Cloud Storage ao criar um cluster do Dataproc.
Defina as variáveis de ambiente
export CLUSTER_NAME=new-cluster-name \ export REGION=region \ export KERBEROS_KMS_KEY_URI=Kerberos-KMS-key-URI \ export KERBEROS_PASSWORD_URI=Kerberos-password-URI \ export RANGER_ADMIN_PASSWORD_KMS_KEY_URI=Ranger-admin-password-KMS-key-URI \ export RANGER_ADMIN_PASSWORD_GCS_URI=Ranger-admin-password-GCS-URI \ export RANGER_GCS_PLUGIN_MYSQL_KMS_KEY_URI=MySQL-root-password-KMS-key-URI \ export RANGER_GCS_PLUGIN_MYSQL_PASSWORD_URI=MySQL-root-password-GCS-URI
Observações:
- CLUSTER_NAME: o nome do novo cluster.
- REGION: a região onde o
cluster será criado, por exemplo,
us-west1
. - KERBEROS_KMS_KEY_URI e KERBEROS_PASSWORD_URI: consulte Configure a senha principal da raiz do Kerberos.
- RANGER_ADMIN_PASSWORD_KMS_KEY_URI e RANGER_ADMIN_PASSWORD_GCS_URI: consulte Configure sua senha de administrador do Ranger.
- RANGER_GCS_PLUGIN_MYSQL_KMS_KEY_URI e RANGER_GCS_PLUGIN_MYSQL_PASSWORD_URI: definir configure uma senha do MySQL seguindo o mesmo procedimento Configure uma senha de administrador do Ranger.
Criar um cluster do Dataproc
Execute o comando a seguir para criar um cluster do Dataproc e instalar o Ranger plug-in do Cloud Storage no cluster.
gcloud dataproc clusters create ${CLUSTER_NAME} \ --region=${REGION} \ --scopes cloud-platform \ --enable-component-gateway \ --optional-components=SOLR,RANGER \ --kerberos-kms-key=${KERBEROS_KMS_KEY_URI} \ --kerberos-root-principal-password-uri=${KERBEROS_PASSWORD_URI} \ --properties="dataproc:ranger.gcs.plugin.enable=true, \ dataproc:ranger.kms.key.uri=${RANGER_ADMIN_PASSWORD_KMS_KEY_URI}, \ dataproc:ranger.admin.password.uri=${RANGER_ADMIN_PASSWORD_GCS_URI}, \ dataproc:ranger.gcs.plugin.mysql.kms.key.uri=${RANGER_GCS_PLUGIN_MYSQL_KMS_KEY_URI}, \ dataproc:ranger.gcs.plugin.mysql.password.uri=${RANGER_GCS_PLUGIN_MYSQL_PASSWORD_URI}"
Observações:
- Versão da imagem 1.5: se você estiver criando um cluster da versão de imagem 1.5 (consulte
Seleção de versões),
adicione a sinalização
--metadata=GCS_CONNECTOR_VERSION="2.2.6" or higher
para instalar a versão necessária do conector.
Verificar a instalação do plug-in Ranger para Cloud Storage
Após a conclusão da criação do cluster, um tipo de serviço GCS
, chamado gcs-dataproc
,
aparece na interface da Web do administrador do Ranger.
![](https://cloud.google.com/static/dataproc/images/ranger-ui.png?authuser=1&hl=pt-br)
Políticas padrão do plug-in Ranger para Cloud Storage
O serviço gcs-dataproc
padrão tem as seguintes políticas:
Políticas de leitura e gravação no Dataproc buckets temporários e de teste do cluster
Uma política
all - bucket, object-path
, que permite que todos os usuários acessem metadados para todos os objetos. Esse acesso é necessário para permitir que o conector do Cloud Storage para executar HCFS (Sistema de arquivos compatível com Hadoop) as operações.
![](https://cloud.google.com/static/dataproc/images/default-policies.png?authuser=1&hl=pt-br)
Dicas de uso
Acesso de apps às pastas do bucket
Para acomodar apps que criam arquivos intermediários no bucket do Cloud Storage,
é possível conceder acesso a Modify Objects
, List Objects
e Delete Objects
no caminho do bucket do Cloud Storage e selecione
Modo recursive
para estender as permissões para subcaminhos no caminho especificado.
![](https://cloud.google.com/static/dataproc/images/bucket-access.png?authuser=1&hl=pt-br)
Medidas de proteção
Para ajudar a evitar a fraude do plug-in:
Conceda Conta de serviço de VM aos recursos na sua rede do Cloud Storage, para permitir que ele conceda acesso a esses recursos com tokens de acesso de escopo diminuído Consulte Permissões do IAM para o Cloud Storage. Além disso, remover o acesso dos usuários aos recursos do bucket para evitar o acesso direto dos usuários ao bucket.
Desativar
sudo
e outros meios de acesso raiz nas VMs do cluster, incluindo atualização o arquivosudoer
, para evitar falsificação de identidade ou alterações nas autenticações e as configurações de autorização. Para mais informações, consulte as instruções do Linux para adicionar/removersudo
privilégios de usuário.Use
iptable
para bloquear solicitações de acesso direto ao Cloud Storage das VMs do cluster. Por exemplo, é possível bloquear o acesso ao servidor de metadados da VM para impedir o acesso à credencial da conta de serviço da VM ou ao token de acesso usado para autenticar e autorizar o acesso ao Cloud Storage (consulteblock_vm_metadata_server.sh
, um script de inicialização que usa regrasiptable
para bloquear o acesso ao servidor de metadados da VM).
Jobs do Spark, Hive-on-MapReduce e Hive-on-Tez
Para proteger os detalhes confidenciais de autenticação do usuário e reduzir a carga da Key Distribution Center (KDC), o driver do Spark não distribui Kerberos credenciais aos executores. Em vez disso, o driver do Spark recebe uma permissão token do plug-in Ranger do Cloud Storage e, em seguida, distribui a token para os executores. Os executores usam o token de delegação para se autenticarem no Plug-in Ranger do Cloud Storage, trocando-o por um token de acesso do Google que permite o acesso ao Cloud Storage.
Os jobs Hive-on-MapReduce e Hive-on-Tez também usam tokens para acessar Cloud Storage. Use as seguintes propriedades para receber tokens para acessar buckets especificados do Cloud Storage ao enviar os seguintes tipos de trabalho:
Jobs do Spark:
--conf spark.yarn.access.hadoopFileSystems=gs://bucket-name,gs://bucket-name,...
Jobs do Hive-on-MapReduce:
--hiveconf "mapreduce.job.hdfs-servers=gs://bucket-name,gs://bucket-name,..."
Jobs do Hive-on-Tez:
--hiveconf "tez.job.fs-servers=gs://bucket-name,gs://bucket-name,..."
Cenário do job do Spark
Um job de contagem de palavras do Spark falha quando executado uma janela do terminal em uma VM de cluster do Dataproc o plug-in Ranger para Cloud Storage instalado.
spark-submit \ --conf spark.yarn.access.hadoopFileSystems=gs://${FILE_BUCKET} \ --class org.apache.spark.examples.JavaWordCount \ /usr/lib/spark/examples/jars/spark-examples.jar \ gs://bucket-name/wordcount.txt
Observações:
- FILE_BUCKET: bucket do Cloud Storage para acesso ao Spark.
Saída de erro:
Caused by: com.google.gcs.ranger.client.shaded.io.grpc.StatusRuntimeException: PERMISSION_DENIED: Access denied by Ranger policy: User: '<USER>', Bucket: '<dataproc_temp_bucket>', Object Path: 'a97127cf-f543-40c3-9851-32f172acc53b/spark-job-history/', Action: 'LIST_OBJECTS'
Observações:
spark.yarn.access.hadoopFileSystems=gs://${FILE_BUCKET}
é obrigatório em um Kerberos do Google Cloud.
Saída de erro:
Caused by: java.lang.RuntimeException: Failed creating a SPNEGO token. Make sure that you have run `kinit` and that your Kerberos configuration is correct. See the full Kerberos error message: No valid credentials provided (Mechanism level: No valid credentials provided)
Uma política é editada com o Gerenciador de acesso na interface da Web do administrador do Ranger.
para adicionar username
à lista de usuários que têm List Objects
e outro bucket temp
permissões.
![](https://cloud.google.com/static/dataproc/images/edit-policy-1.png?authuser=1&hl=pt-br)
A execução do job gera um novo erro.
Saída de erro:
com.google.gcs.ranger.client.shaded.io.grpc.StatusRuntimeException: PERMISSION_DENIED: Access denied by Ranger policy: User: <USER>, Bucket: '<file-bucket>', Object Path: 'wordcount.txt', Action: 'READ_OBJECTS'
Uma política é adicionada para conceder ao usuário acesso de leitura ao wordcount.text
.
Caminho do Cloud Storage.
![](https://cloud.google.com/static/dataproc/images/edit-policy-2.png?authuser=1&hl=pt-br)
O job é executado e concluído com sucesso.
INFO com.google.cloud.hadoop.fs.gcs.auth.GcsDelegationTokens: Using delegation token RangerGCSAuthorizationServerSessionToken owner=<USER>, renewer=yarn, realUser=, issueDate=1654116824281, maxDate=0, sequenceNumber=0, masterKeyId=0 this: 1 is: 1 a: 1 text: 1 file: 1 22/06/01 20:54:13 INFO org.sparkproject.jetty.server.AbstractConnector: Stopped