Suscríbase al feed

Un registro privado puede ser útil para almacenar imágenes de contenedores de Linux para sus aplicaciones en una infraestructura interna, controlada y, posiblemente, más segura.

Los contenedores de Linux son tecnologías que le permiten empaquetar y aislar las aplicaciones junto con todo el entorno que necesitan durante su tiempo de ejecución, es decir, con todos los archivos que requieren para ejecutarse. Esto facilita el traslado de la aplicación que se encuentra dentro del contenedor de un entorno al otro (de desarrollo, de pruebas o de producción, entre otros).

Gartner reconoció a Red Hat como empresa líder en el informe de 2023 Gartner® Magic Quadrant™

Red Hat ocupó el puesto más alto en el Magic Quadrant de Gartner de 2023 para la gestión de contenedores no solo por su capacidad de ejecución, sino también por la integridad de su visión.

En este artículo, le enseñaré a crear un registro privado simple para SSL/TLS con una estrategia de seguridad más sólida que puede usarse para almacenar contenedores en general y a integrarlo con Red Hat OpenShift, para poder realizar implementaciones desconectadas de OCP. También puede usarse para casos en los que OperatorHub no tiene acceso a Internet.

Requisitos

Se necesitan los siguientes requisitos:

  • Nombre de dominio completamente calificado (FQDN): registration.rhbrlabs.com
  • SO: Red Hat Enterprise Linux 8.6 o superior
  • SELinux: en funcionamiento
  • Firewalld: habilitado
  • Registro: Podman
  • Herramientas de Apache
  • Volumen: 100 GB cargados en /data

Este registro es totalmente compatible con las instalaciones desconectadas de OpenShift.

Instalación

Para aumentar la seguridad del sistema, la instalación debe contar con técnicas de cifrado, además de las características de seguridad ya disponibles en Linux.

Cree los directorios requeridos:

[root@registry ~]# mkdir -p /data/registry/{auth,certs,data}

Certificados

Genere certificados para el registro de contenedores. En este ejemplo, se crean certificados con diez años de validez:

[root@registry ~]# openssl req -newkey rsa:4096 -nodes -sha256 \
-keyout /data/registry/certs/registry.rhbrlabs.com.key -x509 -days 3650 \
-out /data/registry/certs/registry.rhbrlabs.com.crt \
-subj "/C=US/ST=NorthCarolina/L=Raleigh/O=Red Hat/OU=Engineering/CN=registry.rhbrlabs.com" \
-addext "subjectAltName = DNS:registry.rhbrlabs.com"

El sistema operativo debe confiar en los certificados que se generaron.

Copie el certificado generado en el directorio de anclajes de confianza y ejecute update-ca-trust:

[root@registry ~]# cp /data/registry/certs/registry.rhbrlabs.com.crt /etc/pki/ca-trust/source/anchors/

[root@registry ~]# update-ca-trust

Cuentas de usuario

Para controlar el acceso a nuestro registro, deben crearse cuentas de usuario. En el siguiente ejemplo, se crea una cuenta para el registro de usuarios.

Genere un archivo de autenticación para el registro de imágenes:

[root@registry ~]# dnf -y install httpd-tools

[root@registry ~]# htpasswd -bBc /data/registry/auth/htpasswd registry redhat12345678

Secreto HTTP

Además de la cuenta de usuario, se necesita un secreto para aumentar la confiabilidad del acceso.

Genere un secreto aleatorio:

[root@registry ~]# date | md5sum

10f207a4cbba51bf00755b5a50718966

Software de registro

Con los datos necesarios a su disposición, es hora de crear el registro.

Cree el registro de contenedores con la imagen docker.io/library/registry:2:

[root@registry ~]# dnf -y install podman

[root@registry ~]# podman create --name ocp-registry --net host -p 5000:5000 \ -v /data/registry/data:/var/lib/registry:z -v /data/registry/auth:/auth:z \ -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry" \ -e "REGISTRY_HTTP_SECRET=10f207a4cbba51bf00755b5a50718966" \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v /data/registry/certs:/certs:z \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.rhbrlabs.com.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/registry.rhbrlabs.com.key docker.io/library/registry:2

El comando anterior generará un mensaje como este:

