Configurar as políticas do Apache Ranger para Spark SQL no HDInsight com o Enterprise Security Package
Esse artigo descreve como configurar as políticas do Apache Ranger para Spark SQL com o Enterprise Security Package no HDInsight.
Neste artigo, você aprenderá como:
- Criar as políticas do Apache Ranger.
- Verificar as políticas do Ranger aplicadas.
- Aplicar diretrizes para definir o Apache Ranger para Spark SQL.
Pré-requisitos
- Um cluster do Apache Spark no HDInsight versão 5.1 com o Enterprise Security Package
Conectar-se à interface do usuário do administrador do Apache Ranger
Em um navegador, conecte-se à interface do usuário do administrador do Ranger usando o URL
https://ClusterName.azurehdinsight.net/Ranger/
.Altere
ClusterName
pelo nome do cluster do Spark.Entre usando suas credenciais de administrador do Microsoft Entra. As credenciais de administrador do Microsoft Entra não são iguais às credenciais de cluster do HDInsight ou às credenciais do SSH (Secure Shell) do nó do HDInsight do Linux.
Crie usuários de domínio
Para obter informações sobre como criar usuários de domínio sparkuser
, confira Criar um cluster do HDInsight com ESP. Em um cenário de produção, os usuários de domínio vêm do locatário do Microsoft Entra.
Criar uma política do Ranger
Nesta seção, você criará duas políticas do Ranger:
- Uma política de acesso para acessar
hivesampletable
do Spark SQL - Uma política de mascaramento para ofuscar as colunas no
hivesampletable
Criar uma política de acesso do Ranger
Abra a interface do usuário do administrador do Ranger.
Em HADOOP SQL, selecione hive_and_spark.
Na guia Acesso, selecione Adicionar Nova Política.
Insira os valores a seguir:
Propriedade Valor Nome da política read-hivesampletable-all Banco de Dados default table hivesampletable column * Selecionar usuário sparkuser
Permissões select Se um usuário de domínio não for preenchido automaticamente para Selecionar Usuário, aguarde alguns instantes para que o Ranger sincronize com o Microsoft Entra ID.
Selecione Adicionar para salvar a política.
Abra um notebook do Zeppelin e execute o seguinte comando para verificar a política:
%sql select * from hivesampletable limit 10;
Este é o resultado antes de uma política ser aplicada:
Este é o resultado depois que uma política é aplicada:
Criar uma política de mascaramento do Ranger
O exemplo a seguir mostra como criar uma política para mascarar uma coluna:
Na guia Mascaramento, selecione Adicionar Nova Política.
Insira os valores a seguir:
Propriedade Valor Nome da política mask-hivesampletable Banco de Dados do Hive default Tabela do Hive hivesampletable Coluna Hive devicemake Selecionar usuário sparkuser
Tipos de acesso select Selecionar opção de mascaramento Hash Selecione Salvar para salvar a política.
Abra um notebook do Zeppelin e execute o seguinte comando para verificar a política:
%sql select clientId, deviceMake from hivesampletable;
Observação
Por padrão, as políticas para o Hive e do Spark SQL são comuns no Ranger.
Aplicar diretrizes para configurar o Apache Ranger para Spark SQL
Os cenários a seguir exploram diretrizes para a criação de um cluster do Spark no HDInsight 5.1 usando um novo banco de dados do Ranger e um banco de dados do Ranger existente.
Cenário 1: Use um novo banco de dados do Ranger ao criar um cluster do Spark no HDInsight 5.1
Quando você usa um novo banco de dados do Ranger para criar um cluster, o repositório do Ranger relevante que contém as políticas do Ranger para Hive e Spark é criado com o nome hive_and_spark no serviço Hadoop SQL no banco de dados do Ranger.
Se você editar as políticas, elas serão aplicadas ao Hive e ao Spark.
Considere estes pontos:
Se você tiver dois bancos de dados metastore com o mesmo nome usados para os catálogos do Hive (por exemplo, DB1) e do Spark (por exemplo, DB1):
- Se o Spark usar o catálogo do Spark (
metastore.catalog.default=spark
), as políticas serão aplicadas ao banco de dados DB1 do catálogo do Spark. - Se o Spark usar o catálogo do Hive (
metastore.catalog.default=hive
), as políticas serão aplicadas ao banco de dados DB1 do catálogo do Hive.
Da perspectiva do Ranger, não há como diferenciar entre o DB1 dos catálogos do Hive e do Spark.
Nesses casos, recomendamos que você:
- Use o catálogo do Hive para o Hive e o Spark.
- Mantenha nomes de bancos de dados, tabelas e colunas diferentes para os catálogos do Hive e do Spark para que as políticas não sejam aplicadas aos bancos de dados dos catálogos.
- Se o Spark usar o catálogo do Spark (
Se você usar o catálogo do Hive para o Hive e o Spark, considere o exemplo a seguir.
Digamos que você crie uma tabela chamada table1 por meio do Hive com o usuário xyz atual. Ela cria um arquivo do Sistema de Arquivos Distribuído do Hadoop (HDFS) chamado table1.db cujo proprietário é o usuário xyz.
Agora imagine que você usa o usuário abc para iniciar a sessão do Spark SQL. Nesta sessão do usuário abc, se você tentar escrever algo em table1, ela falhará porque o proprietário da tabela é xyz.
Nesse caso, recomendamos que você use o mesmo usuário no Hive e no Spark SQL para atualizar a tabela. Esse usuário deve ter privilégios suficientes para realizar operações de atualização.
Cenário 2: Use um banco de dados do Ranger existente (com as políticas existentes) ao criar um cluster do Spark no HDInsight 5.1
Quando você cria um cluster do HDInsight 5.1 usando um banco de dados do Ranger existente, um novo repositório do Ranger é criado novamente nesse banco de dados com o nome do novo cluster neste formato: hive_and_spark.
Digamos que você já tenha as políticas definidas no repositório do Ranger com o nome oldclustername_hive no banco de dados do Ranger existente dentro do serviço Hadoop SQL. Você deseja compartilhar as mesmas políticas no novo cluster do Spark no HDInsight 5.1. Para atingir essa meta, use as etapas a seguir.
Observação
Um usuário com privilégios de administrador do Ambari pode realizar atualizações de configuração.
Abra a interface do usuário do Ambari em seu novo cluster do HDInsight 5.1.
Vá para o serviço Spark3 e vá para Configurações.
Abra a configuração Advanced ranger-spark-security.
ou você também pode abrir essa configuração em /etc/spark3/conf usando o SSH.
Edite duas configurações (ranger.plugin.spark.service.name e ranger.plugin.spark.policy.cache.dir) para apontar para o antigo repositório de políticas oldclustername_hive e salve as configurações.
Ambari:
Arquivo XML:
Reinicie os serviços do Ranger e do Spark a partir do Ambari.
Abra a interface do usuário do administrador do Ranger e clique no botão Editar no serviço SQL HADOOP.
Para o serviço oldclustername_hive, adicione o usuário rangersparklookup na lista policy.download.auth.users e tag.download.auth.users e clique em salvar.
As políticas são aplicadas no bancos de dados do catálogo do Spark. Se você quiser acessar os bancos de dados no catálogo do Hive:
Problemas conhecidos
- A integração do Apache Ranger com o Spark SQL não funciona se o administrador do Ranger estiver inoperante.
- Nos logs de auditoria do Ranger, ao passar o mouse sobre a coluna Recurso, não é possível mostrar a consulta completa que você executou.