Docker Hub tiene dos elementos diferenciados para ayudar a administrar el acceso de los usuarios a sus imágenes: Las organizaciones y los equipos. Resumiendo los conceptos, las organizaciones son una colección de equipos y los equipos son una colección de Docker IDs. Hay una gran variedad de formas a la hora de configurar los equipos dentro de una organización.
Docker Hub tiene dos elementos diferenciados para ayudar a administrar el acceso de los usuarios a sus imágenes: Las organizaciones y los equipos. Resumiendo los conceptos, las organizaciones son una colección de equipos y los equipos son una colección de Docker IDs.
Hay una gran variedad de formas a la hora de configurar los equipos dentro de una organización. En el caso de ejemplo que mostraremos, se utilizará una empresa de software ficticia llamada “Starkmagic” que tiene un par de equipos de desarrollo, otro que trabaja en el front-end de la aplicación y el otro que trabaja en el back-end de la aplicación. También tienen un equipo de Q&A y un equipo de DevOps.
Lo ideal es establecer nuestros equipos para que cada equipo de ingeniería pueda subir y descargar las imágenes que creen. Le daremos al equipo de desarrollo privilegios de acceso para descargar imágenes de los repositorios de los equipos de desarrollo, así como la capacidad de subir imágenes a los repositorios que poseen. También le daremos al equipo de Q&A acceso de sólo lectura a todos los repositorios.
Organizaciones
En Docker Hub, una organización es una colección de equipos. Se pueden crear registros de imágenes a nivel de la organización y también podemos configurar notificaciones y enlazar con los repositorios de código fuente.
Vamos a empezar estableciendo la Organización.
El primer paso es abrir nuestro navegador favorito y nos dirigimos a Docker Hub. Si ya dispones de un Docker ID puedes crearlo desde la página principal.
Entra en Hub con la cuenta que te gustaría como dueño de la organización que se va a crear. No te preocupes si no estás 100% seguro de qué Docker ID te gustaría usar como propietario, puedes añadir más propietarios más tarde si es necesario.
Una vez que hayas iniciado sesión, navega a la página de Organizaciones haciendo clic en el enlace Organización, en la barra de navegación superior.
Una vez allí, vamos a crear una nueva organización. Haz clic en el botón “Crear organización” en la parte superior derecha. Se te presentará la opción de elegir entre el “Free Team” o “Team”, siendo esta segunda de pago. Puedes encontrar más información sobre las características de los planes en la página de precios.
Usaremos el plan “Team” en para el ejemplo.
Una vez que hayas seleccionado el plan de equipo, hay que seguir los pasos de la creación de la organización.
Primero se introduce el nombre y la descripción de la Organización.
Una vez creada nuestra Organización ya podemos empezar a añadir equipos.
Equipos
Recapitulando la información anterior, en Docker Hub, los equipos son una colección de identificaciones de Docker (DockerID). Usaremos esta estructura para agrupar usuarios y asignar privilegios a los repositorios de imágenes que son propiedad de la Organización.
Establezcamos nuestros equipos ahora. En la página principal de la organización, hay que hacer clic en la pestaña de Equipos y luego hacer clic en el botón azul “Crear Equipo”.
Introduce un nombre y una descripción para tu equipo.
Creamos los siguientes cuatro equipos:
- backendeng – Equipo de “Back-End”
- frontendeng – Equipo de “Front-End”
- qaeng – Equipo de Calidad o Q&A
- devopseng – Equipo de DevOps
Ahora que tenemos nuestros equipos listos, hay que añadir los usuarios a cada equipo.
Añadir un usuario a un equipo es bastante sencillo. Se tiene que seleccionar uno de los equipos de la lista, se hace clic en el botón azul “Añadir miembro” y se introduce el Docker ID del usuario que se quiere añadir.
Para el ejemplo, se van a añadir un usuario a cada uno de los equipos de la organización.
Permisos para el subir imágenes
Ahora que ya están creadas la organización y los equipos establecidos, hay que configurar los permisos para que los equipos puedan subir imágenes al repositorio o registro.
Antes de hacerlo, hay que analizar un poco el flujo de trabajo. Actualmente, hay creados dos equipos de desarrollo que están escribiendo código para la aplicación que desarrolla “Starkmagic”. Trabajan en la creación de características y en la corrección de defectos. También son responsables de escribir los Dockerfiles que serán usados por DevOps para construir el pipeline de CI/CD.
Además, los equipos de desarrollo (front-end y back-end) deben tener derechos de administración de las imágenes que crean. También tendrán permisos de lectura para las imágenes que DevOps cree.
Una vez que un equipo de desarrollo se compromete y genera un cambio en el código de la aplicación, el pipeline de CI/CD debería arrancar y construir las imágenes, ejecutar pruebas y subir la nueva imagen al repositorio.
En este escenario ficticio, no tenemos un CI/CD totalmente automatizado en producción porque queremos que nuestro equipo de Q&A pruebe la aplicación en el entorno de pruebas y, luego, apruebe la construcción de la imagen final. Así que, una vez que el pipeline de CI/CD de control de calidad se ha ejecutado y cargado una construcción en el entorno de control de calidad, el equipo de Q&A probará y reportará los defectos. Estos defectos serán etiquetados con la etiqueta de la imagen actual que el equipo está probando para que, así, el equipo de desarrollo ejecute esa etiqueta específica y reduzca la complejidad y repare el error o la posible brecha de seguridad.
Una vez que el equipo de control de calidad haya aprobado la construcción de la imagen definitiva, entonces iniciará un proceso de CI/CD que volverá a construir la imagen, pero esta vez, nombrará y etiquetará la imagen con un repositorio de imágenes diferente al que tenga acceso el equipo de DevOps. El equipo de control de calidad tendrá acceso de lectura y escritura a este repositorio y los equipos de desarrollo tendrán acceso de lectura.
El equipo de DevOps tendrá los derechos de administración de todos los repositorios de imágenes que están en el pipeline de CI/CD excepto los que son propiedad de los equipos de desarrollo. De esta manera, tienen el control total para establecer y gestionar dicho pipeline.
Crear repositorios y permisos de imágenes
Vamos a crear los repositorios de imágenes y establecer los permisos correctos que utilizarán los equipos.
Haz clic en el enlace “Repositorios” en la navegación superior. Luego haz clic en el botón azul “Crear un repositorio”. Rellena el siguiente formulario.
Elige tu organización en el menú desplegable y luego dale un nombre a la nueva imagen. Rellena la descripción opcional y luego elige la opción de “Privado”, ya que no queremos que esté abierto y publicado a toda la comunidad de usuarios de Docker. Una vez hecho esto, hacer clic en el botón “Crear”.
Necesitarás los siguientes repositorios de imágenes:
Ahora hay que asignar permisos a los equipos. Para ello, navega al tablero de la Organización haciendo clic en el enlace “Organizaciones” en la parte superior de la ventana de navegación. Hacemos clic en la Organización que queramos administrar (en nuestro caso, elegiremos “starkmagic”) y hacemos clic en la pestaña “Equipos”.
Empecemos con los equipos de desarrollo. Hacemos clic en el equipo “frontendeng” para ver sus detalles y luego hacemos clic en la pestaña “Permisos”.
En el menú desplegable, elegir el repositorio “ironsuit-ui-build” y luego elige “Admin” en el menú desplegable de permisos.
Notaremos que la descripción del privilegio “Admin” se muestra a la izquierda de la UI.
Hacemos clic en el botón azul “Añadir”. Por otro lado, también asignaremos permisos de “sólo lectura” a los otros tres repositorios de imágenes.
Ahora hacemos lo mismo para el equipo de ingeniería de back-end. Asignamos los permisos de “Admin” del equipo “backendeng” a los “ironsuit-api-build” y “read-only” a los otros tres repositorios de imágenes.
Ahora vamos a establecer los permisos para el equipo de control de calidad.
Seguiremos los mismos pasos anteriores para asignar permisos de “Lectura y escritura” a los siguientes repositorios de imágenes:
- ironsuit-ui
- Ironsuit-api
Ahora asignamos permisos de “sólo lectura” a las otras imágenes.
El último equipo para el que necesitamos configurar los permisos es el equipo de DevOps. Tendrán acceso “Admin” a todas las imágenes para permitir que el equipo maneje todo el pipeline de CI/CD.
Seguiremos los pasos anteriores para conceder permisos de “Admin” a todas las imágenes para el equipo de “devopseng” tal y como hemos hecho con el resto de equipos.
Conclusión
Docker Hub tiene un simple, aunque extremadamente poderoso, sistema de Control de Acceso Basado en Roles (RBAC), que permitirá usar Organizaciones y Equipos para agrupar y administrar los permisos de los usuarios a los repositorios de imágenes. Esto permite a los equipos distribuidos ser dueños de sus propios repositorios, pero colaborando a través de la organización y acelerando el flujo de trabajo de desarrollo y todo ello, con unos costes increíblemente bajos.
News