Compartir a través de


Configure directivas de Apache Ranger para Spark SQL en HDInsight con Enterprise Security Package.

En este artículo se describe cómo configurar directivas de Apache Ranger para Spark SQL con Enterprise Security Package en HDInsight.

En este artículo aprenderá a:

  • Crear directivas de Apache Ranger.
  • Comprobar las directivas de Ranger aplicadas.
  • Aplicar directrices para establecer Apache Ranger para Spark SQL.

Requisitos previos

Conexión a la interfaz de usuario de administrador de Apache Ranger

  1. En un explorador, conéctese a la interfaz de usuario de administrador de Ranger mediante la dirección URL https://ClusterName.azurehdinsight.net/Ranger/.

    Cambie ClusterName por el nombre del clúster de Spark.

  2. Inicie sesión con sus credenciales de administrador de Microsoft Entra. Las credenciales de administrador de Microsoft Entra no son las mismas que las credenciales del clúster de HDInsight ni las credenciales de Secure Shell (SSH) del nodo de HDInsight en Linux.

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

Crear usuarios de dominio

Para obtener información sobre cómo crear sparkuserusuarios de dominio, consulte Creación de un clúster de HDInsight con ESP. En un escenario de producción, los usuarios del dominio proceden de su inquilino de Microsoft Entra.

Creación de directivas de Ranger

En esta sección, creará dos directivas de Ranger:

  • Una directiva de acceso para acceder a hivesampletable desde Spark SQL.
  • Una directiva de enmascaramiento para ocultar las columnas de hivesampletable.

Creación de directivas de acceso de Ranger

  1. Abra la interfaz de usuario de administrador de Ranger.

  2. En HADOOP SQL, seleccione hive_and_spark.

    Screenshot that shows the selection of Hive and Spark.

  3. En la pestaña Acceso, seleccione Agregar nueva directiva.

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

  4. Escriba los siguientes valores:

    Propiedad Value
    Nombre de la directiva read-hivesampletable-all
    database default
    table hivesampletable
    columna *
    Seleccionar usuario sparkuser
    Permisos select

    Screenshot that shows sample details for an access policy.

    Si un usuario del dominio no se rellena automáticamente en Seleccionar usuario, espere unos instantes a que Ranger se sincronice con Microsoft Entra ID.

  5. Seleccione Agregar para guardar la directiva.

  6. Abra un cuaderno de Zeppelin y ejecute el siguiente comando para comprobar la directiva:

         %sql 
         select * from hivesampletable limit 10;
    

    Este es el resultado antes de aplicar una directiva:

    Screenshot that shows the result before an access policy.

    Este es el resultado después de aplicar una directiva:

    Screenshot that shows the result after an access policy.

Creación de una directiva de enmascaramiento de Ranger

En el ejemplo siguiente se muestra cómo crear una directiva para enmascarar una columna:

  1. En la pestaña Enmascaramiento, seleccione Agregar nueva directiva.

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

  2. Escriba los siguientes valores:

    Propiedad Value
    Nombre de la directiva mask-hivesampletable
    Base de datos de Hive default
    Tabla de Hive hivesampletable
    Columna de Hive devicemake
    Seleccionar usuario sparkuser
    Tipos de acceso select
    Selección de la opción de enmascaramiento Hash

    Screenshot shows masking policy details.

  3. Seleccione Guardar para guardar la directiva.

  4. Abra un cuaderno de Zeppelin y ejecute el siguiente comando para comprobar la directiva:

         %sql
         select clientId, deviceMake from hivesampletable; 
    

    Screenshot that shows an open Zeppelin notebook.

Nota:

De forma predeterminada, las directivas de Hive y Spark SQL son comunes en Ranger.

Aplicación de directrices para configurar Apache Ranger para Spark SQL

En los escenarios siguientes se exploran las directrices para crear un clúster de Spark en HDInsight 5.1 mediante una nueva base de datos de Ranger y una base de datos de Ranger existente.

Escenario 1: Uso de una nueva base de datos de Ranger al crear un clúster de Spark en HDInsight 5.1

Cuando use una nueva base de datos de Ranger para crear un clúster, se crea el repositorio de Ranger correspondiente que contiene las directivas de Ranger para Hive y Spark con el nombre hive_and_spark en el servicio SQL de Hadoop de la base de datos de Ranger.

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

