Interactúa con Alfresco desde la línea de comandos (con curl)

Si eres de los que te sientes más cómodo usando una shell de Linux o Unix que el ratón, creo que este artículo te va a gustar.

Algunas veces necesitamos chequear algún dato concreto o realizar alguna tarea específica en Alfresco. La posibilidad de interactuar con Alfresco desde la línea de comandos (desde una shell) nos permite automatizar algunas tareas mediante scripts o sacarle mucho más partido a la aplicación para hacer diferentes tipos de tareas.

Vamos a ver qué podemos hacer con el comando “curl”. Recuerda que en los siguientes ejemplos donde aparece “localhost” deberás poner la IP o nombre del servidor así como usuario y contraseña, algunos comandos solo funcionan si el usuario tiene permisos de administrador en el repositorio:

Extraer el identificador del repositorio, muy útil para desarrollos o configurar la replicación:

[bash]
curl -u usuario:contraseña "http://localhost:8080/alfresco/s/cmis" | grep repositoryId|perl -pi -e "s/.*>(.*)<.*/\1/"
[/bash]

Subir ficheros usando diferentes protocolos, en estos ejemplos el fichero.doc está en el mismo directorio local desde donde lanzamos el comando:

FTP a un sitio concreto (versión 4.0 que no hay que indicar sites en la URL ya que mapea directamente a sites cualquier acceso FTP):

[bash]
curl -u usuario:contraseña -T fichero.doc "ftp://localhost/Alfresco/nombre-corto-del-sitio/documentLibrary/"
[/bash]

Webdav (HTTP) a un sitio concreto (versión 4.0 que no hay que indicar sites en la URL ya que mapea directamente a sites cualquier acceso webdav):

[bash]
curl -u usuario:contraseña -T fichero.doc "http://localhost:8080/alfresco/webdav/nombre-corto-del-sitio/documentLibrary/"
[/bash]

Subir un fichero atacando a la API (HTTP):

[bash]
curl -v -X POST -F [email protected] -F siteid=nombre-corto-del-sitio -F containerid=documentLibrary -F uploaddirectory=/directorio-dentro-del-sitio http://usuario:contraseña@localhost:8080/alfresco/service/api/upload
[/bash]

Por ejemplo, si queremos crear (subir) unos cuantos contenidos podríamos usar este pequeño script lanzado desde la shell de linux directamente:

[bash]
for i in `seq 1 300`
> do
> echo "uploading file $i"
> touch file$i.txt
> curl -u usuario:contraseña -T file$i.txt "http://localhost:8080/alfresco/webdav/ficheros-personales/documentLibrary/"> done
[/bash]

El script/comando anterior creará en local 300 ficheros txt vacíos con el nombre file1.txt hasta file300.txt y los irá subiendo a Alfresco mediante webdav. También podemos hacerlo mediante la API, por FTP, etc.

En el blog de Cesar Capillas podemos ver otros scripts invocando estos comandos para hacer subidas.

Otra forma de hacer llamadas a Alfresco es mediante los webscripts, incluyendo los webscripts CMIS, podemos ver un listado de todos los disponibles por grupos aquí http://localhost:8080/alfresco/service/index o incluso un listado completo aquí http://localhost:8080/alfresco/service/index/uri/

Para obtener un ticket de sesión podríamos usar el siguiente comando:

[bash]
curl "http://localhost:8080/alfresco/service/api/login?u=usuario&pw=contraseña"|grep ticket|perl -pi -e "s/.*>(.*)<.*/\1/"
[/bash]

Ver el estado de las auditorías (activadas o desactivadas):

[bash]
curl -X GET "http://usuario:contraseña@localhost:8080/alfresco/service/api/audit/control"
[/bash]

Ver (si están activadas las auditorías) los logins fallidos:

[bash]
curl -u usuario:contraseña "http://localhost:8080/alfresco/service/api/audit/query/AuditExampleLogin1/auditexamplelogin1/login/error/user?verbose=true"
[/bash]

Ver algunos datos concretos del repositorio:

[bash]
curl -X POST "http://usuario:contraseña@localhost:8080/alfresco/service/api/admin/usage"
{
"lastUpdate" : 1342542164417,
"users" : 6,
"documents" : 545,
"licenseMode" : "ENTERPRISE",
"readOnly" : false,
"updated" : true,
"licenseValidUntil" : null,
"level" : 0,
"warnings": [],
"errors": []
}
[/bash]

Sacar un listado de los sites:

[bash]
curl -X GET "http://usuario:contraseña@localhost:8080/alfresco/service/api/sites"
[/bash]

Consultar la versión de Alfresco:

[bash]
curl -X GET "http://usuario:contraseña@localhost:8080/alfresco/service/api/server"
[/bash]

Exportar un sitio con info de miembros, grupos y contenidos (fichero ZIP con varios ACP en su interior):

[bash]
curl -X GET "http://usuario:contraseña@localhost:8080/alfresco/service/api/sites/nombre-corto-del-sitio/export" > sitio.zip
[/bash]

Ver todos los tipos mime y transformaciones soportadas por Alfresco:

[bash]
curl -X GET "http://usuario:contraseña@localhost:8080/alfresco/service/mimetypes?mimetype={mimetype?}"
[/bash]

Crear un sitio:

[bash]
curl -u usuario:contraseña -H ‘Content-Type: application/json’ -d "{‘title’:’site$i’,’visibility’:’PUBLIC’,’description’:”,’sitePreset’:’site-dashboard’,’shortName’:’site$i’}" "http://localhost:8080/alfresco/s/api/sites"
[/bash]

Si conoces otros usos útiles con curl no dudes en ponerlos en los comentarios.

Monitorización de Alfresco con New Relic

New Relic es un sistema de monitorización en la nube, pero no es el típico servicio de monitorización remota de puertos o disponibilidad de aplicaciones, New Relic puede ser complementario a estos sistemas ya que monitoriza los recursos del servidor o servidores de turno de forma automática, sin casi ninguna configuración (sólo la instalación del agente) y permite controlar aplicaciones web de todo tipo (Java, PHP, Ruby, .Net, Python, etc.), carga de páginas, respuesta de la web, operaciones de la JVM, de SOLR, etc. A nivel de servidor podemos monitorizar los procesos, red, discos, etc. Además de fijar umbrales para el envío de alertas. La lista completa de características están aquí, no te las pierdas. Recuerda que ya hablé por aquí de cómo monitorizar otros aspectos de Alfresco con Nagios/Icinga y generar gráficas.

Antes de seguir estos pasos puedes registrarte en la web de New Relic, tienen diferentes tipos de cuentas en función de los servicios que queramos, hay una gratuita que es la que he usado para probar mi monitorización del servidor Alfresco que tengo para pruebas.

Por lo tanto, a continuación os voy a contar como instalar el agente para monitorizar un servidor, en mi caso en un servidor Linux (Redhat/Centos) instalando el agente mediante RPM y también como monitorizar Alfresco instalando el agente java en la aplicación. Si quieres saber como instalarlo en otros sistemas operativos o aplicaciones tienes muy buena información paso a paso aquí: https://newrelic.com/docs/server/new-relic-for-server-monitoring

