Compartilhar via


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

Conectar-se à interface do usuário do administrador do Apache Ranger

  1. Em um navegador, conecte-se à interface do usuário do administrador do Ranger usando o URLhttps://ClusterName.azurehdinsight.net/Ranger/.

    Altere ClusterName pelo nome do cluster do Spark.

  2. 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.

    Screenshot that shows the Service Manager page in the Ranger user interface.

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

  1. Abra a interface do usuário do administrador do Ranger.

  2. Em HADOOP SQL, selecione hive_and_spark.

    Screenshot that shows the selection of Hive and Spark.

  3. Na guia Acesso, selecione Adicionar Nova Política.

    Screenshot that shows the button for adding a new access policy.

  4. 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

    Screenshot that shows sample details for an access policy.

    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.

  5. Selecione Adicionar para salvar a política.

  6. 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:

    Screenshot that shows the result before an access policy.

    Este é o resultado depois que uma política é aplicada:

    Screenshot that shows the result after an access policy.

Criar uma política de mascaramento do Ranger

O exemplo a seguir mostra como criar uma política para mascarar uma coluna:

  1. Na guia Mascaramento, selecione Adicionar Nova Política.

    Screenshot that shows the button for adding a new masking policy.

  2. 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

    Screenshot shows masking policy details.

  3. Selecione Salvar para salvar a política.

  4. Abra um notebook do Zeppelin e execute o seguinte comando para verificar a política:

         %sql
         select clientId, deviceMake from hivesampletable; 
    

    Screenshot that shows an open Zeppelin notebook.

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.

Screenshot that shows the repo that contains the Ranger policies for Hive and Spark.

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 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.

Screenshot that shows a new repo with an old ranger database.

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.

  1. Abra a interface do usuário do Ambari em seu novo cluster do HDInsight 5.1.

  2. Vá para o serviço Spark3 e vá para Configurações.

  3. Abra a configuração Advanced ranger-spark-security.

    Screenshot shows Ambari config ranger 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:

    Screenshot that shows a configuration update for service name in Ambari.

    Arquivo XML:

    Screenshot that shows a configuration update for service name in XML.

  4. Reinicie os serviços do Ranger e do Spark a partir do Ambari.

  5. Abra a interface do usuário do administrador do Ranger e clique no botão Editar no serviço SQL HADOOP.

    Screenshot that shows edit option for ranger service.

  6. 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.

    Screenshot that shows how to add user in Ranger service.

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:

  1. No Ambari, vá para Spark3>Configurações.

  2. Altere metastore.catalog.default de spark para hive.

    Screenshot that shows changing a metastore configuration.

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.