HCL Commerce : usuarios y privilegios de contenedores
En versiones anteriores de HCL Commerce, las imágenes de Docker se han ejecutado con privilegios raíz de forma predeterminada. A partir de la versión 9.1.14.0 de HCL Commerce, las imágenes de la aplicación de HCL Commerce se suministran siempre con un usuario y un grupo de usuarios no raíz. Este usuario se ha diseñado para ejecutar los contenedores y sus aplicaciones dentro de su implementación, con lo que se limita de manera más estricta el acceso a los recursos del contenedor host.
El usuario que se presenta escomuser
con el UID 1000
. Además, este usuario se añade al grupo de usuarios denominado comuser
con GID 1000
.Consideraciones sobre la actualización para usuarios no raíz
Por lo general, los contenedores que no son raíz son más seguros, ya que pueden evitar que cualquier código malicioso o vulnerable obtenga permisos con privilegios en el sistema operativo del host del contenedor. Sin embargo, este cambio puede generar algunos problemas si HCL Commerce se ha ejecutado como usuario raíz antes de actualizar a HCL Commerce versión 9.1.14.0 o superior, o bien si tiene personalizaciones existentes no diseñadas para usar con el usuario no raíz.
- Código de personalización
Dado que los permisos de archivos están relacionados con usuarios y grupos, debe evaluarse cualquier código de personalización que manipule archivos para garantizar que los archivos que se manipulen tengan los permisos correctos para el usuario y grupo de usuarios
comuser
.Por ejemplo, si con algún código de personalización se crean archivos temporales en el directorio de inicio del usuario raíz, /root/ , o en cualquier directorio del sistema operativo propiedad del usuario raíz, un despliegue actualizado ya no tendrá acceso a estos archivos. En este caso, su código personalizado debe actualizarse para crear archivos temporales dentro del directorio /tmp/, o crear y actualizar esos archivos en el directorio de inicio
comuser
, /home/comuser/. Asegúrese de que todos los permisos de archivos estén actualizados adecuadamente. - Programa de utilidad WCB
El código de personalización suele venir empaquetado por el programa de utilidad WCB para su despliegue. Si el programa de utilidad WCB se ejecuta en el contenedor
ts-utils
, los permisos de archivo para el código de personalización también importan, ya que el contenedorts-utils
también se ejecuta como usuariocomuser
no raíz. Asegúrese de que el usuario y el grupo de usuarioscomuser
puedan acceder al código de personalización que se está montando o copiando en el contenedorts-utils
para evitar problemas. - Creación de imágenes de Docker personalizadas
Cuando se crea una imagen de Docker personalizada sobre una imagen de HCL Commerce, tenga en cuenta que el contexto de usuario actual es
comuser
y noroot
.Este cambio afecta principalmente a las instrucciones de RUN en su Dockerfile. Por ejemplo, si instala un paquete de software adicional utilizando el administrador de paquetes del sistema, estos mandatos fallarán, a menos que actualice el Dockerfile y use la instrucción USER para configurar al usuario comoroot
en primer lugar.De manera similar a los problemas de permisos que se producen al emitir comandos del sistema, tenga en cuenta los permisos de archivos cuando utilice los comandos COPY o ADD. Por ejemplo,Tip: Debido a la actualización de CentOS a UBI en la misma versión, el administrador de paquetes yum se ha sustituido por dnf. Si instala o modifica los paquetes en sus contenedores personalizados, asegúrese de actualizar el Dockerfile para tener en cuenta este cambio.
en todos estos casos, no olvide volver a cambiar el contexto de usuario aCOPY --chown=comuser:comuser ./my-custom-script /SETUP/bin/
comuser
después de las instrucciones con privilegios. - Servidores web
Como las imágenes basadas en servidor web ahora las ejecuta un usuario no raíz, no se pueden utilizar puertos con privilegios (
1024
e inferiores).Si ha personalizado la configuración o el complemento de IBM HTTP Server para que use puertos con privilegios, como
80
o443
, debe actualizar el archivo de configuración para que use un puerto sin privilegios en su lugar. - Canalización de CI/CD
Si utiliza una canalización de CI/CD, debe revisar sus herramientas y scripts para asegurarse de que cualquier archivo que se añada a sus imágenes personalizadas se haga con la propiedad y los permisos de archivo adecuados según las directrices proporcionadas.
- Programas de utilidad
HCL Commerce proporciona programas de utilidad para actualizar y mantener su sitio de comercio electrónico, empaquetados en el contenedor
ts-utils
. Algunos programas de utilidad, como dataload, necesitan configuración y archivos de datos adicionales para ejecutarse. Cuando estos archivos se copien o monten en el contenedorts-utils
, asegúrese de que tengan la propiedad y los permisos de archivo adecuados según las directrices proporcionadas. - Volúmenes montados y archivos externos en despliegues de Docker
En los despliegues de Docker, se conservan los permisos de archivo de un volumen de host que esté montado en un contenedor ejecutado por Docker. Asegúrese de que todos los directorios montados y los archivos contenidos tengan los permisos correctos configurados para poder acceder a ellos y manipularlos dentro del contenedor. Si está utilizando el proyecto Docker Compose proporcionado para su entorno, este hecho ya se tiene en cuenta.
- Contenedor de volumen persistente (PVC) de la herramienta Elementos
En los despliegues de Kubernetes, se utiliza un PVC para conservar los archivos que utiliza la herramienta Elementos de Management Center for HCL Commerce. La actualización a un contenedor de usuarios no raíz supone un posible problema según el tipo de PVC que se haya aprovisionado inicialmente:
- Un almacenamiento en modo de acceso
readWriteOnce
no supone ningún problema durante esta actualización.Normalmente, el almacenamiento de PVC lo aprovisiona la clase de almacenamiento en la nube como un PVC de modo de acceso
readWriteOnce
y se monta con el usuario raíz como propietario. ElfsGroup
está configurado en1000
en el Helm Chart de HCL Commerce, lo que garantiza que el usuario no raíz siga conservando el acceso completo de lectura y escritura a todos y cada uno de los archivos y directorios preexistentes en el volumen montado. - Un almacenamiento en modo de acceso
readWriteMany
incluye un requisito de actualización de permisos durante esta actualización.Un tipo de PVC
readWriteMany
, que puede aprovisionarse con otro proveedor, como NFS Provisioner, supone un obstáculo con los permisos de usuario durante esta actualización. En este caso, elfsGroup
especificado en el Helm Chart de HCL Commerce no tendrá ningún efecto en los archivos existentes del volumen. Por lo tanto, los permisos de archivos de su PVC deben cambiarse para que pueda seguir accediendo a ellos el usuario no raíz.Para actualizar los permisos de sus archivos de PVC
readWriteMany
, consulte Actualización de permisos de archivos PVC.
- Un almacenamiento en modo de acceso