Partilhar via


Configurar políticas do Apache Ranger para o Spark SQL no HDInsight com o Pacote de Segurança Empresarial

Este artigo descreve como configurar políticas do Apache Ranger para o Spark SQL com o Enterprise Security Package no HDInsight.

Neste artigo, você aprenderá a:

  • Crie políticas do Apache Ranger.
  • Verifique as políticas Ranger aplicadas.
  • Aplique diretrizes para definir o Apache Ranger para Spark SQL.

Pré-requisitos

Conectar-se à interface do usuário de administração do Apache Ranger

  1. A partir de um navegador, conecte-se à interface de usuário de administração do Ranger usando o URL https://ClusterName.azurehdinsight.net/Ranger/.

    Altere ClusterName para o 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 as mesmas que as credenciais de cluster HDInsight ou as credenciais SSH (Secure Shell) do nó HDInsight do Linux.

    Captura de ecrã que mostra a página do Service Manager na interface de utilizador do Ranger.

Criar utilizadores de domínio

Para obter informações sobre como criar sparkuser usuários de domínio, consulte Criar um cluster HDInsight com ESP. Em um cenário de produção, os utilizadores do domínio vêm do inquilino do Microsoft Entra.

Criar uma política Ranger

Nesta seção, você cria duas políticas da Ranger:

  • Uma política de acesso para acessar hivesampletable a partir do Spark SQL
  • Uma política de mascaramento para ofuscar as colunas em hivesampletable

Criar uma política de acesso do tipo Ranger

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

  2. Em HADOOP SQL, selecione hive_and_spark.

    Captura de tela que mostra a seleção de Hive e Spark.

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

    Captura de ecrã que mostra o botão para adicionar uma nova política de acesso.

  4. Insira os seguintes valores:

    Propriedade Valor
    Nome da política read-hivesampletable-all
    Base de dados Inadimplência
    mesa HiveSampleTable
    coluna *
    Selecionar Utilizador sparkuser
    Permissões selecione

    Captura de ecrã que mostra detalhes de exemplo para uma política de acesso.

    Se um usuário de domínio não for preenchido automaticamente para Selecionar Usuário, aguarde alguns momentos para que o Ranger sincronize com o ID do Microsoft Entra.

  5. Selecione Adicionar para salvar a política.

  6. Abra um bloco de anotações do Zeppelin e execute o seguinte comando para verificar a política:

         %sql 
         select * from hivesampletable limit 10;
    

    Eis o resultado antes da aplicação de uma política:

    Captura de ecrã que mostra o resultado antes de uma política de acesso.

    Eis o resultado após a aplicação de uma política:

    Captura de ecrã que mostra o resultado após uma política de acesso.

Criar uma política de mascaramento Ranger

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

  1. Na guia Mascaramento , selecione Adicionar nova política.

    Captura de tela que mostra o botão para adicionar uma nova política de mascaramento.

  2. Insira os seguintes valores:

    Propriedade Valor
    Nome da política máscara-hivesampletable
    Banco de dados do Hive Inadimplência
    Tabela Hive HiveSampleTable
    Coluna Hive devicemake
    Selecionar Utilizador sparkuser
    Tipos de Acesso selecione
    Selecione a opção de mascaramento Hash

    A captura de tela mostra detalhes da política de mascaramento.

  3. Selecione Salvar para salvar a política.

  4. Abra um bloco de anotações do Zeppelin e execute o seguinte comando para verificar a política:

         %sql
         select clientId, deviceMake from hivesampletable; 
    

    Captura de tela que mostra um bloco de anotações do Zeppelin aberto.

Observação

Por padrão, as políticas para Hive e 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 criar um cluster HDInsight 5.1 Spark usando um novo banco de dados Ranger e um banco de dados Ranger existente.

Cenário 1: Usar um novo banco de dados Ranger ao criar um cluster HDInsight 5.1 Spark

Quando você usa um novo banco de dados Ranger para criar um cluster, o repositório Ranger relevante que contém as políticas Ranger para Hive e Spark é criado sob o nome hive_and_spark no serviço Hadoop SQL no banco de dados Ranger.

Captura de tela que mostra o repositório que contém as políticas do Ranger para Hive e 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 de metastore com o mesmo nome usado para catálogos Hive (por exemplo, DB1) e 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 perspetiva do Ranger, não há como diferenciar entre DB1 dos catálogos Hive e Spark.

    Nesses casos, recomendamos que:

    • Utilize o catálogo do Hive tanto para Hive como para Spark.
    • Mantenha diferentes nomes de banco de dados, tabela e coluna para catálogos do Hive e do Spark para que as políticas não sejam aplicadas a bancos de dados entre catálogos.
  • Se você usar o catálogo do Hive para Hive e Spark, considere o exemplo a seguir.

    Digamos que você crie uma tabela chamada table1 através do Hive com o usuário xyz atual. Ele cria um arquivo Hadoop Distributed File System (HDFS) chamado table1.db cujo proprietário é o usuário xyz .

    Agora imagine que você use o usuário abc para iniciar a sessão do Spark SQL. Nesta sessão de user abc, se você tentar escrever qualquer coisa na table1, ela estará fadada a 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 executar operações de atualização.

Cenário 2: Usar um banco de dados Ranger existente (com políticas existentes) ao criar um cluster HDInsight 5.1 Spark

Quando você cria um cluster HDInsight 5.1 usando um banco de dados Ranger existente, um novo repositório Ranger é criado novamente nesse banco de dados com o nome do novo cluster neste formato: hive_and_spark.

Captura de ecrã que mostra um novo repositório com uma base de dados ranger antiga.

Digamos que você já tenha as políticas definidas no repositório Ranger sob o nome oldclustername_hive no banco de dados Ranger existente dentro do serviço Hadoop SQL. Você deseja compartilhar as mesmas políticas no novo cluster HDInsight 5.1 Spark. Para atingir esse objetivo, use as etapas a seguir.

Observação

Um usuário que tenha privilégios de administrador do Ambari pode executar atualizações de configuração.

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

  2. Vá para o serviço Spark3 e, em seguida, vá para Configs.

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

    A captura de tela mostra a configuração de segurança do Ranger no Ambari.

    ou Você também pode abrir esta configuração em /etc/spark3/conf usando SSH.

    Edite duas configurações (ranger.plugin.spark.service.name e ranger.plugin.spark.policy.cache.dir) para apontar para o repositório de políticas antigo oldclustername_hive e salve as configurações.

    Ambari:

    Captura de tela que mostra uma atualização de configuração para o nome do serviço no Ambari.

    Arquivo XML:

    Captura de tela que mostra uma atualização de configuração para o nome do serviço em XML.

  4. Reinicie os serviços Ranger e Spark da Ambari.

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

    Captura de ecrã que mostra a opção de edição para o serviço Ranger.

  6. Para o serviço oldclustername_hive, adicione o utilizador rangersparklookup na lista policy.download.auth.users e tag.download.auth.users e clique em guardar.

    Captura de tela que mostra como adicionar usuário no serviço Ranger.

As políticas são aplicadas em bancos de dados no catálogo do Spark. Se você quiser acessar os bancos de dados no catálogo do Hive:

  1. No Ambari, vá para Spark3>Configs.

  2. Altere metastore.catalog.default de faísca para colmeia.

    Captura de tela que mostra a alteração de uma configuração de metastore.

Problemas conhecidos

  • A integração do Apache Ranger com o Spark SQL não funciona se o administrador do Ranger estiver inativo.
  • Nos logs de auditoria da Ranger, quando você passa o mouse sobre a coluna Recurso , ela não pode mostrar toda a consulta executada.