Seguridad en Hadoop y Cloudera Data Platform (CDP)

Última actualización: 07/06/2021

En esta entrada aprenderás los elementos y las capas de seguridad que forman parte de la plataforma de Cloudera CDP para securizar un clúster del ecosistema Hadoop. Estoy seguro de que algunos de estos componentes ya los conocerás pero es importante ver como trabajan en conjunto para garantizar la seguridad de todo el sistema.

Seguridad en Cloudera CDP

Seguridad en la Identidad y Perímetro

Estas herramientas realizan la autenticación de los usuarios y mapean los usuarios a los grupos. También validan que los usuarios son correctos en el directorio empresarial.

Kerberos

Es un protocolo de autenticación creado por el MIT entre usuarios y servicios de red.

Permite establecer conexiones seguras entre los componentes internos de Cloudera y tener un control de identidades. Se ha construido con la idea de que los secretos compartidos establecen la confianza entre los elementos de la red.

Kerberos proporciona autenticación para aplicaciones cliente-servidor usando criptografía para garantizar la seguridad sin transmitir contraseñas.

Conceptos clave de Kerberos:

  • Realm: Constituyen todos los elementos con la misma base de datos de Kerberos, como EXAMPLE.COM
  • Principal: Elemento de la red. Hay principals de usuarios (UPN) y de servicio (SPN). Su formato es del tipo [email protected], como [email protected]
  • Keytab: Este fichero contiene la contraseña del principal. Debemos mantenerlo protegido con permisos limitados. Se encuentra en la ruta /etc/security/keytabs
  • Kerberos Ticket: Autentica la identidad del usuario, lo emite el servidor KDC
  • Servidor KDC (Key Distribution Center): Se encarga de emitir los tickets de Kerberos
  • Servidor Kadmin: Permite realizar operaciones de administración en la base de datos del KDC

Como vemos, las identidades de Kerberos se gestionan mediante Keytabs en los hosts de cada componente. Los Principals del clúster se almacenan y gestionan en el KDC.

Apache Knox

Knox es un servicio de proxy reverso que expone de forma segura las APIs REST, HTTP y Websockets de nuestro clúster, por ejemplo, las interfaces web de los servicios. El proxy se encarga de propagar el usuario autenticado al backend de estos servicios.

De esta forma, limita los puntos de entrada a los servicios del clúster minimizando la exposición de hosts y de puertos. También proporciona una autenticación centralizada con SSO (Single sign-on) complementando a Kerberos y usando un certificado SSL único. Esto evita la necesidad de usar SPNEGO para clientes REST o HTTP.

Esquema de Apache Knox
Esquema de Apache Knox en Cloudera

Apache Knox tiene una interfaz gráfica de administración desde la que se centraliza la gestión de configuraciones y descripciones de las topologías.

Para verificar la identidad de los usuarios también usaremos LDAP.

Seguridad de Acceso con Apache Ranger

Apache Ranger es una plataforma centralizada open source que define los permisos, las políticas de seguridad y la autorización de los usuarios. Estas políticas determinan lo que los usuarios y las aplicaciones pueden hacer con los datos.

De esta forma, Ranger permite controlar el acceso de forma centralizada definiendo políticas hasta el nivel de fila y columna en tablas Hive. Se puede restringir el acceso en función de las características del usuario (como su pertenencia a un grupo) o por el contexto de ejecución. Además, admite la clasificación de recursos mediante Tags combinado con Apache Atlas.

Ranger soporta también anonimización de datos sensibles mediante el enmascaramiento de columnas y la creación de vistas con filtros de filas dinámicos. La información sensible nunca sale de la base de datos al realizar consultas con Hive o Impala. Esta característica resulta muy útil para evitar tener datos duplicados en las bases de datos. Todo esto se gestiona fácilmente a través de su interfaz gráfica.

