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, vai 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/.

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

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

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 usuários do domínio vêm do locatário 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 Ranger

  1. Abra a interface do usuário admin 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. Introduza os seguintes valores:

    Property valor
    Nome da Política read-hivesampletable-all
    base de dados default
    tabela HiveSampleTable
    coluna *
    Selecionar Utilizador sparkuser
    Permissões selecione

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

    Screenshot that shows the result before an access policy.

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

    Screenshot that shows the result after an access policy.

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.

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

  2. Introduza os seguintes valores:

    Property valor
    Nome da Política máscara-hivesampletable
    Banco de dados do Hive default
    Tabela de colmeia HiveSampleTable
    Coluna Hive devicemake
    Selecionar Utilizador sparkuser
    Tipos de Acesso selecione
    Selecione a opção de mascaramento Hash

    Screenshot shows masking policy details.

  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; 
    

    Screenshot that shows an open Zeppelin notebook.

Nota

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.

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

    • Use o catálogo do Hive para o Hive e o 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 HDFS (Hadoop Distributed File System) 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.

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

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.

Nota

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 .

    Screenshot shows Ambari config ranger security.

    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 oldclustername_hive de repositório de política antigo 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 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 .

    Screenshot that shows edit option for ranger service.

  6. Para oldclustername_hive serviço, adicione rangersparklookup user 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 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.

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