Modelo de Integración
Extracción de metadatos
Mediante las librerías ofrecidas por Azure, se autentica en la cuenta de almacenamiento que contiene el contenedor que se quiere gobernar.
Una vez realizada la conexión se recorre el contenedor en cuestión para poder generar un árbol representando todo el contenido del mismo.
Para la extracción de metadata de un objeto en cuestión se utiliza la misma conexión y las mismas herramientas proporcionadas por la librería de Azure para poder leer el metadata que posteriormente será enviado a Anjana para crear el objeto.
Los siguientes atributos son los que el plugin va a extraer como metadato.
Si se desea que el objeto en Anjana tenga estos atributos se debe crear el campo correspondiente en la tabla attribute_definition con el mismo nombre que en el documento y estar presentes en la plantilla del objeto.
El conjunto de atributos en el objeto extraído es opcional; excepto schema, physicalName, path, infrastructure, technology y zone para el caso en que el objeto extraído vaya a ser gobernado por Anjana.
-
schema con el valor del contenedor de Azure.
-
physicalName y name con el mismo valor, el nombre del fichero dentro de Azure.
-
path con el path y el nombre del recurso si es un fichero.
-
infrastructure con el valor seleccionado
-
technology con el valor seleccionado
-
zone con el valor seleccionado
-
creationTime con la fecha de creación del fichero
-
lastModified con la fecha de la última modificación del fichero
-
eTag con el eTag del fichero
-
fileSize con el tamaño del fichero en bytes
-
contentType con el tipo del fichero
-
contentMd5 con el md5 del contenido del fichero
-
contentEncoding con la codificación del fichero
-
contentDisposition con la disposición del fichero
-
contentLanguage con el lenguaje del fichero
-
cacheControl con el valor del control de caché del fichero
-
leaseStatus con el estado que tiene el fichero a nivel de bloqueo, puede ser
-
LOCKED: El fichero está bloqueado por la operación de algún servicio.
-
UNLOCKED: El fichero no tiene ningún bloqueo.
-
-
leaseState con el estado del bloqueo que tiene el fichero, puede ser
-
AVAILABLE: No existe un bloqueo activo.
-
BREAKING: Transición hacia BROKEN.
-
BROKEN: No está siendo utilizado por otro servicio pero se liberará cuando expire el bloqueo. No se permite renovar el bloqueo.
-
EXPIRED: El bloqueo anterior ha expirado y se puede volver a bloquear por otro servicio o renovar (en el caso de que no se haya roto antes).
-
LEASED : Bloqueado por otro servicio.
-
-
leaseDuration con el tipo de lock que tiene el fichero, puede ser
-
FIXED: El bloqueo actual tiene un tiempo máximo
-
INDEFINITE: El bloqueo actual no tiene un tiempo máximo, se tiene que eliminar manualmente mediante una petición de release o broke.
-
-
copyId con el identificador de la última operación de copia sobre el fichero (si nunca se ha realizado una copia o se ha modificado el fichero esta propiedad no tiene valor)
-
copyStatus con el estado de la última operación de copia sobre el fichero (si nunca se ha realizado una copia o se ha modificado el fichero esta propiedad no tiene valor), puede ser
-
PENDING: Existe una operación en proceso
-
SUCCESS: La última operación terminó con éxito
-
ABORTED: La última operación se aborto
-
FAILED: La última operación falló.
-
-
copySource con el path del origen de la última operación de copia sobre el fichero (si nunca se ha realizado una copia o se ha modificado el fichero esta propiedad no tiene valor)
-
copyProgress con el número de bytes copiados y bytes totales del origen de la última operación de copia sobre el fichero (si nunca se ha realizado una copia o se ha modificado el fichero esta propiedad no tiene valor)
-
copyCompletionTime con la fecha de la última vez que se realizó una operación de copia sobre el fichero (si nunca se ha realizado una copia o se ha modificado el fichero esta propiedad no tiene valor)
-
copyStatusDescription con la descripción de la última operación de copia sobre el fichero si esta ha sido abortada o ha fallado (si nunca se ha realizado una copia o se ha modificado el fichero esta propiedad no tiene valor)
-
isServerEncrypted indicando si el fichero está encriptado
-
isIncrementalCopy indicando si el fichero es una copia incremental
-
accessTier con el tipo de nivel de acceso del fichero, puede ser
-
ARCHIVE: El fichero no se puede leer ni modificar.
-
COOL: El fichero se espera que no se lea o modifique de manera frecuente.
-
HOT: El fichero se espera que se lea o modifique de manera frecuente.
-
P4, P6, P10, P15, P20, P30, P40, P50, P60, P70 o P80: Estas opciones se refieren a cuando el medio en el que se guardan los ficheros no es flexible y tienen valores fijos tanto en cantidad almacenable como velocidades y número de acceso. En algunos casos tienen expansiones temporales en caso de que se exceda su acceso.
-
-
archiveStatus con el estado de la rehidratación del fichero (solo aplica si el fichero esta en a nivel de acceso de ARCHIVE y se quiere volver a hacer accesible), puede ser
-
REHYDRATE_PENDING_TO_HOT: Está en proceso de ARCHIVE hacia la HOT
-
REHYDRATE_PENDING_TO_COOL: Está en proceso de ARCHIVE hacia la COOL
-
-
encryptionKeySha256 con la clave usada para encriptar el fichero
-
accessTierChangeTime con la fecha cuando el nivel de acceso fue modificado por última vez
-
isDirectory indicando si el fichero es un directorio (sólo podrá ser verdadero en casos de ficheros particionados como avro o parquet)
Además de estos valores presentes en todo fichero de Azure Storage se pueden poner propiedades extras, todas las propiedades que se incluyan se recogerán y extraerán.
También enviará atributos relativos a los campos del recurso pedido, siempre dependiendo del contenido y tipo del recurso. Para más información leer el documento de ‘Anjana Data - PROD.INS - Extracción de metadata de ficheros’.
Muestreo de datos
Mediante las librerías ofrecidas por Azure, se autentica en la cuenta de almacenamiento que contiene el contenedor que se quiere gobernar.
Una vez realizada la conexión, se localiza el objeto a muestrear, se lee su contenido (hasta el máximo número de resultados configurado) utilizando librerías de Apache según tipo de fichero qué es y se devuelven los resultados.
Gobierno activo
Mediante las librerías ofrecidas por Azure, se autentica en la cuenta de almacenamiento que contiene el contenedor que se quiere gobernar.
Se localiza el objeto en el que se quieren manipular los permisos, y mediante las herramientas de manipulación de ACLs, se añaden los permisos necesarios al grupo sobre los objetos (Read, Execute en todos los niveles desde el raíz hasta el fichero que representa el dataset y en el caso de representar un fichero particionado, a todos los ficheros presentes en ese momento) cuando se incluyen en un DSA. Adicionalmente, eliminar la ACL de un grupo cuando éste expira o el propio objeto expira.
El plugin únicamente otorga acceso a ficheros o directorios dentro de los blobs de la cuenta de almacenamiento que gobierne. El acceso a la cuenta de almacenamiento para los usuarios se debe hacer manualmente. Se recomienda dar a los usuarios el rol de lector sobre la cuenta de almacenamiento (esto les permitirá ver el nombre de los blobs pero no acceder a su contenido).
Edición de objetos
Mediante las librerías ofrecidas por Azure, se autentica en la cuenta de almacenamiento que contiene el contenedor que se quiere gobernar, en este caso, gestionar la activación o desactivación de entidades no nativas.
Cuando una entidad no nativa se active se darán los permisos necesarios al grupo sobre los objetos (Read, Execute en todos los niveles desde el raíz hasta el fichero que representa el dataset y en el caso de representar un fichero particionado, a todos los ficheros presentes en ese momento) y cuando se desactive el objeto, se eliminarán las ACL del grupo cuando éste expira o el propio objeto expira.
El plugin únicamente otorga acceso a ficheros o directorios dentro de los blobs de la cuenta de almacenamiento que gobierne. El acceso a la cuenta de almacenamiento para los usuarios se debe hacer manualmente. Se recomienda dar a los usuarios el rol de lector sobre la cuenta de almacenamiento (esto les permitirá ver el nombre de los blobs pero no acceder a su contenido).
Credenciales requeridas
Es necesario registrar una aplicación en Entra ID y generar el necesario clientID y secret para que el plugin pueda autenticar y adquirir los permisos necesarios para cada funcionalidad.
El plugin tiene la capacidad de manejar solo un storage account, por tanto, es necesario hacer una instancia para cada uno de los storage accounts a manejar.