Si edita las directivas, se aplican a Hive y Spark.

Tenga en cuenta estos puntos:

  • Si tiene dos bases de datos de metastore con el mismo nombre para los catálogos de Hive (por ejemplo, DB1) y Spark (por ejemplo, DB1):

    • Si Spark usa el catálogo de Spark (metastore.catalog.default=spark), las directivas se aplican a la base de datos DB1 del catálogo de Spark.
    • Si Spark usa el catálogo de Hive (metastore.catalog.default=hive), las directivas se aplican a la base de datos DB1 del catálogo de Hive.

    Desde la perspectiva de Ranger, no hay forma de diferenciar entre DB1 de los catálogos de Hive y Spark.

    En tales casos, se recomienda lo siguiente:

    • Use el catálogo de Hive para Hive y Spark.
    • Mantenga los nombres de base de datos, tablas y columnas diferentes para los catálogos de Hive y Spark para que las directivas no se apliquen a las bases de datos entre catálogos.
  • Si usa el catálogo de Hive para Hive y Spark, tenga en cuenta el ejemplo siguiente.

    Supongamos que crea una tabla llamada table1 mediante Hive con el usuario xyz actual. Se crea un archivo del Sistema de archivos distribuido de Hadoop (HDFS) llamado table1.db cuyo propietario es el usuario de xyz.

    Ahora imagine que usa el usuario abc para iniciar la sesión de Spark SQL. En esta sesión del usuario abc, si intenta escribir algo en table1, se producirá un error, ya que el propietario de la tabla es xyz.

    En tal caso, se recomienda usar el mismo usuario en Hive y Spark SQL para actualizar la tabla. El usuario debe tener privilegios suficientes para realizar operaciones de actualización.

Escenario 2: Uso de una base de datos de Ranger existente (con directivas existentes) al crear un clúster de Spark en HDInsight 5.1

Cuando se crea un clúster de HDInsight 5.1 mediante la base de datos de Ranger existente, se vuelve a crear un nuevo repositorio de Ranger en esta base de datos con el nombre del nuevo clúster en este formato: hive_and_spark.

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

Supongamos que ya tiene las directivas definidas en el repositorio de Ranger con el nombre oldclustername_hive en la base de datos de Ranger existente dentro del servicio SQL de Hadoop. Quiere compartir las mismas directivas en el nuevo clúster de Spark en HDInsight 5.1. Para lograr este objetivo, siga estos pasos:

Nota:

Un usuario que tenga privilegios de administrador de Ambari puede realizar actualizaciones de la configuración.

  1. Abra la interfaz de usuario de Ambari desde el nuevo clúster de HDInsight 5.1.

  2. Vaya al servicio Spark3 y, luego, vaya a Configs.

  3. Abra la configuración Advanced ranger-spark-security.

    Screenshot shows Ambari config ranger security.

    o también puede abrir esta configuración en /etc/spark3/conf mediante SSH.

    Edite dos configuraciones (ranger.plugin.spark.service.name y ranger.plugin.spark.policy.cache.dir) para que apunten al repositorio de directivas anterior oldclustername_hive y, luego, guarde las configuraciones.

    Ambari:

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

    Archivo XML:

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

  4. Reinicie los servicios Ranger y Spark desde Ambari.

  5. Abra la interfaz de usuario de administrador de Ranger y haga clic en el botón Editar en servicio SQL de HADOOP.

    Screenshot that shows edit option for ranger service.

  6. Para el servicio oldclustername_hive, agregue el usuario rangersparklookup en la lista policy.download.auth.users y tag.download.auth.users y haga clic en Guardar.

    Screenshot that shows how to add user in Ranger service.

Las directivas se aplican a las bases de datos del catálogo de Spark. Si quiere acceder a las bases de datos del catálogo de Hive:

  1. En Ambari, vaya a Spark3>Configs.

  2. Cambie metastore.catalog.default de spark a hive.

    Screenshot that shows changing a metastore configuration.

Problemas conocidos

  • La integración de Apache Ranger con Spark SQL no funciona si el administrador de Ranger está inactivo.
  • En los registros de auditoría de Ranger, al mantener el puntero sobre la columna de Recursos, no puede mostrar toda la consulta que ejecutó.