¿Cómo restringir el acceso al sistema de archivos en las compilaciones de Atlassian Bamboo?

12

Tenemos Atlassian Bamboo ejecutándose en Ubuntu. Cuando un desarrollador está configurando una compilación, tiene la posibilidad de ejecutar tareas de script de shell. Esto es útil para ejecutar comandos (personalizados) en la base de código que está creando.

Sin embargo, los scripts que se ejecutan también pueden acceder al sistema de archivos fuera de su directorio de trabajo en el directorio de trabajo de Bamboo ( <Bamboo-home-dir>/xml-data/build-dir/JOB_KEY). Así JOB_A también puede acceder a los archivos de JOB_B: cd ../JOB_B.

¿Existe la posibilidad de restringir este acceso?

PD: Soy consciente del hecho de que las compilaciones son ejecutadas por agentes (locales o remotos) en Bamboo y usted puede construir diferentes proyectos por diferentes agentes. Sin embargo, si el mismo agente crea dos proyectos, los proyectos podrían acceder a los archivos del otro.

7ochem
fuente

Respuestas:

9

Actualmente no existe la posibilidad de restringir los trabajos que pueden ejecutarse en el mismo agente de interactuar potencialmente entre sí. Hay un montón de solicitudes de funciones que solicitan este tipo de granularidad, pero si entiendo su pregunta correctamente, la solicitud más adecuada sería esta BAM-2504 Jira Ticket

Es una gran brecha en la línea de productos, la única solución que he encontrado es similar a la propuesta por la solicitud vinculada anteriormente, esencialmente su proceso de bambú necesitaría ejecutarse con privilegios suficientes para hacerse pasar por un conjunto de usuarios que representan los proyectos que te gustaría mantenerte separado.

Una vez que tenga este tipo de mecanismo en su lugar, solo debe tratar de hacer cumplir que todos los planes se ejecuten como una de las cuentas impersonables, dependiendo, por ejemplo, del proyecto o del creador, etc.

La forma problemática en la que actualmente existen los controles de acceso significaría que pocos administradores centrales necesitarían configurar todos los planes para que puedan estar seguros de la división de permisos requerida en lugar de permitir que los usuarios no administrativos editen y creen sus propios planes.

Si este tipo de enfoque no es factible, y no lo es una vez que ingresa al rango de "muchos cientos de usuarios", entonces lo único que realmente puede hacer para tratar de evitar que los trabajos de construcción interactúen entre sí es implementar controles muy débiles que te da el bambú.

He intentado dos enfoques para hacer esto:

  1. Elimine o paralice (elimine todas las capacidades de) sus agentes locales y para cada proyecto / equipo / lo que sea diferente en las placas de su instancia de bambú, necesita forzarlos a construir un servidor BYO. En la mayoría de los casos, he estado involucrado en el costo de un agente es completamente trivial en comparación con el costo de una posible fuga de datos o interacciones de planes maliciosos.
  2. Asegúrese de que los proyectos que tienen, o que piensan que tienen, datos confidenciales involucrados en sus planes siempre desinfecten sus entornos después de la construcción. Esto quita la carga del equipo que administra las herramientas y los proyectos que escriben sus planes y los obliga a limpiar defensivamente cualquier información que no quieran que esté disponible para otros.

Ninguna de las soluciones es ni siquiera perfecta, pero que yo sepa, se trata de tanta separación como puede imponer si tiene una instancia de bambú compartida.

hvindin
fuente