Componente Ranger opcional de Managed Service for Apache Spark

El componente opcional de Apache Ranger te permite administrar los permisos y las auditorías del ecosistema de Hadoop en los clústeres de Managed Service para Apache Spark. Cuando instalas este componente durante la creación del clúster, el servidor de Ranger admin y la IU web están disponibles en el puerto 6080 en el primer nodo principal del clúster.

Para obtener orientación y tareas relacionadas, consulta cómo usar Ranger con Kerberos, crear una copia de seguridad y restablecer un esquema de Ranger, y revisa las prácticas recomendadas para usar Apache Ranger en Managed Service para Apache Spark.

Instala el componente

Instala el componente cuando crees un clúster de Managed Service para Apache Spark. Los componentes se pueden agregar a los clústeres creados con la versión 1.3 y posteriores de Managed Service para Apache Spark. El componente Ranger requiere la instalación del componente Solr.

Consulta Versiones compatibles de Managed Service para Apache Spark para conocer la versión del componente incluida en cada versión de imagen de Managed Service para Apache Spark.

Pasos de instalación:

  1. Configura tu contraseña de Ranger admin:

    1. Otorga el rol de encriptador/desencriptador de CryptoKey de Cloud Key Management Service a la cuenta de servicio del clúster. De forma predeterminada, la cuenta de servicio del clúster se establece como la cuenta de servicio predeterminada de Compute Engine, que tiene el siguiente formato:
      project-number-compute@
      
      Puedes especificar una cuenta de servicio de clúster diferente cuando creas el clúster.
      1. Ejemplo: Otorga la función Encriptador/Desencriptador de CryptoKey de Cloud KMS a la cuenta de servicio predeterminada de Compute Engine:
        gcloud projects add-iam-policy-binding project-id \
            --member=serviceAccount:project-number-compute@ \
            --role=roles/cloudkms.cryptoKeyDecrypter
        
    2. Encripta tu contraseña de Ranger admin con una clave de servicio de administración de claves (KMS). Para los clústeres con versiones de imagen anteriores a la 2.2, la contraseña debe tener al menos 8 caracteres, con al menos un carácter alfabético y uno numérico. Para los clústeres con versiones de imagen 2.2 y posteriores, la contraseña debe tener al menos 8 caracteres, con al menos una letra mayúscula, una letra minúscula y un carácter numérico.
      1. Ejemplo:
        1. Crea el llavero de claves:
          gcloud kms keyrings create my-keyring --location=global
          
        2. Crea la clave:
          gcloud kms keys create my-key \
              --location=global \
              --keyring=my-keyring \
              --purpose=encryption
          
        3. Encripta la contraseña del usuario admin de Ranger:
          echo 'my-ranger-admin-password' | \
            gcloud kms encrypt \
              --location=global \
              --keyring=my-keyring \
              --key=my-key \
              --plaintext-file=- \
              --ciphertext-file=admin-password.encrypted
          
    3. Sube la contraseña encriptada a un bucket de Cloud Storage en tu proyecto.
      1. Ejemplo:
        gcloud storage cp admin-password.encrypted gs://my-bucket
        
  2. Cree su clúster

    1. Cuando se instala el componente Ranger, también se debe instalar el componente Solr.
      1. El componente Ranger se basa en el componente Solr para almacenar y consultar sus registros de auditoría, que de forma predeterminada usa HDFS como almacenamiento. Estos datos de HDFS se borran cuando se borra el clúster. A fin de configurar el componente de Solr para almacenar datos, incluidos los registros de auditoría de Ranger, en Cloud Storage, usa la propiedad de clúster dataproc:solr.gcs.path=gs://<bucket> cuando crees tu clúster. Los datos de Cloud Storage se conservan después de que se borra el clúster.
    2. Pasa los URI de Cloud Storage de la clave y la contraseña de KMS al comando de creación de clústeres. Para ello, configura las propiedades del clúster dataproc:ranger.kms.key.uri y dataproc:ranger.admin.password.uri.
    3. De manera opcional, puedes pasar la contraseña del usuario admin de la base de datos de Ranger a través de un URI de archivo de Cloud Storage encriptado configurando la propiedad del clúster dataproc:ranger.db.admin.password.uri.
    4. De forma predeterminada, el componente Ranger usa la instancia de la base de datos de MySql que se ejecuta en el primer nodo de la instancia principal del clúster. Para conservar la base de datos de Ranger después de borrar el clúster, puedes configurar el clúster para que use una instancia externa de Cloud SQL. Para usar una instancia externa de Cloud SQL, haz lo siguiente:

      1. Antes de crear el clúster, debes configurar la instancia de Cloud SQL para habilitar la marca de base de datos log_bin_trust_function_creators estableciéndola en on. Esto permite que las secuencias de comandos de configuración del esquema de Ranger se ejecuten durante la creación del clúster. Después de crear el clúster correctamente, puedes restablecer esta marca a off.
      2. Configura la propiedad de clúster dataproc:ranger.cloud-sql.instance.connection.name en la instancia de Cloud SQL.
      3. Establece la propiedad de clúster dataproc:ranger.cloud-sql.root.password.uri en el URI de Cloud Storage de la contraseña raíz encriptada con clave de KMS correspondiente a la instancia de Cloud SQL.
      4. Establece la propiedad de clúster dataproc:ranger.cloud-sql.use-private-ip para indicar si la conexión a la instancia de Cloud SQL es sobre IP privada.

      Cuando se usa una instancia externa de Cloud SQL, el componente Ranger usa el proxy de autenticación de Cloud SQL para conectarse a la instancia de Cloud SQL. Para usar el proxy, haz lo siguiente:

      1. Configura el permiso de la API sqlservice.admin cuando crees el clúster (consulta Autoriza solicitudes con OAuth 2.0). Si usas el comando gcloud dataproc cluster create, agrega el parámetro --scopes=default,sql-admin.
      2. Habilita la API de Administrador de SQL en tu proyecto.
      3. Asegúrate de que la cuenta de servicio del clúster tenga la función Editor de Cloud SQL.
      4. Dado que el proxy de autenticación de Cloud SQL en el nodo principal crea conexiones de salida a la instancia de Cloud SQL a través del puerto 3307, asegúrate de que se permitan las conexiones TCP de salida desde el nodo principal a la instancia de Cloud SQL a través del puerto 3307. Para obtener más información, consulta Cómo funciona el proxy de autenticación de Cloud SQL.

    Consola deGoogle Cloud

    1. En la consola de Google Cloud , abre la página Crear clúster.
    2. Haz clic en Configuración adicional para expandir esa sección.
    3. Edita los componentes opcionales.
    4. En el panel que se abre, selecciona las casillas de verificación de Ranger y Solr y, luego, haz clic en Guardar.

    gcloud CLI

    Para crear un clúster de Managed Service para Apache Spark que incluya el componente de Ranger, usa el comando gcloud dataproc clusters create cluster-name con la marca --optional-components.

    gcloud dataproc clusters create cluster-name \
        --optional-components=SOLR,RANGER \
        --region=region \
        --enable-component-gateway \
        --properties="dataproc:ranger.kms.key.uri=projects/project-id/locations/global/keyRings/my-keyring/cryptoKeys/my-key,dataproc:ranger.admin.password.uri=gs://my-bucket/admin-password.encrypted" \
        ... other flags
    

    API de REST

    Especifica los componentes Ranger y Solr en el campo SoftwareConfig.Component como parte de una solicitud clusters.create de la API de Dataproc. También debes configurar las siguientes propiedades del clúster en el campo SoftwareConfig.Component.properties:

    1. dataproc:ranger.kms.key.uri: "projects/project-id/locations/global/keyRings/my-keyring/cryptoKeys/my-key"
    2. dataproc:ranger.admin.password.uri : "gs://my-bucket/admin-password.encrypted"

Haz clic en la pestaña Interfaces web. En Puerta de enlace del componente, haz clic en Ranger para abrir la interfaz web de Ranger. Accede con el nombre de usuario de administrador de Ranger (por ejemplo, "admin") y la contraseña.

Registros de administrador de Ranger

Los registros de Ranger admin están disponibles en Logging como registros ranger-admin-root.