En resumen, Apache Ranger proporciona tres capacidades de seguridad:

  1. Autorización: Definición de políticas de seguridad extensible para los servicios del ecosistema Hadoop mediante plugins.
  2. Gestión de Claves: Almacenamiento y gestión de claves de cifrado.
  3. Auditoría: Localización centralizada para todas las peticiones de acceso, creación y actualización de recursos e intentos de login.

Visibilidad con Apache Atlas

Apache Atlas es la capa que reporta de dónde vienen los datos y la manera en la que se están usando mediante la gestión de metadatos. Atlas es una herramienta enfocada en los conceptos de auditoría y de linaje de datos y nos permite responder a preguntas como qué datos se están consumiendo o quién lo está haciendo.

Atlas se ha diseñado para intercambiar estos metadatos con otras herramientas y procesos del stack de Hadoop. Es un sistema open source, escalable y que puede desplegarse en alta disponibilidad.

Mantiene un glosario de términos y un catálogo sobre el que podemos realizar búsquedas en todos los metadatos. También nos permite versionar y auditar los metadatos.

El linaje en Apache Atlas puede propagar las clasificaciones de una columna a columnas creadas posteriormente a partir de los mismos datos. Mediante la interfaz gráfica podremos acceder a una representación gráfica del linaje.

Esquema de Componentes de Apache Atlas
Esquema de Componentes de Apache Atlas

Apache Atlas tiene los siguientes componentes:

  • Atlas Core: Incluye su interfaz gráfica, la API REST y el catálogo.
  • Apache Kafka: Atlas usa Kafka para almacenar las notificaciones de los servicios del clúster.
  • Hooks: Son las piezas que ejecutan en los servicios del clúster y envían a Kafka las notificaciones con los metadatos, son extensibles y se pueden integrar con otras tecnologías.
  • Almacenamiento: Atlas usa HBase y Solr para almacenar, indexar y realizar búsquedas sobre la información.

Protección de Datos en Cloudera

Este nivel permite proteger los datos para evitar su visibilidad no autorizada y es una pata muy importante de la seguridad en Cloudera. Para ello, se usa cifrado y gestión de claves de seguridad.

Cloudera CDP permite seleccionar cifrado para ficheros o para directorios almacenados en el clúster. Este cifrado es transparente para las aplicaciones cliente, que no requieren ningún cambio. Todas las conexiones entre componentes se pueden establecer usando el protocolo SSL/TLS y de esta forma aumentar la seguridad.

Apache Ranger KMS proporciona un servicio de gestión de claves criptográficas escalable para que HDFS y Ozone lo usen para cifrar los datos en reposo. Las claves se pueden crear, actualizar o eliminar a través de la interfaz gráfica de usuario o a través de la API REST.

Cursos de administración y seguridad en Cloudera

A continuación tienes dos cursos que son una opción excelente para iniciarse en torno a la seguridad de Cloudera y de Hadoop:

Curso Seguridad en Hadoop usando Kerberos y Sentry

Seguridad en Hadoop usando Kerberos y Sentry

En este curso aprenderás a habilitar la seguridad en Hadoop usando Kerberos y Sentry en la distribución Cloudera. Incluye 7 horas de vídeo en las que se preparará un clúster desde cero, se securizará y aprenderás a usarlo.

Curso Administración de Hadoop en Cloudera

Administración de Hadoop en Cloudera

Este curso resulta muy útil para administradores de Hadoop y de Cloudera. Enseña a integrar los componentes del clúster con herramientas de seguridad como Active Directory o Sentry y a configurar ACLs, cifrado y auditoría de datos.


A continuación, el vídeo-resumen. ¡No te lo pierdas!


¡Echa un ojo a mis listas de reproducción de Big Data y suscríbete al canal de Youtube para no perderte ningún vídeo nuevo!

Si te ayuda el contenido del blog, considera unirte a la lista de correo para estar al día de Big Data y cupones de formación

Deja una respuesta