En esta página se explica cómo configurar Kerberos para tu servicio Dataproc Metastore que usa el protocolo de endpoint gRPC. Si tu servicio Dataproc Metastore usa el protocolo de endpoint Thrift, consulta Configurar Kerberos para endpoints Thrift.
Antes de empezar
Familiarízate con 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
. - Un principal de Kerberos.
Para obtener más información sobre cómo funcionan estos recursos de Kerberos con un servicio de Dataproc Metastore, consulta Acerca de Kerberos.
Crea y aloja tu propio KDC de Kerberos o consulta cómo usar el KDC local de un clúster de Dataproc.
Crea un segmento de Cloud Storage o consigue acceso a uno que ya tengas. Debes almacenar tu archivo
krb5.conf
en este contenedor.
Roles obligatorios
Para obtener el permiso que necesitas para crear un metastore de Dataproc configurado con Kerberos, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en tu proyecto, según el principio de privilegio mínimo:
-
Conceder control total sobre los recursos de Dataproc Metastore (
roles/metastore.editor
) -
Concede acceso completo a todos los recursos de Dataproc Metastore, incluida la administración de políticas de gestión de identidades y accesos (
roles/metastore.admin
) -
Concede acceso de lectura y escritura gRPC a los metadatos de Dataproc Metastore (
roles/metastore.metadataEditor
)
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene el permiso metastore.services.create
, que es necesario para crear un metastore de Dataproc configurado con Kerberos .
También puedes obtener este permiso con roles personalizados u otros roles predefinidos.
Para obtener más información sobre roles y permisos específicos de Dataproc Metastore, consulta Gestionar el acceso con IAM.Para obtener más información, consulta Gestión de identidades y accesos y control de acceso de Dataproc Metastore.
Configurar Kerberos para Dataproc Metastore
En las siguientes instrucciones se explica cómo configurar Kerberos para un servicio Dataproc Metastore que usa el endpoint gRPC.
Primero, crea un metastore de Dataproc que use el endpoint de gRPC. Después, crea un clúster de Dataproc configurado con Kerberos y conéctate a él.
Crear un servicio de Dataproc Metastore con el endpoint gRPC
Para crear un Dataproc Metastore que use el endpoint de gRPC, ejecuta el siguiente comando gcloud metastore services create
:
gcloud
gcloud metastore services create SERVICE \
--instance-size=medium \
--endpoint-protocol=grpc
Sustituye:
SERVICE
: el nombre de tu servicio de Dataproc Metastore
Crear un clúster de Dataproc y conectarse a su servicio
Para crear un clúster de Dataproc configurado con Kerberos, ejecuta el siguiente comando gcloud dataproc clusters create
.
En este comando, la opción --enable-kerberos
crea el archivo de tabla de claves de Kerberos, el archivo krb5.conf
y el principal. Todos estos valores se crean con nombres predeterminados y ajustes definidos por 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'
Sustituye:
CLUSTER_NAME
: el nombre de tu clúster de Dataproc.PROJECT_ID
: tu ID de proyecto de Google Cloud.REGION
: la Google Cloud región en la que quieres crear tu clúster de Dataproc.DATAPROC_METASTORE_NAME
: el nombre del servicio de Dataproc Metastore que vas a asociar al clúster, con el siguiente formato:projects/<my_project>/locations/<location>/services/<service_id>
.
Configurar Dataproc antes de enviar tareas
Para ejecutar tus trabajos de Dataproc,
debes añadir el usuario hive
a la propiedad allowed.system.users
en el
archivo container-executor.cfg
de Hadoop. De esta forma, los usuarios pueden ejecutar consultas para acceder a datos, como select * from
.
En las siguientes instrucciones se muestra cómo conectarse por SSH al clúster principal de Dataproc asociado a su servicio Dataproc Metastore y actualizar el archivo container-executor.cfg
.
- En la consola de Google Cloud , ve a la página Instancias de VM.
En la lista de instancias de máquinas virtuales, haz clic en SSH en la fila del nodo principal de Dataproc (
your-cluster-name-m
).Se abrirá una ventana del navegador en el directorio principal del nodo.
En la sesión SSH, abre el archivo
container-executor.cfg
de Hadoop.sudo vim /etc/hadoop/conf/container-executor.cfg
Añade la siguiente línea en cada nodo de Dataproc.
allowed.system.users=hive
Obtener un ticket de Kerberos
En las siguientes instrucciones se explica cómo generar un ticket de Kerberos.
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 de keytab predeterminado generado por 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 de
_HOST
se obtiene cuando el archivo keytab se muestra con el comandoklist -kte
. Contiene el nombre de host del nodo principal.
(Opcional) Añadir un nuevo principal
Para añadir un nuevo principal, ejecuta el siguiente comando.
sudo kadmin.local -q "addprinc -randkey PRINCIPAL" sudo kadmin.local -q "ktadd -k /etc/security/keytab/hive.service.keytab PRINCIPAL"
Obtén el ticket de Kerberos.
sudo klist -kte /etc/security/keytab/hive.service.keytab sudo kinit -kt /etc/security/keytab/hive.service.keytab PRINCIPAL sudo klist sudo hive