Las reglas de Jira Automation son código de producción que nadie tiene bajo control de versiones. Mueven elementos de trabajo, publican en Slack y Google Chat, llaman a webhooks con tokens pegados en la URL, ejecutan búsquedas cada cinco minutos y se facturan por paso. Jira las muestra proyecto a proyecto, conserva 90 días de registro de auditoría y no conserva ninguna copia que te pertenezca. ajat, la Atlassian Jira Automation Tool, trata el patrimonio como un equipo de operaciones trata la infraestructura: lo exporta a archivos, lo lee en informes, compara instantáneas, lo opera con un plan y lo devuelve cuando algo se pierde.
Este tutorial es el ciclo de gobernanza, auditoría de seguridad y backup y restauración sobre un patrimonio real, con las funciones añadidas en ajat v1.0.8: hallazgos de secretos y de coste en el informe de riesgo, búsquedas medidas, historial de ejecución del registro de auditoría, búsqueda y selección masiva por propietario, e informes que abren cada regla, proyecto y persona en Jira. El manual de ajat tiene todos los flags; esta guía muestra el orden en el que ejecutarlos.
Qué añade ajat v1.0.8
- El informe de riesgo encuentra secretos escritos en las reglas. Tokens en URL de webhooks (Google Chat, Slack, cualquier parámetro
key=otoken=), cabecerasAuthorizationy tokens de webhook literales, y formas de token de GitHub, AWS, Atlassian, Slack y Google se marcan como hallazgos de severidad alta. El hallazgo dice qué tipo de secreto es y dónde está, nunca ninguna parte de él. En una exportación real de 654 reglas encontró 175, y la opción--redact-sensitive-fieldsdel propio Jira había dejado todas ellas en su sitio. Los informes enmascaran ahora las credenciales en todo lo que citan. - El informe de riesgo muestra qué dispara el coste de la automatización, contado solo sobre reglas activadas: programaciones que se ejecutan más de una vez por hora (alta) o cada hora (media), disparadores que saltan con casi cualquier cambio (media, alta en ámbito global o multiproyecto), búsquedas programadas y ramas JQL sin ventana temporal (alta), consultas y peticiones web en cada ejecución (media). Jira factura la automatización por paso, así que estas son las reglas que revisar primero.
ajat export --probe-jqlcuenta, a través de Jira, cuántos elementos de trabajo devuelve realmente cada búsqueda programada y cada rama JQL, con el ámbito con el que Jira la ejecuta. En el mismo patrimonio, leer solo el JQL marcó nueve búsquedas; la medición descartó ocho y confirmó una con 3.588 elementos.- Historial de ejecución desde el registro de auditoría.
ajat audit-log importlee los archivos CSV que exporta la página de registro de auditoría de Jira;ajat audit-log fetch(experimental) lee directamente los últimos 15 días, o hasta 90. Ambos escriben estadísticas por regla en la exportación, y el informe de riesgo gana Throttled runs, Runs without actions y una tabla de Busiest rules. En un sitio real, el 85 % de las ejecuciones recientes no realizó ninguna acción. --state all|enabled|disableden cada informe, para que los totales, los gráficos y la nota describan las reglas que realmente se ejecutan.- Búsqueda y selección masiva por propietario y actor.
ajat search --owneracepta un ID de cuenta, un correo o un nombre visible;ajat rule …selecciona con--ownery--actor. La API descartaba--authoren silencio; ahora funciona como alias obsoleto. - Informes que se leen como una pista de auditoría. Las personas tienen fotos incrustadas desde la exportación, cada regla se abre en su propia página de Jira, cada tabla se ordena por columna y un archivo de tema nombra tus propios servicios en la huella de integraciones. Los informes siguen abriéndose sin conexión y no descargan nada de Atlassian.
Paso 1 — Instalar, licenciar y comprobar la conexión
Sigue Primeros pasos para el paquete firmado de macOS o el archivo de Linux. ajat se vende como Professional, Small Team, CI/CD Automation (para pipelines) y Enterprise, cada uno con una prueba gratuita de 14 días; compáralos en la tienda de Climakers. La biblioteca de licencias de v1.0.8 arregló además las renovaciones: ajat license activate con la clave instalada refresca ahora la licencia desde la tienda, y --force sustituye una licencia activa por una clave nueva.
ajat license activate --license-key TU_CLAVE_DE_LICENCIA
ajat doctor doctor valida las credenciales de Jira, la licencia, el identificador de máquina y si hay una versión más reciente. Las credenciales van en variables de entorno cuando la exportación se ejecuta desde un planificador; la página de Configuración las lista.
Paso 2 — Respalda cada regla
# Primera ejecución: cada regla, cada ámbito, con propietarios, actores e identidades de proyecto resueltas
ajat export --output-dir ./jira-automations-backup
# Cada noche: solo lo que cambió, y quita de la copia las reglas eliminadas en Jira
ajat export --output-dir ./jira-automations-backup --sync
# Cuando quieras que el informe de riesgo mida las búsquedas en vez de adivinar
ajat export --output-dir ./jira-automations-backup --sync --probe-jql Cada regla se convierte en un archivo JSON dentro de un árbol determinista, con un archivo lateral *.external-info.json que contiene las personas resueltas. --resolve-users está activado por defecto, igual que --avatars, que descarga la foto de cada cuenta resuelta y el icono de cada proyecto para que los informes puedan incrustarlos. --incremental es el valor por defecto y conserva los archivos locales de las reglas eliminadas de Jira; --sync los elimina, que es lo que quiere un espejo. .ajat_projects.json registra el tipo y el estilo de cada proyecto, que es lo que permite a los informes enlazar una regla con la página de ajustes correcta.
Dos notas para los equipos de seguridad. --redact-sensitive-fields pide a Jira que oculte los campos sensibles en el JSON exportado, y en el patrimonio de arriba dejó intactos todos los secretos de las URL de webhooks y las cabeceras; el informe de riesgo del paso 4 es lo que los encuentra. Y --probe-jql cuesta una petición por búsqueda distinta, así que ejecútalo cada semana en lugar de cada noche en un patrimonio grande.
Mantén el directorio en almacenamiento que controles y conserves, y súbelo a Git si quieres que cada cambio en una regla aparezca como una diferencia.
Paso 3 — Gobernanza: inventario, consistencia, colisiones
ajat report inventory --input-dir ./jira-automations-backup --output-file inventory.html
ajat report consistency --input-dir ./jira-automations-backup --output-file consistency.html
ajat report collision --input-dir ./jira-automations-backup --output-file collision.html Tres archivos HTML autocontenidos, legibles sin conexión y seguros para adjuntar a una revisión:
- Inventory agrupa cada regla por ámbito con su propietario, actor, etiquetas, disparadores y un diagrama de flujo, más analíticas del patrimonio con conclusiones en lenguaje llano. Los chips de filtro se agrupan en Estado, Ámbito y Rasgos; la búsqueda encuentra las palabras en cualquier orden.
- Consistency es la higiene de etiquetas, nombres y propiedad: cada etiqueta y dónde se usa, grafías casi duplicadas, y las reglas cuyo propietario se ha ido o que se ejecutan como una cuenta sin resolver.
- Collision encuentra duplicados de comportamiento, reglas escritas de forma distinta que hacen lo mismo, copiadas y pegadas entre proyectos.
Añade --state enabled a cualquiera de ellos cuando la revisión trate de lo que realmente se ejecuta; en el patrimonio de 654 reglas son 533. Un archivo de tema (--theme-file brand.yaml) puede asignar nombres a los hosts, de modo que la huella de integraciones diga “Factorial HR” en vez de un dominio, y recolorear los informes para un entregable de cara al cliente. Consulta Generar informes HTML.
Paso 4 — Auditoría de seguridad: el informe de riesgo, y después actuar
ajat report risk --input-dir ./jira-automations-backup --output-file risk.html --state enabled El informe de riesgo califica el patrimonio de la A a la F y ordena cada regla por hallazgos puntuados, un chip por motivo: fallos silenciosos, propiedad huérfana, secretos expuestos, salida de datos hacia servicios externos y los factores de coste. La leyenda de puntos se genera desde la misma tabla que usa la puntuación, así que un auditor puede ver por qué una regla obtuvo lo que obtuvo. Espera que la nota baje en la primera ejecución: en el patrimonio de referencia pasó de C (60) a F (21), y los secretos expuestos por sí solos sumaron unos 27 puntos. Eso es el informe haciendo su trabajo.
Después, actúa desde la misma herramienta, con un plan antes de cada cambio:
# ¿Quién es propietario de las reglas que dejó alguien que se fue?
ajat search --owner jane@acme.com --format json | jq '.matches[].uuid'
# Pausa todo lo que se ejecuta como una cuenta que ya no está, tras leer el plan
ajat rule disable --input-dir ./jira-automations-backup --actor 557058:f58131cb-b67d-43c7-b30d-6b58d40bd077 --dry-run
ajat rule disable --input-dir ./jira-automations-backup --actor 557058:f58131cb-b67d-43c7-b30d-6b58d40bd077 --yes
# Pausa las reglas etiquetadas para una ventana de release
ajat rule disable --input-dir ./jira-automations-backup --state ENABLED --label release-pauseable --yes Para los secretos: rótalos, llévalos a un almacén de secretos, vuelve a exportar y regenera el informe. Buscar secret en el informe encuentra las reglas, no solo el encabezado. Para los factores de coste: las programaciones más frecuentes que una hora y las búsquedas sin límite se listan por proyecto, que es la lista que un equipo de plataforma lleva a los propietarios.
Paso 5 — Añade el historial de ejecución
Los hallazgos basados en las definiciones de las reglas te dicen qué podría pasar. El registro de auditoría te dice qué pasó.
# Desde los archivos CSV que exporta la página de registro de auditoría de Jira (nada más que la propia exportación de Jira)
ajat audit-log import --input-dir ./jira-automations-backup ~/Downloads/automation-audit-logs-*.csv
# O, de forma experimental, directamente desde Jira: los últimos 30 días
ajat audit-log fetch --input-dir ./jira-automations-backup --days 30
# Regenera el informe de riesgo con el historial dentro
ajat report risk --input-dir ./jira-automations-backup --output-file risk.html El informe gana Throttled runs (alta), Runs without actions (media), una marca para las ejecuciones que tocaron 100 o más elementos de trabajo, y una tabla de Busiest rules junto a la puntuación. Las fechas con el día primero y con el mes primero se distinguen automáticamente; --date-order y --timezone cubren los casos que lo necesitan. fetch usa el endpoint que llama la propia página de Jira, que Atlassian puede cambiar, así que import es la vía fiable para una auditoría. Consulta Historial de ejecución.
Paso 6 — Bloquea la deriva en CI
La gobernanza que vive en una revisión trimestral se degrada entre revisiones. Una instantánea nocturna y una comparación hacen visible la deriva a la mañana siguiente:
ajat export --output-dir ./snapshots/$(date +%F) --sync
ajat diff ./snapshots/approved ./snapshots/$(date +%F) --check --check termina con un código distinto de cero cuando algo difiere, lo que hace fallar el pipeline; --format json alimenta un ticket o un mensaje de chat. Nada en diff toca Jira. Consulta Diferencias y deriva.
Paso 7 — Restaura, y promueve entre inquilinos
La copia solo es una copia de seguridad si vuelve. ajat import restaura reglas desde una exportación, o las promueve de un sandbox a producción, y siempre muestra el plan primero:
# ¿Qué cambiaría?
ajat import --input-dir ./jira-automations-backup --dry-run
# Restaura tras un borrado accidental; las reglas que faltan en Jira se crean, las presentes se actualizan
ajat import --input-dir ./jira-automations-backup
# De sandbox a producción: UUID nuevos, ámbitos de proyecto reescritos
ajat import --input-dir ./jira-automations-backup --uuid-strategy=new
--scope-map ari:cloud:jira:src:project/PROJ-A=ari:cloud:jira:tgt:project/PROJ-A --yes --create y --update están activados por defecto; --prune elimina las reglas desactivadas del destino que no estén en el origen y deja en paz las activadas, así que lee el plan antes de usarlo. En v1.0.8 el importador dejó de confundir los archivos laterales de identidades con reglas; si ejecutaste una importación sobre una exportación enriquecida con una versión anterior, revisa su plan o su archivo de estado en busca de actualizaciones fallidas. Consulta Importar y promover.
La evidencia que deja detrás
| Pregunta que hace una revisión | Respuesta que produce ajat |
|---|---|
| ¿Tenemos una copia de cada regla de automatización? | el directorio del export --sync nocturno, en Git |
| ¿Quién es propietario de cada regla, y existe esa persona? | los informes de inventario y consistencia; search --owner |
| ¿Qué reglas envían datos fuera de Jira, y adónde? | la huella de integraciones y los hallazgos de salida de datos del informe de riesgo |
| ¿Hay credenciales en las reglas? | los hallazgos de secretos expuestos, con tipo y ubicación, nunca el valor |
| ¿Qué dispara la factura de automatización? | los hallazgos de coste, por proyecto, con tamaños de búsqueda medidos por --probe-jql |
| ¿Qué se ejecutó, falló o fue limitado realmente? | el historial de ejecución de audit-log import o fetch, en el informe de riesgo |
| ¿Ha cambiado algo desde la aprobación? | diff --check en CI |
| ¿Podemos restaurar? | import --dry-run, y después import, con el plan registrado |
Conserva las exportaciones y los informes HTML durante tu periodo de retención; se abren sin conexión e incrustan todo lo que muestran. Climakers no está certificado bajo SOC 2, ISO 27001 ni NIS 2, y ajat no hace que un patrimonio cumpla; produce los artefactos en los que se apoyan tus propios controles y auditores.
Siguientes pasos
- Playbooks para una revisión trimestral, un barrido de secretos, una revisión de coste, un gate de deriva en CI y una recuperación ante desastres: Flujos y comandos
- Cada informe, hallazgo y flag: Generar informes HTML
- El lado de Confluence del mismo plan: Backup y restauración de Confluence con acs2md
- Planes y prueba gratuita: la tienda de Climakers; las páginas de producto y de grupo: ajat y Atlassian Jira en climakers.com
Comenta este artículo
Los comentarios están listos para Giscus, pero aún faltan los ajustes públicos del repositorio y la categoría.