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.

Prerrequisitos

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.

    Captura de pantalla que muestra la página service Manager en la interfaz de usuario de Ranger.

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.

    Captura de pantalla que muestra la selección de Hive y Spark.

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

    Captura de pantalla que muestra el botón para agregar una nueva directiva de acceso.

  4. Escriba los siguientes valores:

    Propiedad Valor
    Nombre de directiva read-hivesampletable-all
    base de datos default
    table hivesampletable
    columna *
    Seleccionar usuario sparkuser
    Permisos select

    Captura de pantalla que muestra los detalles de ejemplo de una directiva de acceso.

    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:

    Captura de pantalla que muestra el resultado antes de una directiva de acceso.

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

    Captura de pantalla que muestra el resultado después de una directiva de acceso.

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.

    Captura de pantalla que muestra el botón para agregar una nueva directiva de enmascaramiento.

  2. Escriba los siguientes valores:

    Propiedad Valor
    Nombre de 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

    Captura de pantalla que muestra los detalles de la directiva de enmascaramiento.

  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; 
    

    Captura de pantalla que muestra un cuaderno abierto de Zeppelin.

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.

Captura de pantalla que muestra el repositorio que contiene las directivas de Ranger para Hive y 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.

Captura de pantalla que muestra un nuevo repositorio con una base de datos de ranger antigua.

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.

    Captura de pantalla que muestra la seguridad del ranger de configuración de Ambari.

    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:

    Captura de pantalla que muestra una actualización de configuración para el nombre del servicio en Ambari.

    Archivo XML:

    Captura de pantalla que muestra una actualización de configuración para el nombre del servicio en 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.

    Captura de pantalla que muestra la opción de edición para el servicio ranger.

  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.

    Captura de pantalla que muestra cómo agregar un usuario en el servicio Ranger.

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.

    Captura de pantalla que muestra cómo cambiar una configuración de metastore.

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