Extracción de metadatos y muestreo de datos
Se requiere permisos de lectura sobre las diferentes tipologías de almacenamiento más la propia configuración general de la cuenta de almacenamiento.
-
Reader: View all resources, but does not allow you to make any changes.
-
Storage Blob Data Reader: Allows for read access to Azure Storage blob containers and data
-
Storage File Data SMB Share Reader: Allows for read access to Azure File Share over SMB
-
Storage Table Data Reader: Allows for read access to Azure Storage tables and entities

Gobierno activo de accesos y estructuras
-
User Access Administrator: Lets you manage user access to Azure resources.
-
Storage Blob Data Owner: Allows for full access to Azure Storage blob containers and data, including assigning POSIX access control.
Edición de objetos
-
User Access Administrator: Lets you manage user access to Azure resources.
-
Storage Blob Data Owner: Allows for full access to Azure Storage blob containers and data, including assigning POSIX access control.

Limitaciones
El máximo número de ACLs efectivos en un fichero o directorio es de 28.
A modo práctico esto significa que como máximo un blob puede ser gobernado por hasta 28 DSAs, si ningún otro sistema aplica ACLs a ese blob.
Al dar permisos a los ficheros particionados, si los ficheros de esas particiones cambian o se añaden más, no contendrán los permisos que tienen otras partes del mismo.
Dada las estrictas limitaciones de la tecnología se recomienda deprecar y expirar el DSA lo antes posible una vez todos sus objetos gobernados han sido expirados para limpiar ACLs en desuso.
Configuración
En la Configuración técnica y en Tot despliegue de plugins hay algunas directrices.
Existe un YAML de ejemplo para facilitar la configuración en Nexus / com / anjana / documentation (necesario login previo) con explicaciones de las propiedades y valores por defecto.
Este plugin puede conectarse a varias instancias de la misma tecnología, también se puede ver el YAML de ejemplo.