Descargamos e instalamos la información del repo rpm de New Relic que nos permitirá instalar posteriormente el rpm del paquete para monitorizar el servidor:

[bash]
rpm -Uvh http://download.newrelic.com/pub/newrelic/el5/i386/newrelic-repo-5-3.noarch.rpm
[/bash]

Ahora instalamos el paquete de monitorización:

[bash]
yum install newrelic-sysmond
[/bash]

Añadimos a la configuración la llave de la licencia:

[bash]
nrsysmond-config –set license_key=que está en tu perfil de la web de New Relic
[/bash]

Arrancamos el servicio:

[bash]
/etc/init.d/newrelic-sysmond start
[/bash]

Podemos ver el log aquí:

[bash]
tail -f /var/log/newrelic/nrsysmond.log
[/bash]

La configuración se encuentra en /etc/newrelic/nrsysmond.cfg

Con el siguiente comando activamos el servicio en el arranque del servidor (para RedHat/Centos/Fedora):

[bash]
chkconfig newrelic-sysmond on
[/bash]

Hecho esto puedes ir a tu Dashboard en la web de New Relic (http://rpm.newrelic.com) y en la pestaña “Servers” ver el servidor que empieza a dibujar gráficas como las siguientes:

Pincha en la imagen para verla a tamaño completo

Recuerda que para que esto ocurra, el servidor debe tener acceso a internet para poder enviar los datos a los servidores de New Relic.

Ahora vamos a monitorizar la aplicación Alfresco. Desde la web de ayuda de New Relic se puede descargar el agente para cada lenguaje de programación, una vez descargado sube el fichero newrelic_agent2.5.zip al servidor, vamos a ver como instalarlo para Tomcat (del bundle que viene en el paquete de Alfresco por ejemplo):

Descomprimimos el agente Java:

[bash]
unzip /root/newrelic_agent2.5.zip
[/bash]

Nos vamos al directorio donde se encuentra el servidor de aplicaciones, en mi caso de Alfresco Enterprise pero es igual de válido para Community:

[bash]
cd /opt/alfresco-enterprise-4.0.0/tomcat/
[/bash]

Instalamos el agente java en Alfresco, recuerda ejecutar este comando desde dentro del directorio de Tomcat, para otros servidores mira la ayuda:

[bash]
# /opt/alfresco-enterprise-4.0.0/java/bin/java -jar /root/newrelic/newrelic.jar install

may 18, 2012 12:50:24 PM NewRelic INFO: Agent is using Log4j

***** ( ( o)) New Relic Java Agent Installer

***** Installing version 2.5.0 …

Backed up start script to /opt/alfresco-enterprise-4.0.0/tomcat/bin/catalina.sh.20120518_125024

Added agent switch to start script /opt/alfresco-enterprise-4.0.0/tomcat/bin/catalina.sh

No need to create New Relic configuration file because:

.:. A config file already exists: /opt/alfresco-enterprise-4.0.0/tomcat/newrelic/newrelic.yml

***** Install successful

***** Next steps:

You’re almost done! To see performance data for your app:

.:. Restart your app server

.:. Exercise your app

.:. Log into http://rpm.newrelic.com

Within two minutes, your app should show up, ready to monitor and troubleshoot.

If app data doesn’t appear, check newrelic/logs/newrelic_agent.log for errors.
[/bash]

Lee bien lo que te muestra la salida del comando de instalación, debes reiniciar el servidor de aplicaciones, luego vamos a http://rpm.newrelic.com y en unos minutos empezaremos a ver información muy útil sobre Alfresco en la pestaña “Applications” como se ve a continuación:

Pincha en la imagen para verla a tamaño completo

Si quieres ir un poco más allá con la monitorización de Alfresco, concretamente de Share puedes ver este interesantísimo artículo de Jan Pfitzner.

Revisión del libro “Alfresco Share” de Packtpub

Alfresco Share bookComo en ocasiones anteriores, la gente de Packtpub me han enviado el último libro sobre Alfresco para leerlo y hacer un comentario en el blog. Como siempre en esta editorial, el libro está disponible tanto en digital como en papel, lo que hace su lectura muy cómoda y para todos los gustos.

Este nuevo libro, escrito por Amita Bhandari, Pallika Majmudar y Vinita Choudhary de Cignex (partner de Alfresco), está totalmente enfocado a lo que su titulo deja bien claro, a Alfresco Share. La verdad es que es un poco raro porque gran parte del libro está muy enfocado a usuarios finales y avanzados, explica con capturas como funcionan todos los componentes y características de Alfresco Share, pero también incluye algunas píldoras demasiado técnicas sobre la instalación, configuración y desarrollo, algo que no es lo que se supone que debe cubrir el libro, aunque nunca sobra, creo que puede asustar al publico objetivo de este libro que son los usuarios/clientes.

Aunque cubre características generales también se cubren en algunas partes novedades de la versión 4.0, pero no se aclara en ningún caso cuando se trata de algo 3.4 o de 4.0, por lo que puede llevar a confusión para usuarios con versiones anteriores.

El libro empieza con una sencilla pero a la vez muy útil revisión sobre qué es y para que sirve Alfresco Share, útil para preparar ofertas aunque habría que orientarlo. La segunda parte, sobre instalación y no han acertado ya que lo complican demasiado, al estar orientado a usuarios finales, podrían haber comentado la instalación mediante el bundle y poco más, el resto es intentar rizar el rizo sin necesidad.

El capitulo 3 es muy útil para un desarrollador que quiera conocer los componentes de la arquitectura de Alfresco Share en cuanto a personalización. Seguidamente en el capitulo 4 de cómo configurar la autenticación que desentona un poco con la configuración por parte de un administrador o usuario avanzado de los usuarios, grupos, etc.

Los siguientes capítulos (5, 6 y 7) realizan una descripción completa de la gestión de sitios, sin grandes complicaciones usando un caso de uso de un departamento de marketing muy común pero útil. Buena explicación de los permisos y caso de uso. Otra vez, meten configuración de correo saliente en medio de algo orientado a usuarios, no creo que sea un acierto mezclar ambas cosas. Se explica de forma resumida todas las características de colaboración y como funcionan. Como curiosidad han añadido un truco de integración de los calendarios con Exchange. Por último en estos capítulos orientados a usuarios, se cubre con información sobre la “Biblioteca de Documentos”, de forma sencilla y no muy extensa, se queda un poco cojo en cuanto a la edición online y no hablan demasiado sobre búsquedas o búsquedas avanzadas de contenidos.

El capítulo 8 está completamente orientado a los flujos de trabajo, tanto simples o sencillos mediante reglas de contenidos como los flujos de trabajo avanzados mediante Activiti o jbpm. De una forma muy completa se hace un ejemplo práctico muy interesante con las reglas de contenidos y creación de workflow simples, muy útil para power users y sacar todo el partido a Alfresco como gestor de contenidos. Hace una buena diferenciación entre los dos tipos de workflow. Me ha parecido mas pobre la explicación de workflows avanzados pero suficiente para un usuario avanzado. No dice mucho de la parte puramente técnica sobre Activiti o jbpm pero lo describe de forma suficiente para que un usuario sepa que son.

Para teminar dos capítulos más técnicos, uno sobre configuración o, más bien, personalización de los componentes de un sitio (listas, modelos, gdocs, acciones, workflows avanzados, etc). Y otro capítulo donde se resume como empezar a desarrollar, configurar Eclipse, uso de la SDK de Alfresco, como hacer jars, amps y usar ant. Creo que no pega mucho en el libro ya que lo veo más para usuarios finales, pero por otro lado trae un paquete de código (que se descarga de la web de Packpub) con ejemplos y configuraciones que pueden ser muy útiles para técnicos.

Si quieres aprender desde cero o tienes necesidad de escribir ofertas y manuales incluyendo características de Alfresco Share o casos de uso sencillos, este es tu libro. Si eres experto en esta tecnología, no creo que aprendas nada nuevo. En definitiva, un libro para principiantes que puede servir tanto para un usuario final como para un programador que esté empezando a trabajar con Alfresco Share y personalizarlo.

Puedes comprar este libro aquí y encontrar otros libros sobre Alfresco aquí y aquí.

Certificación de Alfresco, examen ACA y mi experiencia en certificaciones

Actualizado Julio 2014

En los últimos años he hecho varias certificaciones (exámenes), hice el examen Linux LPI en Abril del 2005, Red Hat RHCE en Julio de 2007, el Alfresco Train the Trainer (para dar cursos) en Septiembre de 2007, ITILv3 en 2009, Alfresco Certified Administrator (ACA) y recientemente el AWS Certified Solutions Architect en Abril 2014. Cada uno de esos exámenes fueron diferentes tanto en formato como en dificultad.

En este artículo quiero compartir mi experiencia en esas certificaciones, para poneros en contexto e intentar orientaros sobre la mejor forma de afrontar y preparar los exámenes de certificación de Alfresco basado en mi opinión y también en lo que me han comentado otras personas que los han hecho.

Como podéis ver en el portal Alfresco University, existen dos títulos en el catálogo de certificaciones de Alfresco, ACA (Alfresco Certified Administrator) y ACE (Alfresco Certified Engineer). El primero orientado más a personal de sistemas, seguridad y administradores que quieren demostrar su dominio sobre la instalación, configuración, mantenimiento y resolución de problemas, el segundo orientado a desarrolladores, integradores y que dominan la personalización de la aplicación en las diferentes opciones que ofrece Alfresco.

Mi experiencia previa en el mundo de los exámenes de certificación, opiniones sobre algunos de los que he hecho:

  • Linux LPI constó de dos exámenes tipo test, que se realizan en un centro especializado, de  formato muy parecido a los de Alfresco, no me parecieron muy difícil aunque ya tenía unos años de experiencia en Linux e hice los cursos oficiales de LPI, eso ayudó mucho ya que están orientados al examen.
  • El examen de certificación RedHat RHCE fue sin lugar a dudas el más difícil y del que me siento más orgulloso tener, por dos razones, primero porque me resultó muy completo y técnico, tuve que estudiar muchísimo para sacarlo y segundo porque llevaba años deseando tener esa certificación que pienso es muy valorada en el mundo del TI. Este examen fue totalmente práctico y separado en dos partes, una sobre resolución de problemas en una instalación de Red Hat y la segunda parte había que montar una serie de servicios que se indicaban en una hoja de trabajo. Hice el curso oficial previo al examen (4 días) que estaba relativamente orientado al examen y me ayudó mucho pero lo que más me ayudó fue la experiencia que ya tenía y lo mucho que estudié y practiqué los días antes del examen. Pensad que el curso previo al examen lo hicimos 8 personas pero solo pasaron el examen 3. La experiencia previa y estudiar a conciencia es clave.
  • El examen de certificación Train the Trainer de Alfresco fue en un formato totalmente diferente a los anteriores ya que fue como un examen oral después de un curso de 3 días. A pesar de mi nivel de inglés en aquellos entonces lo pasé pero también tuve que estudiar y preparar el discurso.
  • El test para AWS Certified Solutions Architect no me pareció fácil en absoluto, sobre todo teniendo en cuenta que había hecho el curso Architecting on AWS esa misma semana. Lo cierto es que para pasar esa certificación hay que tener bastante experiencia en AWS y haber trabajado con los diferentes productos y componentes de AWS, de lo contrario es muy difícil pasarlo.

Preparación de la certificación de Alfresco:

Obviamente, la primera respuesta y no es por “vender”, es hacer los cursos oficiales con materiales oficiales, haz todos los que puedas, en serio, te ayudarán mucho, puedes ver los próximos cursos aquí. Piensa que aunque hayas hecho los cursos y tengas experiencia también deberás estudiar o al menos repasar antes del examen.

En el momento de escribir este artículo las preguntas del examen están basadas en versiones 3.4 aunque la mayoría son genéricas que son útiles para la versión 4.0.

La tipología de las preguntas están organizadas en base a al siguiente información (ver los PDF – blueprints en estas webs):

Más información:

  • En este post de Carlos Miguens (Training Manager de Alfresco) puedes ver algunas preguntas de ejemplo que puedes encontrar en el examen – en inglés, también más información en este otro artículo suyo.
  • Tienes un buen puñado de preguntas frecuentes que te resolverán muchas dudas en esta web – en inglés.
  • Alex Ugartondo escribió en abril un artículo en español sobre su experiencia cuando hizo el examen del ACE, con algunas recomendaciones sobre la preparación.
  • Actualizado 25/Mayo/2012: Puedes ver unas preguntas de ejemplo y probar si estás preparado en el siguiente test del ACE y aquí del ACA.

MAS INFORMACION:

 

El examen:

Lo primero que debes hacer es decidir una fecha y marcarla en tu agenda, procura tener ese día tranquilo para poder repasar. Yo prefiero hacer los exámenes por la tarde pero cada uno tiene sus preferencias.

Novedad! A partir de Agosto se ampliarán 15 minutos los exámenes para los países de habla no inglesa.

Una vez sepas cuando quieres examinarte puedes ir a la web de Pearson Vue, sección Alfresco, aquí. En la sección “Locate a Test Center” puedes ver el centro Pearson Vue más cercano a ti. Una vez localizado puedes registrarte y poner fecha a tu examen, eso puedes hacerlo siguiendo los pasos que te indican pinchando en “Schedule a Test”.

Los exámenes ACA (Alfresco Certified Administrator) y el ACE (Alfresco Certified Engineer) son en inglés tienen una duración de 60 minutos y 60 preguntas tipo test que pueden ser de múltiples respuestas, gráficas, con código  o ficheros de configuración con preguntas relacionadas y de tipo verdadero/falso. Para pasar el examen debes acertar al menos el 70% de las preguntas. Al finalizar el examen obtienes automáticamente el resultado del mismo. ¿Que ocurre si no apruebo el examen? Puedes volver a examinarte dos semanas más tarde (pagando igual que en el primer examen), si el segundo intento también suspendes deberás esperar 3 meses para el siguiente examen.

Como dije antes, hice el ACA, el precio total son 195 dólares, unos 150€. El ACE cuesta lo mismo.

Una vez registrado y seleccionado el examen (ACA o ACE) tienes que seleccionar el centro donde te vas a examinar, en mi caso seleccioné el Instituto FOC, en el municipio de Maracena, a 15 minutos del centro de Granada (España). En ese mismo centro me examiné de Linux LPI e incluso fui profesor de Linux y Seguridad hace unos años, así que me iba a encontrar como en casa. No penséis que uno puede copiar o aprovechar que conoce a la gente del centro de examen, durante la duración de la prueba te graban en video para poder auditar tu examen y debes dejar fuera de la sala del examen cualquier cosa que lleves en los bolsillos (teléfono móvil, etc.). No hay opción de vulnerar el sistema, si sabes apruebas, si no, suspendes.

Antes del examen se explica todo en el propio sistema informático. Durante el mismo tienes la posibilidad de marcar las preguntas en las tienes dudas para revisarlas al terminar las 60, antes de finalizar. Las preguntas de una sola elección tienen las respuestas redondeadas y las de varias cuadraditos son con múltiples respuestas, pero siempre se indican cuantas son las que tienes que elegir, y no puedes avanzar a la siguiente si no eliges el numero pedido o respondes cada pregunta. Durante el examen también te dan una especie de pizarra tamaño folio para poder tomar notas, que te retiran al terminar el examen.

Consejo clave:

  • No te lo vas a creer, pero el mejor consejo que te puedo dar es ESTUDIA, salvo que seas un gurú deberás prepararte el examen. Si quieres tener la certificación tienes que estudiar, depende de tu nivel de experiencia será más o menos costoso pero debes hacerlo. Como mínimo hacerlo a conciencia una semana antes del examen. A mi me gusta hacerlo por las noches oyendo música, y en casi todos los casos anteriores estuve al menos una semana sacrificando horas de sueño, pero os aseguro que mereció la pena, no solo en lo profesional sino también en lo personal, un reto superado, ahora vamos a por otro!
  • ¿Qué materiales puedes utilizar? Aparte de los que te entreguen en los cursos oficiales de Alfresco, te aseguro que te va a ayudar mucho para el ACA el pdf Alfresco Enterprise Administrator (que está disponible para clientes en la web de soporte). También hay información muy útil en la wiki de Alfresco y más ordenada en docs.alfresco.com. Otros recursos muy válidos para el ACE son los libros Professional Alfresco, Alfresco Developer Guide o incluso Alfresco 3 Web Services. Tanto para el ACE como para el ACA debes dominar bien la parte de modelado de datos, workflow, sobre módulos AMP, auditoría y buenas prácticas en general. Para ACA, estudia bien sobre los modelos, como desplegarlos, multitenancy, configuraciones en general (subsistemas y alfresco-global.properties), autenticación, amp, auditorías, permisos, reglas, búsquedas, contentstoreselector, configuración y tuning de jvm, etc. Algunas preguntas son muy específicas en cuanto a algún detalle de configuración. Conozco gente con experiencia que me han dicho que con la wiki y docs.alfresco.com han tenido suficiente, depende de ti. Seguro que irán saliendo materiales más ad-hoc como ocurre con otras tecnologías, recuerda que es una certificación de reciente creación.
  • El día del examen ve 30 minutos antes al lugar del examen para evitar prisas de última hora, debes firmar unos documentos y registrarte en el centro del examen. No olvides llevar tu documentación, al menos dos documentos que te identifiquen (por ejemplo el documento de identidad y carné de conducir).

Conclusiones:

  • En contra:
    • Tienes 60 minutos para hacer 60 preguntas, así que date prisa, no dudes, marca las dudosas para repasar al final pero no pierdas tiempo. Ampliado a 80 minutos si no hablas inglés nativo.
    • Es en inglés y para los que no somos nativos debemos leer con mucho cuidado, aunque no son complejas las preguntas no es igual que ser nativo, debes leer las preguntas como mínimo dos veces para asegurarte que lo entiendes bien.
    • Si quieres aprobar el examen debes contestar bien al menos el 70% de las preguntas. En otras certificaciones que he hecho el % es un poco inferior, eso dice mucho de una certificación.
    • No hay ningún examen de prueba para hacerse una idea o un material específico de referencia, salvo lo que he comentado anteriormente, es el precio que hay que pagar por la novedad, pero ya irán saliendo más artículos como este y materiales.
  • A favor:
    • Estas certificaciones son nuevas y al obtenerlas marcas la diferencia. Es conocido por mucha gente que no son fáciles aprobar, eso hace que cuando sacas la certificación tenga mucho más valor. Te puedes vender mejor y demostrar realmente que dominas la tecnología, eres garantía. Cada vez más clientes solicitan estas certificaciones y los partners también.
    • El examen es más barato que otras certificaciones, 195 dólares, (en torno a 150€ dependiendo del cambio del dólar americano).
    • Seguramente aprendas algo nuevo haciendo el examen.

    Y dicho eso, ¿a que esperas para hacer tu examen y demostrar lo que vales? Podrás decir que eres:

    Ánimo y cuéntame tu experiencia en los comentarios.

ACTUALIZACION, comentarios de mi compañero Nathan McMinn:

1.  CMIS.  There are quite a few CMIS questions that I recall from the test and blueprint.  Make sure you are up to speed on CMIS basics.  Things like the URLs used to access it, the types of bindings, the basic domain model and query structure.  All of this stuff is best learned from the specification:

http://docs.oasis-open.org/cmis/CMIS/v1.1/os/CMIS-v1.1-os.html

2.  Freemarker!  The test pool has a bit about freemarker directives and how we use it.  If you know the basics of what’s in the template author’s guide you shouldn’t be surprised by any of these questions:

http://freemarker.org/docs/dgui.html

3.  Alfresco APIs and development.  Expect quite a few questions about our Javascript API.  Specifically, the root scoped API objects and their functions.  Our docs and the wiki cover this pretty well

4.  Content modeling.  Know the limitations of models, how inheritance works and what the various pieces and parts are (aspects, types, properties, etc).  Our docs and the wiki cover this pretty well.  Reviewing our OOTB content models is the best way to get familiar with this, IMHO.

For 3 and 4, read Jeff Potts’ excellent guides on ecmarchitect.com.  In fact, if you haven’t already gone through all of the tutorials in his developer series, now is an excellent time to do so.  Probably 60-70% of the ACE exam is covered there.

5.  The overall architecture.  Some of these might be repeat questions from the ACA.  Speaking of which, when I took the ACE there was about 10-15% total overlap between the two exams.  So, take the ACA first, and you are well on your way to the ACE.

6.  Deployments.  Know how to package and deploy extensions, the various methods of doing so, and the pros/cons of each.  This includes all types of extensions, including models, workflows, web scripts, Java code, etc.  Understand the differences between classpath and data dictionary extension deployment.

7.  Permissions and security.  Know what the various roles are (both at the repo level and the Share site level).  Know what these roles can/cannot do.  Know what a doc owner can do.  Know the auth chain, how it is configured by default.  Understand ACLs, ACEs and the inheritance of permissions.

8.  SOLR.  Everything you need to know about SOLR for the exam should be covered in this blog post.  It is a couple years old, but does a great job explaining how it works w/Alfresco.

http://www.ixxus.com/blog/2012/06/getting-going-solr-alfresco-4

Anyway, I hope you find that useful.  The exam isn’t too tough, but it does cover a lot of ground.

Alerta de seguridad en Alfresco (ALF-13721 y ALF-13726)

Tanto en Alfresco Enterprise como en Community se han detectado dos vulnerabilidades relacionadas con el acceso a la información en el repositorio.

El pasado viernes se publicaron estas dos alertas ALF-13721ALF-13726, aunque se explican en cada uno de esos casos en el Jira de Alfresco, voy a explicarlos para aclarar ciertas dudas que pueden surgir y entender bien la gravedad de ambos casos.

  • ALF-13721, La API REST de SOLR permite acceso no-autenticado al contenido del repositorio.

En realidad se permite el acceso no autenticado a los índices generados por SOLR para cualquier contenido con índices. Por lo tanto esta vulnerabilidad afecta sólo a versiones 4.0.0 Enterprise y 4.0.{a,b,c,d} Community. Está resuelto en la versión 4.0.1 Enterprise y se puede resolver en versiones Community muy fácilmente como se explica en el foro de Alfresco en español añadiendo las lineas correspondientes al fichero web.xml de la aplicación Alfresco. Básicamente la solución es proteger estos paths /alfresco/s/api/solr, /alfresco/wcservice/api/solr y /alfresco/wcs/api/solr como se indica en la alerta. En la próxima versión Community ya vendrá resuelto, y como decía en la versión Enterprise 4.0.1 ya está resuelto.

  • ALF-13726, Ejecución remota de código mediante el procesador de XSLT para Web Scripts (Web Script XSLT Processor)

Esta vulnerabilidad también afecta a versiones anteriores de Alfresco tanto Enterprise como Community (3.X) además de las versiones 4.0.0 Enterprise y 4.0.{a,b,c,d} Community. Trata de una forma de acceder al repositorio invocando clases Java específicas mediante el motor XSLT. Para explotar esta vulnerabilidad hay que tener acceso previo al repositorio y subir un fichero concreto para poder invocarlo posteriormente mediante un web script. Para clientes con versiones 3.4.X se publicará resuelto en la versión 3.4.9 y también hay un parche específico disponible en el ticket de Jira. Se puede solucionar fácilmente tanto en Enterprise como Community siguiendo estas indicaciones o aplicando el diff que se puede descargar del ticket.

Ya sabes, a actualizar y mantener tu sistema al día, seguro y protegido.

Indexación múltiple y unificada con Constellio (y conexión con Alfresco por CMIS)

De entre los muchos sistemas de indexación que existen para las empresas está Constellio, un producto realizado por la gente de Doculibre y basado en Apache Solr. Constellio es Open Source y se puede contratar soporte con el fabricante dependiendo de las necesidades del cliente. Es una herramienta multiplataforma, instalación bastante sencilla con un asistente (java -jar constellio_install_1.3.jar).

Lo que me ha gustado de Constellio, y por eso he decidido contarlo en este post, es lo sencillo que resulta unificar/federar las búsquedas corporativas en un solo sistema, en una sola web.
  • Por ejemplo, imagina que tenemos uno o varios servidores Alfresco, un portal corporativo, un servidor de ficheros en Windows, un LDAP corporativo y una BBDD de clientes, todos esos sistemas tienen información que deben tener acceso rápido y sencillo los usuarios de nuestra organización (como si buscaran en Google). Con este producto podemos tenerlo todo unificado en un solo formulario de búsqueda, ahora bien, debe acceder a todos esos recursos y poder indexarlos en sus propios índices (recuerda que al fin y al cabo es un Solr), tiene una interfaz web de administrador bastante sencilla y auto-explicativa.
  • A cada uno de los contenedores de datos que queremos indexar (Alfresco u otros ECM, BBDD, LDAP, Servidor de Ficheros, etc.) Constellio los llama colecciones y podemos añadir tantos como necesitemos, viendo en el resultado de la búsqueda los resultados de todas las colecciones y pudiendo identificar visualmente de qué colección es cada resultado.
  • Configurar Constellio es muy fácil y en esta web tienes vídeos de como hacer casi cualquier cosa, en 10 minutos está configurado.
  • Os voy a explicar como crear una colección que indexe el contenido de Alfresco de forma externa en Constellio (recuerda que también se sigue indexando en Alfresco).
  • Una vez instalado Constellio, vamos al panel de administración accediendo como usuario administrador (tras hacer login como usuario admin) en la URL por defecto: http://localhost:8080/constellio
  • Ahora vamos a la pestaña “Collections management” -> “Add collection” -> ponemos un nombre por ejemplo “Alfresco Intranet” y el título que queramos. -> “Save”.
  • Pinchamos en la nueva colección llamada “Alfresco Intranet” y vamos a la sección “Connectors” -> “Add”.
  • Aquí os pongo una captura de como se configura Constellio para que indexe un repositorio Alfresco (o varios Alfrescos también se podrían configurar), como veis se hace mediante CMIS por lo que nos aporta mayor interoperabilidad con Alfresco o con cualquier otro repositorio CMIS ready.

    Configuración Constellio - Alfresco
    Pincha para ver la imagen completa
  • Tras guardar la configuración podemos ir a la sección “Indexing” del menú de la colección y veremos en tiempo real el estado de la reindexación de la nueva conexión que hemos creado.
  • Es tan fácil que casi no hay que explicar nada, sólo decir que el valor del parámetro “REPOSITORY” es el identificador único del repositorio CMIS y que podréis ver en vuestro servidor en la siguiente URL http://localhost:8080/alfresco/service/cmis/index.html -> “CMIS Repository Information” -> “Repository Id”.
  • La interfaz de usuario sería algo como esto:

    resultado de búsqueda
    Pincha para ver la imagen completa
  • En la captura anterior se ve el resultado de una búsqueda realizada sobre dos colecciones una es este blog y otra es un servidor Alfresco.
Esto es sólo un pequeño resumen de como conectarlo con Alfresco pero verás que tiene conectores muy útiles (HTTP, CMIS, BBDD, Servidor de Ficheros, LDAP, IMAP, POP, SOLR, XML y otros conectores específicos como Google Search Appliance u otros ECM propietarios). También se puede configurar a nivel de seguridad para filtrar resultados de búsquedas, integrar con sistemas de SSO externos, estadísticas, sinónimos, búsqueda avanzada, themes, facetas y otras muchas funcionalidades más.
  • Conclusión: si no unificas tus búsquedas es porque no quieres 😉

Próximos eventos de Alfresco en español: Primavera de 2012

El calendario de actividades está bien nutrido para esta primavera de 2012, quiero compartir con vosotros los próximos eventos que realizamos tanto presenciales como virtuales, también otros eventos en los que participo colaborando con alguna charla sobre Alfresco.

Como novedad, haremos por primera vez Talleres Expertos en A Coruña y en Valencia. Si estás por esa zona no dudes en registrarte y nos conocemos en persona.

Este es el listado ordenado por fecha igual que puedes ver en la web de Eventos en español:

Fecha: 28 de Marzo 16:00h (hora española peninsular)

En este webinar, Unisys hará una demonstración de la funcionalidad que ofrecen las listas de datos de un sitio. Para ello, mostraremos con un ejemplo práctico las posibilidades de clasificación y búsqueda que nos puede ofrecer las listas de datos: extensión del modelo de datos, personalización del interfaz Share e integración mediante webscripts.

Fecha: 17 de Abril (lugar Casino de Tenerife)

Evento en el que conocerán la plataforma Alfresco y sus últimas novedades incluidas en su versión 4.0.
Se presentarán los casos de éxito de la Autoridad Portuaria de Tenerife, Gobierno de Canarias y CSC. Inscríbase aquí

Fecha: 18 de Abril (Museo Marítimo de Barcelona)

Fecha: 24 de Abril (lugar por determinar)

Evento a la carta, si vienes eliges el tema que quieres que hablemos.

Registro abierto aquí.

Fecha: 25 de Abril 16:00h (hora española peninsular)

El webinar ofrecerá una visión de las mejoras introducidas en Alfresco Share 4.0 para facilitar la personalización y extensión de componentes. Se verá de forma practica la facilidad de creación y edición de componentes, y las herramientas que Alfresco Share 4.0 proveé como SurfBug y el modulo de despliegue de componentes.

Fecha: 26 y 27 de Abril (Museo Patrimonio Municipal de Málaga)

El día 26 por la tarde hablaré en una mesa sobre Buenas Prácticas sobre como Alfresco puede ayudar a los sistemas de Archivo.

Fecha: 9 de Mayo 16:00h (hora española peninsular)

Presentación del framework iShare, plataforma global de servicios y gestión de contenidos.
Framework que ofrece una capa de servicios REST completa para trabajar con Alfresco y un catálogo de portlets que permite la gestión de contenidos de forma dinámica.

Fecha: 16 de Mayo (lugar por determinar)

Evento a la carta, si vienes eliges el tema que quieres que hablemos.

Registro abierto aquí.

Fecha: 6 de Junio (lugar por determinar)

Evento a la carta, si vienes eliges el tema que quieres que hablemos.

Registro abierto aquí.

Fecha: 4 de Julio (lugar por determinar)

Evento a la carta, si vienes eliges el tema que quieres que hablemos.

Registro abierto aquí.

Recuerda que puedes estar al día automáticamente de todos nuestros eventos con este feed iCal. Y por RSS en este otro enlace. Así no te perderás nada.

Todos los videos de webinars anteriores se pueden ver aquí, en blyx.com, en la web de eventos on demand o en el canal Alfresco en Vimeo donde hay más de 25 videos. También hay algunas presentaciones están disponibles en mi sitio de Slideshare.

Video y presentación del webinar “Consejos de Seguridad con Alfresco”

Cuanta más información almacenamos en Alfresco, más necesidad de protegerla tenemos y también más necesidad de disponer de la misma. Por eso pienso que este webinar puede ser muy interesante para cualquiera que debe mantener un entorno con Alfresco independientemente de la criticidad del mismo.

En este webinar de unos 50 minutos de duración vamos a ver qué aspectos relacionados con la seguridad debemos tener en cuenta en los diferentes procesos del ciclo de un proyecto con Alfresco como durante la planificación, instalación, configuración y fortificación así como en el mantenimiento, monitorización y auditoría.

Básicamente, este webinar es una colección de consejos y trucos que nos ayudan a fortificar y controlar nuestro entorno ECM.

Aquí está la presentación utilizada para poder descargarla desde la web de Slideshare:

Evitar fugas de información mediante metadatos con Alfresco

Tras hablar de las fugas de información en el “capítulo” anterior, donde explicaba la problemática existente con la gestión de los metadatos internos de los contenidos de cara a posibles análisis y extracción de información que no queramos hacer pública, he preparado la siguiente prueba de concepto para poder limpiar metadatos internos de archivos de imágenes (jpg, png) y pdf con Alfresco. Concretamente usaremos Exiftool, una herramienta hecha en Perl que soporta la edición, y por lo tanto, borrado de metadatos internos de los siguientes formatos y tipos de metadatos más conocidos (ver en la página de Exiftool todos los formatos soportados, que son muchos más):

Formato Información adicional
EPS, EPSF, PS R/W [Encapsulated] PostScript Format
EXIF R/W/C Exchangable Image File Format metadata (TIFF-based)
GIF R/W Compuserve Graphics Interchange Format
IND, INDD, INDT R/W Adobe InDesign Document/Template (XMP metadata only)
JPEG, JPG R/W Joint Photographic Experts Group image (see table below)
PDF R/W Adobe Portable Document Format
PNG, JNG, MNG R/W Portable/JPEG/Multiple-image Network Graphics
TIFF, TIF R/W Tagged Image File Format
XMP R/W/C Extensible Metadata Platform sidecar file

En esta prueba de concepto no veremos como automatizar el borrado de metadatos en ficheros ofimáticos de MS Office u Open Office, ya que Exiftool no soporta esos formatos, aunque los desconozco, parece ser que hay librerías que pueden permitir automatizarlo y añadirlo de la misma forma que comento en este artículo. Hace unos días Chema Alonso, de Informática 64, me comentó que ellos tienen una aplicación que se puede invocar desde línea de comandos y soporta esos formatos que podría servir para mejorar este que os muestro hoy, pero no tengo más detalles.

DISCLAIMER: Recordad que este artículo no es más que una prueba para demostrar que se puede hacer, aunque en mis pruebas no he visto ningún problema que afecte a la estabilidad de la plataforma, no me hago responsable si rompes algo 😉

Bien, empecemos. Vamos a ver la instalación, configuración, prueba y uso.

  • Instalación de exiftool y módulo de ejecución de comandos en Alfresco:

Para realizar esta prueba de concepto he utilizado Alfresco Enterprsie 4.0.0 pero igualmente valdría para la versión Community. Aparte de tener un Alfresco 4.0 instalado y funcionando necesitamos tener instalado Exiftool, podéis descargar de esta dirección la aplicación para Windows, Linux o MacOSX. También podéis descargarlo e instalarlo directamente usando Yum o Apt en vuestra distribución de Linux favorita. Uso Linux en este ejemplo así que todos los comandos y rutas serán en base a este sistema operativo, para hacerlo en Windows deberías cambiar rutas, etc. En MacOSX también lo he probado y este proceso es igual que en Linux.

Una vez instalado Exiftool, posiblemente lo tendremos en la ruta /usr/bin/exiftool por lo tanto en el PATH del sistema operativo y podremos invocarlo ejecutando en una consola simplemente “exiftool” (sin comillas). Para asegurarnos que funciona correctamente asegúrate que tiene permisos de ejecución (chmod +x)  y ejecuta exiftool contra una imagen o pdf que tengas:

[bash]
$ exiftool foto.jpg
[/bash]

Si todo va bien, verás una lista todos los metadatos que contiene la foto como veíamos en las capturas del artículo anterior.

Ahora vamos a ver como se realiza el borrado de todos los metadatos de un fichero desde línea de comandos para terminar todas las comprobaciones:

[bash]
$ exiftool -all= −overwrite_original foto.jpg
[/bash]

Con el anterior comando se borran todos los metadatos del fichero (-all=) y sobrescribe el fichero que se trata (−overwrite_original). Una vez ejecutado el comando vuelve a ejecutar el comando inicial de lectura para comprobar que realmente se han borrado todos los metadatos y funciona correctamente.

Ahora que tenemos instalado el comando principal para limpiar vamos al siguiente paso. La instalación del módulo que nos permitirá implementar una acción consistente en una llamada a un comando, es decir, a un script de shell. Le conté la idea a mi compañero en Alfresco Rui Fernandes y me dedicó unos minutos para hacer un módulo que permite ejecutar un comando sobre un nodo del repositorio (gracias amigo!), yo he adaptado el módulo a la ejecución de exiftool y podéis descargar el AMP desde aquí:

http://dl.dropbox.com/u/357018/cmd-line-action-clean-metadata-1.0.1.amp

Una vez tengamos descargado el módulo cmd-line-action-clean-metadata-1.0.1.amp, debemos instalarlo a alfresco.war con la herramienta alfresco-mmt (parando antes el servidor de aplicaciones). Para hacer esa tarea de forma sencilla copiamos el módulo al directorio “amps/” que debe estar en la raíz de la instalación de Alfresco. Posteriormente ejecutamos el script apply_amps.sh que está en “bin/” también en la raíz de la instalación. Si no hemos tenido ningún problema tras la ejecución del script ya tenemos el módulo instalado, podemos ver que ha hecho un backup automático de alfresco.war y que ha limpiado ficheros temporales del anterior despliegue.

  • Configuración del módulo para que la acción ejecute nuestro limpiador:

Teniendo el módulo de la acción instalado, ahora debemos configurarlo para usarlo posteriormente en una regla de Alfresco y aplicar la limpieza de metadatos internos de un contenido o contenidos concretos.

Primero debemos crear el script que vamos a ejecutar, lo llamaremos file-metadata-removal-script.sh y lo pondremos en el directorio “bin/” de la instalación de Alfresco, con el siguiente contenido tan sencillo:

[bash]
#!/bin/bash

# Script for calling File Metadata Removal Tool command
/usr/bin/exiftool -all= -overwrite_original $1
[/bash]

Recuerda hacerlo ejecutable con el comando “chmod +x file-metadata-removal-script.sh”.

Por último en alfresco-global.properties debemos añadir el siguiente nuevo parámetro donde indicamos la ruta absoluta del script (modifícala con la ruta del script en tu servidor):

[bash]
#Cleaner metadata script
file.metadata.removal.command=/opt/alfresco-enterprise-4.0.0/bin/file-metadata-removal-script.sh
[/bash]

Hecho lo anterior ya podemos arrancar el servidor de aplicaciones y probarlo.

  • Prueba:
  1. Accede a Alfresco Share con un usuario con permisos para crear una carpeta y crea una carpeta en un sitio.
  2. Crea una regla simple como la siguiente, donde se ejecuta la acción “Clean internal metadata”:
  3. Sube o mueve un fichero del tipo jpg, png o pdf al directorio donde has creado la regla. Sus metadatos internos serán extraídos como siempre por Alfresco y los usará para añadirlos a la información del contenido en su propia base de datos como veíamos en el artículo anterior. Pero también lo limpiará en el propio fichero interno que se almacena en el contentstore. También puedes mover un fichero que ya esté en el repositorio a esa carpeta y se ejecutará la limpieza.
  4. Como ves, es una acción totalmente transparente para el usuario. En los logs podremos ver más información.
  • Logs:

En el fichero alfresco.log podremos ver las siguientes cadenas donde vemos que el nodo de turno se ha limpiado correctamente (1 image files updated):

[bash]
2012-02-27 01:01:32,908  INFO  [rfernandes.cmdlineaction.CmdLineActionExecuter] [defaultAsyncAction4] Binary content store URL fetched: 2012/2/26/22/25/c1a9d2e3-9779-4dc5-aaea-927c1e8bc3a5.bin

2012-02-27 01:01:32,928  INFO  [rfernandes.cmdlineaction.CmdLineActionExecuter] [defaultAsyncAction4] Command line to execute: /opt/alfresco-enterprise-4.0.0/bin/file-metadata-removal-script.sh /opt/alfresco-enterprise-4.0.0/alf_data/contentstore/2012/2/26/22/25/c1a9d2e3-9779-4dc5-aaea-927c1e8bc3a5.bin

2012-02-27 01:01:32,928  INFO  [rfernandes.cmdlineaction.CommandExecutor] [defaultAsyncAction4] Executing: /opt/alfresco-enterprise-4.0.0/bin/file-metadata-removal-script.sh /opt/alfresco-enterprise-4.0.0/alf_data/contentstore/2012/2/26/22/25/c1a9d2e3-9779-4dc5-aaea-927c1e8bc3a5.bin

2012-02-27 01:01:33,332  INFO  [rfernandes.cmdlineaction.CommandExecutor] [Thread-143] OUTPUT>    1 image files updated

2012-02-27 01:01:33,338  INFO  [rfernandes.cmdlineaction.CommandExecutor] [defaultAsyncAction4] ExitValue: 0
[/bash]

Por defecto se usa el modo INFO en el log del módulo, pero con la siguiente cadena se podría modificar en log4j.properties:

[bash]
log4j.logger.org.alfresco.demo.rfernandes.cmdlineaction=info
[/bash]

  • Comprobar con exiftool:

Podemos comprobar con exiftool que realmente se ha limpiado el contenido lanzando el comando contra el nodo directamente:

[bash]
$ exiftool /opt/alfresco-enterprise-4.0.0/alf_data/contentstore/2012/2/26/22/25/c1a9d2e3-9779-4dc5-aaea-927c1e8bc3a5.bin
[/bash]

Y veremos que sólo se muestran los metadatos básicos del contenido, no los que pueden aportar más información. Ojo con lanzar comandos directamente a los contenidos en el contentstore, no lo hagas con comandos que no sepas realmente lo que hacen, podrías generar una inconsistencia en el repositorio. La implementación ideal sería usando código java así que cuidado con lo que hacéis 😉

  • Reglas:

En este ejemplo hemos visto una sencilla regla para probar la limpieza de los ficheros, para usar esta idea en un sistema real deberíamos saber como vamos a integrar Alfresco con un sistema web, por ejemplo con un portal o un canal de publicación, y ejecutar la acción con los contenidos que vayan a ser usados por ese portal o canal independientemente de cómo se acceda a Alfresco (CMIS, API nativa, etc.). Si lo que usamos es el Transfer Service de Alfresco, también deberíamos crear una regla para que se limpien los contenidos cuando salgan del repositorio con destino otro sistema.

  • Conclusión:

Como hemos visto en este artículo, hay opciones muy válidas para llevar a cabo la tarea de limpieza de contenidos para evitar fugas de información mediante los metadatos usando Alfresco. Seguro que con esta idea como base se pueden hacer cosas mucho más potentes. Los comentarios y mejoras son bienvenidos.

Contenidos, metadatos y las fugas de información

Llevo un tiempo escribiendo algunas cosas sobre seguridad y Alfresco (que iré publicando), una de los temas que más interés me despierta es la fuga de información, concretamente mediante datos que no vemos directamente pero que están ahí, que están en los contenidos, es decir, en los metadatos ocultos (o no tan ocultos) de los ficheros. De esto se ha hablado mucho, por ejemplo en España contamos con Chema Alonso que ha escrito gran cantidad de información al respecto en http://www.elladodelmal.com.

¿Quién no recuerda el famoso “Caso Blair”? Se publicó un fichero sobre la Guerra de Irak y las armas de destrucción masiva y se demostró (mediante los datos ocultos en el fichero) que había sido manipulado por gente de su gabinete y por lo tanto mentía en cuanto a la procedencia de la información. Más información en inglés y en español.

¿De qué estoy hablando? Voy a aclarar algunos conceptos para no liarnos y ponernos en situación.

Cualquier fichero contiene la información del mismo fichero, por ejemplo, un fichero foto.jpg contendrá una imagen, pero también contiene más información que no se ve a simple vista, son los metadatos o propiedades de dicho fichero que nos aportan más información sobre el mismo. En esos metadatos de la foto se pueden ver datos sobre la cámara con la que se ha realizado, fecha en la que se hizo, software con la que se ha editado, una miniatura, información sobre la localización donde se tomó y muchos datos más. Propiedades parecidas también se encuentran en ficheros Adobe PDF, MS Office, Open Office y un largo etcétera. En el caso de ficheros DOC o DOCX incluso podríamos extraer información sobre las personas que lo han editado, nombres de usuario, impresoras donde se ha enviado, recursos compartidos accedidos, etc. Por lo tanto, analizando esas propiedades podemos extraer mucha información valiosa.

Gracias a Google u otros buscadores es muy fácil localizar los ficheros publicados en internet por parte de una organización concreta, tan fácil como buscar algo así: “inurl:dominio.com filetype:pdf”

Hay millones de webs que publican esta información sin tratar previamente, sin saber realmente que información están dejando visible al resto del mundo. Incluso en España está contemplado el borrado o limpieza de esta información en el Esquema Nacional de Seguridad pero tras hacer unos cuantos escaneos de webs españolas de referencia es evidente parece que no tiene mucho éxito.

Fijaros si es importante este concepto que organizaciones como la NSA (National Security Agency de los Estados Unidos) o SANS, han publicado informes sobre los riesgos que supone este problema. Podéis acceder a los mismos aquí:

http://www.nsa.gov/ia/_files/app/pdf_risks.pdf

http://www.sans.org/reading_room/whitepapers/privacy/document-metadata-silent-killer_32974

¿Cómo puedo ver todo esto que comentas? Existen varias herramientas que nos permiten extraer este tipo de datos, analizarlos y poder averiguar cierta información que podrían permitir realizar intrusiones, uso fraudulento de la misma u otras actividades “interesantes”. Voy a enumerar algunas:

FOCA, también con versión online.

libextractor.

Metagoofil.

Exiftool.

Maltego.

Sin lugar a dudas, la más completa y además con sabor español es FOCA, escrita por la empresa Informatica64, tiene una versión gratuita y funciona sobre Windows. Esta herramienta nos permite extraer toda la información oculta en los ficheros, analizarlos y recolectar la información de forma gráfica e intuitiva, incluso puede dibujar un mapa de red con los datos extraídos como direcciones IP o nombres de máquinas. En este enlace se puede ver una conferencia en la DEFCON que es auto explicativa (merece la pena verla entera). Cabe recordar que FOCA nació para hacer auditorías y recolección de datos, y la extracción de metadatos es una de las muchas cosas que hace esta herramienta.

¿Y cómo puedo prevenir este tipo de situaciones? ¿Cómo limpio los archivos que voy a sacar fuera de mi ordenador o que voy a publicar en alguna página en internet? Hay algunas herramientas que nos permiten hacerlo y generalmente es una tarea totalmente manual que debe hacer el usuario por su cuenta (con lo que eso conlleva).

Con OOMetaextractor podemos borrar los metadatos de los documentos de OpenOffice. En el propio MS Office 2007 y versiones superiores hay una opción al guardar que nos permite borrar la información personal, para versiones anteriores hay un plugin que permite hacerlo. En el caso de PDF, para eliminar toda la información interna debemos usar Adobe Acrobat 8.0 o un plugin para versiones anteriores o con la herramienta Exiftool mencionada anteriormente. En ficheros gráficos del tipo JPG, PNG, etc, se puede eliminar algunos de estos datos con Adobe Photoshop o también con Exiftool. Aunque esta herramienta no está orientada precisamente a un usuario final.

Las fotos almacenan esa información en metadatos EXIF, IPTC y otros, los ficheros PDF en XMP, hay muchos más tipos de metadatos en los ficheros, en la web de Exiftool podéis aprender mucho sobre este tema.

Aquí vemos un ejemplo de los datos extraídos de una foto que me han enviado por correo electrónico:

Aquí los metadatos de una presentación en Power Point:

Como veis, en ambos casos hay información muy interesante, en la foto la localización exacta donde se hizo la foto, altitud, el teléfono con el que se hizo la foto, incluso podríamos acceder a la imagen en miniatura si la tuviera (que puede ser algo sorprendente porque puede no ser exactamente igual) y mucha información más. En el fichero PowerPoint podemos ver el usuario que está trabajando actualmente con el fichero, el usuario que lo hizo, fechas de creación, tiempo que se ha tardado en realizar el documento, etc. Toda esta información está muy bien siempre y cuando el usuario quiera que sea pública o que esté disponible, pero generalmente el usuario final no sabe nada de esto ni las consecuencias que puede tener.

Imaginad el impacto que puede tener la publicación de un documento que ha escrito una empresa “amiga” con un RFP y que posteriormente ha publicado otra empresa u organismo, si no se limpian los metadatos se podría demostrar e impugnar una asignación de un proyecto ya que se podría demostrar quien ha escrito el documento y quien lo ha publicado. Eso ocurre y ha ocurrido en muchas ocasiones, por eso esto es muy crítico.

¿Y qué relación tiene todo esto con Alfresco? Gran parte de estos metadatos que residen en múltiples formatos de documentos son utilizados por los extractores de Alfresco para nutrir sus contenidos de información adicional y evitar que el usuario deba rellenar a mano algunos de ellos, esta tarea se hace gracias a las librerías Apache Tika incorporadas en el repositorio. Por lo tanto, si subimos un fichero a Alfresco, se extraen los metadatos más conocidos automáticamente y podemos acceder a ellos en las propiedades de cada contenido, esto no significa que desaparezcan del propio fichero. A efectos de un ECM esto es normal ya que una vez que un fichero está en un ECM éste es el encargado de gestionar la información alrededor del fichero y poder dotar a los contenidos de más información y posibilidades que el propio contenido en si mismo.

En esta captura podemos ver como se muestran las propiedades extraídas (y ahora almacenadas en la BBDD de Alfresco) de una foto:

Entonces ¿qué ocurre si publico mis contenidos en servidores web con acceso público, o si tengo integrado mi portal cuyos contenidos están almacenados en Alfresco? ¿Qué pasa con los metadatos internos de los ficheros que se ponen a disposición de cualquiera en internet pero residen en el repositorio o salen de él?

Eso lo veremos en el próximo artículo, donde explicaré como defendernos de posibles fugas de información mediante metadatos usando Alfresco.