Configura Kerberos para los extremos de gRPC de Dataproc Metastore

En esta página, se explica cómo configurar Kerberos para el servicio de Dataproc Metastore que usa el protocolo de extremo de gRPC. Si tu servicio de Dataproc Metastore usa el protocolo de extremo Thrift, consulta Configura Kerberos para extremos de Thrift.

Antes de comenzar

  • Comprende los conceptos básicos de Kerberos.

    En estas instrucciones, se usa un clúster de Dataproc para crear los siguientes recursos de Kerberos:

    • Un archivo Keytab
    • Un archivo krb5.conf
    • Una principal de Kerberos.

    Para obtener más información sobre cómo funcionan estos elementos de Kerberos con un servicio de Dataproc Metastore, consulta Acerca de Kerberos.

  • Crea y aloja tu propio KDC de Kerberos o aprende a usar el KDC local de un clúster de Dataproc.

  • Crea un bucket de Cloud Storage o accede a uno existente. Debes almacenar el archivo krb5.conf en este bucket.

Funciones requeridas

A fin de obtener el permiso necesario para crear un Dataproc Metastore configurado con Kerberos, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto, según el principio de privilegio mínimo:

Si quieres obtener más información para otorgar funciones, consulta Administra el acceso.

Esta función predefinida contiene el permiso metastore.services.create, que se requiere para crear un Dataproc Metastore configurado con Kerberos .

Es posible que también puedas obtener este permiso con funciones personalizadas o con otras funciones predefinidas.

Para obtener más información sobre las funciones y los permisos específicos de Dataproc Metastore, consulta Administra el acceso con la IAM.

Para obtener más información, consulta la IAM y el control de acceso de Dataproc Metastore.

Configura Kerberos para Dataproc Metastore

En las siguientes instrucciones, se muestra cómo configurar Kerberos para un servicio de Dataproc Metastore que usa el extremo de gRPC.

Primero, crea un Dataproc Metastore que use el extremo de gRPC. Después, debes crear un clúster de Dataproc configurado con Kerberos y conectarte a él.

Crea un servicio de Dataproc Metastore con el extremo de gRPC

Para crear un Dataproc Metastore que use el extremo de gRPC, ejecuta el siguiente comando gcloud metastore services create:

gcloud

gcloud metastore services create SERVICE \
     --instance-size=medium \
     --endpoint-protocol=grpc

Reemplaza lo siguiente:

  • SERVICE: Es el nombre del servicio de Dataproc Metastore.

Crea un clúster de Dataproc y conéctate a tu servicio

Para crear un Dataproc configurado con Kerberos, ejecuta el siguiente comando gcloud dataproc clusters create.

En este comando, la opción --enable-kerberos crea el archivo Keytab de Kerberos, el archivo krb5.conf y la principal. Todos estos valores se crean con los nombres y la configuración predeterminados que establece el clúster de Dataproc.

gcloud

gcloud dataproc clusters create CLUSTER_NAME \
    --project PROJECT_ID \
    --region REGION \
    --image-version 2.0-debian10 \
    --dataproc-metastore DATAPROC_METASTORE_NAME \
    --enable-kerberos \
    --scopes 'https://www.googleapis.com/auth/cloud-platform'

Reemplaza lo siguiente:

  • CLUSTER_NAME: Es el nombre de tu clúster de Dataproc.
  • PROJECT_ID: es el ID del proyecto de Google Cloud.
  • REGION: Es la región de Google Cloud en la que deseas crear el clúster de Dataproc.
  • DATAPROC_METASTORE_NAME: Es el nombre del servicio de Dataproc Metastore que adjuntas al clúster, en el siguiente formato: projects/<my_project>/locations/<location>/services/<service_id>.

Configura Dataproc antes de enviar trabajos

Para ejecutar tus trabajos de Dataproc, debes agregar el usuario hive a la propiedad allowed.system.users en el archivo container-executor.cfg de Hadoop. Esto permite a los usuarios ejecutar consultas para acceder a datos, como select * from.

En las siguientes instrucciones, se muestra cómo establecer una conexión SSH a tu clúster principal de Dataproc asociado con tu servicio de Dataproc Metastore y actualizar el archivo container-executor.cfg.

  1. En la consola de Google Cloud, ve a la página Instancias de VM.
  2. En la lista de instancias de máquina virtual, haz clic en SSH en la fila del nodo principal de Dataproc (your-cluster-name-m).

    Se abrirá una ventana del navegador en tu directorio principal del nodo.

  3. En la sesión SSH, abre el archivo container-executor.cfg de Hadoop.

    sudo vim /etc/hadoop/conf/container-executor.cfg
    

    Agrega la siguiente línea en cada nodo de Dataproc.

    allowed.system.users=hive
    

Obtén un boleto para kerberos

Las siguientes instrucciones te muestran cómo generar un ticket de Kerberos.

  1. En la sesión SSH del clúster de Dataproc, genera un ticket de kerberos y conéctate a tu servicio de Dataproc Metastore.

    Este comando usa el nombre predeterminado de keytab que genera tu clúster de Dataproc.

    sudo klist -kte /etc/security/keytab/hive.service.keytab
    sudo kinit -kt /etc/security/keytab/hive.service.keytab hive/_HOST@${realm}
    sudo klist # gets the ticket information.
    

    El valor _HOST se recupera cuando el archivo keytab se enumera con el comando klist -kte. Contiene el nombre de host del nodo principal.

Agrega una principal nueva (opcional)

  1. Para agregar una principal nueva, ejecuta el siguiente comando.

    sudo kadmin.local -q "addprinc -randkey PRINCIPAL"
    sudo kadmin.local -q "ktadd -k /etc/security/keytab/hive.service.keytab PRINCIPAL"
    
  2. Obtén el boleto kerberos.

    sudo klist -kte /etc/security/keytab/hive.service.keytab
    sudo kinit -kt /etc/security/keytab/hive.service.keytab PRINCIPAL
    sudo klist
    sudo hive
    

¿Qué sigue?