¿Qué pasa cuando queremos aplicar seguridad a nuestros Datos? Por lo general podemos aplicar muchos tipos como también, distintas capas de seguridad. Por ejemplo lo más frecuente sería una validación mediante OpenID para los usuarios y mediante API Key para los usos programáticos, con una siguiente capa mediante validación IAM para el uso entre infraestructuras o componente más “físicos” y podemos continuar extendiendo mucho más allá, no quiero profundizar ahora mismo con ello… mi pregunta, mejorada, es la siguiente: ¿Qué pasa cuando queremos aplicar seguridad a nuestros Datos que se consumem mediante subscripción?.
Aquí está el tema, por lo general, deberíamos confiar (democratización de los datos) en un uso eficiente y correcto de los datos vía subscripción pero, quiero ir más allá y aportar una POC que estoy haciendo mediante tres sistemas, muy robustos y que, por ahora, me están funcionando muy bien. Hablo de:
Anteriormente hemos hablado, por separado, de ellos pero ahora me dispongo a fusionarlos para poner en Real el siguiente diagrama:
La idea principal es poder tener varias Pipeline que obtengan datos, sea mediante “push” o “pull” aquí ya cada uno según su necesidad y posibilidades. Éstas los introducirán en nuestro sistema Data Lake, que podrá ser también de distintas formas. Una vez tengamos los datos almacenados, podremos continuar. En el caso que tengamos otra necesidad, por ejemplo: sincronizar datos entre aplicaciones, podremos pasar directamente al siguiente punto.
El siguiente paso es introducirlo a un sistema basado en Kafka, con la intención de poder crear tantos Topics como necesitemos. Cierto es que éste proyecto no lo podremos hacer de cualquier forma, la configuración de Kafka no es fácil y: no tiene retroceso en muchas ocasiones. Deberíamos volver a montarlo.
Una vez tenemos los datos introducidos en Kafka y clasificados mediantes Topics, continuaremos… pero, antes, miremos un poco más allá y introduzco un tema nuevo: los Metadatos.
¿Qué son los Metadatos?
Los Metadatos están definidos por la Organización Nacional de Estándares de Información (NISO) como “estructuras de información que describen, explican, localizan o hacen que sea más fácil la recuperación, el uso o la administración de los recursos de información.”
Por lo tanto al aplicar los estándares a nuestras aplicaciones, tenemos que todos los datos deben estar asociados con sus correspondientes metadatos y podemos tener de tres categorías:
Metadatos descriptivos: aquellos que describes el recurso con los fines de datos como descubrimiento y identificación. Un programa de datos se somete a una reevaluación periódica o periódica que examina su utilidad desde el punto de vista de los datos como su própia viabilidad.
Metadatos estructurales: aquellos que indican la composición de los datos del objeto.
Metadatos administrativos: aquellos que indican una información estadística sobre la gestión de los recursos de datos. Los metadatos deben ser creados por el propietario de cada sistema y almacenados en una ubicación central para facilitar la referenciación por parte de los usuarios de datos internos y externos.
Metadata Store / Catálogo de Datos
Partimos de la base que ya tenemos los datos y que estos están clasificados mediante topics. El siguiente paso será poder capturar estos metadatos y ordenarlos/clasificarlos según nuestro Catálogo de Datos. Para ello usaremos Atlas, una más que eficiente plataforma para poder crear repositorios de metadatos, verificar y corroborar el linaje o ciclo de vida de los mismos, permitirnos búsquedas y, muy interesante, realizar integraciones con otros sistemas a partir de los mismos. Estamos yendo más allá de las típicas y tradicionales entidades de bases de datos.
Cierto es que, todavía podemos continuar usando los datos sin una seguridad aplicada, las aplicaciones que estén subscritas podrían hacer uso de datos que, quizás no les interesan o bien no pueden verlos. Para ello, siguiente paso.
Aplicando políticas de seguridad a los metadatos
El siguiente punto será aplicar la seguridad a los metadatos, es decir, casi dato por dato. Una vez tengamos los mismos “tageados” (tags) podremos crear una relación y aquí nos ayudará Ranger ya que podremos listar los metadatos y aplicar políticas, algunos ejemplos:
- Políticas de clasificación, donde aplicaciones podrán usar o no los tipos de metadatos según el tipo.
- Políticas de prohibición, podríamos habilitar o no un set de aplicaciones (como grupos de usuarios).
- Políticas por tiempo, podríamos aplicar la seguridad por un tiempo determinado.
- Políticas por localización, podríamos tener, por ejemplo, un tipo de metadato que sea consumido en un lugar y otro en otro lugar.
Por ahora, quizás, parece todo un poco teórico pero en las distintas POCs que he podido realizar está funcionando bien, hay que verlo en volúmenes de información altos (por ahora estoy tratando procesos de ingestión de 2/3Gb por minuto). Continuaré evolucionando el artículo…
Autor: Joakim Vivas