Trying to pull docker.io/library/registry:2...
Getting image source signatures
Copying blob fd4a5435f342 done 
Copying blob 213ec9aee27d done 
Copying blob 4583459ba037 done 
Copying blob b136d5c19b1d done 
Copying blob 6f6a6c5733af done 
Copying config dcb3d42c17 done 
Writing manifest to image destination
Storing signatures
Port mappings have been discarded as one of the Host, Container, Pod, and None network modes are in use
22633f37262a4ab2d64fc8beb44bb80618b11802974fb2f45d31d98db3cf14e8

Entonces, el registro estará listo para usar. Sin embargo, necesitamos una forma de controlar el inicio y la detención.

Control de inicio

Cree un archivo UNIT para que el registro inicie automáticamente el contenedor en el arranque:

[root@registry ~]# cat /etc/systemd/system/ocp-registry.service

[Unit] Description=OCP Registry [Service] Restart=always ExecStart=/usr/bin/podman start -a ocp-registry ExecStop=/usr/bin/podman stop -t 10 ocp-registry [Install] WantedBy=network-online.target

Inicie el contenedor:

[root@registry ~]# systemctl daemon-reload

[root@registry ~]# systemctl enable --now ocp-registry.service
Private registry running

Registro privado en ejecución

Firewall

Como se usa un firewall local, es necesario autorizar el puerto de servicio del registro.

Habilite el puerto TCP 5000 en Firewalld:

[root@registry ~]# firewall-cmd --permanent --add-port=5000/tcp

[root@registry ~]# firewall-cmd --reload

Comprobación del funcionamiento del registro

En este punto, debe comprobarse el acceso al registro nuevo.

Asegúrese de que la autenticación y el protocolo de confianza SSL/TLS funcionen:

[root@registry ~]# curl -u 'registry:redhat12345678' https://registry.rhbrlabs.com:5000/v2/_catalog

{"repositories":[]}

Integración a Red Hat OpenShift

Si va a usar este registro junto con OCP, cree un archivo en formato base64 con la información de autenticación.

Genere un archivo temporal con la información de autenticación para las instalaciones desconectadas de OpenShift:

[root@registry ~]# cat <<EOF > ~/registry-secret.json
"registry.rhbrlabs.com:5000": {
   "email": "registry@redhat.com",
   "auth": "$(echo -n 'registry:redhat12345678' | base64 -w0)"
}
EOF

Conclusión

Su nuevo registro privado con funciones de seguridad adicionales ya está en funcionamiento. Tenerlo constituye una buena manera de controlar el acceso y cumplir con los estándares de seguridad más estrictos, ya que aquellos que son públicos son más susceptibles a los problemas de seguridad.

En esta publicación, se explicó la creación de un registro con seguridad mejorada desde cero. A pesar de ser una solución funcional, carece de funciones avanzadas, como la alta disponibilidad, la duplicación de imágenes, el almacenamiento en caché y la replicación geográfica, que ya están presentes en soluciones más sólidas.

Todas estas funciones, además del análisis de los puntos vulnerables de los contenedores, la compatibilidad con el almacenamiento de objetos y el ajuste automático, están integradas en Red Hat Quay.

La plataforma de registro de contenedores Red Hat Quay ofrece almacenamiento, distribución y control con seguridad mejorada de los contenedores y los artefactos de la nube en cualquier infraestructura. Está disponible como elemento independiente o puede ejecutarse en Red Hat OpenShift.


Sobre el autor

Andre Rocha is a Consultant at Red Hat focused on OpenStack, OpenShift, RHEL and other Red Hat products. He has been at Red Hat since 2019, previously working as DevOps and SysAdmin for private companies.

Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

Navegar por canal

automation icon

Automatización

Las últimas novedades en la automatización de la TI para los equipos, la tecnología y los entornos

AI icon

Inteligencia artificial

Descubra las actualizaciones en las plataformas que permiten a los clientes ejecutar cargas de trabajo de inteligecia artificial en cualquier lugar

open hybrid cloud icon

Nube híbrida abierta

Vea como construimos un futuro flexible con la nube híbrida

security icon

Seguridad

Vea las últimas novedades sobre cómo reducimos los riesgos en entornos y tecnologías

edge icon

Edge computing

Conozca las actualizaciones en las plataformas que simplifican las operaciones en el edge

Infrastructure icon

Infraestructura

Vea las últimas novedades sobre la plataforma Linux empresarial líder en el mundo

application development icon

Aplicaciones

Conozca nuestras soluciones para abordar los desafíos más complejos de las aplicaciones

Original series icon

Programas originales

Vea historias divertidas de creadores y líderes en tecnología empresarial