HCL Commerce utilisateurs et privilèges liés aux conteneurs
Dans les versions antérieures de HCL Commerce, les images Docker étaient exécutées avec les privilèges root par défaut. A partir de HCL Commerce 9.1.14.0, les images d'applications HCL Commerce sont fournies avec un utilisateur non root et un groupe d'utilisateurs. Cet utilisateur est destiné à l'exécution des conteneurs et de leurs applications dans le cadre de votre déploiement, limitant plus strictement l'accès aux ressources du conteneur hôte.
L'utilisateur présenté estcomuser et a pour UID 1000. De plus, cet utilisateur est ajouté au groupe d'utilisateurs nommé comuser ayant pour GID 1000.Considérations relatives à la mise à jour d'utilisateurs non root
Les conteneurs non root sont globalement plus sécurisés car ils peuvent empêcher tout code malveillant ou vulnérable d'obtenir des autorisations privilégiées sur le système d'exploitation hôte du conteneur. Cependant, une telle évolution peut introduire certains problèmes si HCL Commerce a été exécuté en tant qu'utilisateur root avant la mise à niveau vers HCL Commerce 9.1.14.0 ou une version ultérieure, ou si vous disposez de personnalisations existantes qui ne sont pas conçues pour une utilisation avec l'utilisateur non root.
- Code de personnalisation
Les autorisations de fichiers étant liées aux utilisateurs et aux groupes, tout code de personnalisation manipulant des fichiers doit être évalué afin de garantir que tout fichier manipulé dispose bien des autorisations appropriées pour l'utilisateur et le groupe
comuser.Par exemple, si un code de personnalisation crée des fichiers temporaires dans le répertoire de base de l'utilisateur root (/root/) ou dans tout répertoire du système d'exploitation appartenant à l'utilisateur root, un déploiement mis à jour n'aura plus accès à ces fichiers. Le cas échéant, votre code personnalisé devra être mis à jour afin de créer des fichiers temporaires dans le répertoire /tmp/, ou de telle sorte que ces fichiers soient créés et mis à jour dans le répertoire de base du
comuser, à savoir /home/comuser/. Assurez-vous que toutes les autorisations de fichiers sont mises à jour de manière appropriée. - Utilitaire WCB
Le code de personnalisation est normalement empaqueté par l'utilitaire WCB aux fins du déploiement. Si l'utilitaire WCB est exécuté dans le conteneur
ts-utils, les autorisations de fichiers pour le code de personnalisation sont également importantes dans la mesure où le conteneurts-utilsest également exécuté en tant qu'utilisateurcomusernon root. Assurez-vous que le code de personnalisation qui est monté ou copié vers le conteneurts-utilsest accessible à l'utilisateur et au groupecomuserpour éviter tout problème. - Génération d'images Docker personnalisées
Lorsqu'une image Docker personnalisée est générée par-dessus une image HCL Commerce, gardez à l'esprit que le contexte utilisateur actuel est
comuseret nonroot.Cette modification affecte principalement les instructions RUN dans votre Dockerfile. Par exemple, si vous installez un package logiciel supplémentaire à l'aide du gestionnaire de packages système, ces commandes échoueront à moins que vous ne mettiez à jour le Dockerfile et n'utilisiez l'instruction USER pour définir d'abord l'utilisateur surroot.Au même titre que les problèmes d'autorisation lors de l'émission de commandes système, gardez à l'esprit les autorisations de fichiers lorsque vous utilisez les commandes COPY ou ADD. Par exemple,
Tip: Du fait de la mise à jour de CentOS vers UBI dans la même version, le gestionnaire de packages yum a été remplacé par dnf. Si vous installez ou modifiez les packages dans vos conteneurs personnalisés, veillez à bien mettre à jour votre Dockerfile pour qu'il tienne compte de cette modification.
Dans tous ces cas, n'oubliez pas de rebasculer le contexte utilisateur surCOPY --chown=comuser:comuser ./my-custom-script /SETUP/bin/comuseraprès vos instructions privilégiées. - Serveurs Web
Les images basées sur le serveur Web étant désormais exécutées par un utilisateur non root, aucun port privilégié (
1024et inférieur) ne peut être utilisé.Si vous avez personnalisé la configuration ou le plug-in IBM HTTP Server de telle sorte d'utiliser des ports privilégiés, tels que les ports
80ou443, vous devez mettre à jour votre fichier de configuration de manière à utiliser à la place un port non privilégié. - Pipeline CI/CD
Si vous utilisez un pipeline CI/CD, vous devez passer en revue vos outils et scripts afin de vous assurer que tous les fichiers ajoutés à vos images personnalisées le sont avec la propriété et les autorisations de fichiers appropriées conformément aux instructions fournies.
- Utilitaires
HCL Commerce fournit des utilitaires pour la mise à jour et la maintenance de votre site de commerce électronique, empaquetés dans le conteneur
ts-utils. Certains utilitaires, tels que dataload, nécessitent des fichiers de configuration et de données supplémentaires pour s'exécuter. Lorsque ces fichiers sont copiés ou montés dans le conteneurts-utils, assurez-vous qu'ils disposent de la propriété et des autorisations de fichiers appropriées conformément aux instructions fournies. - Volumes montés et fichiers externes dans les déploiements Docker
Dans les déploiements Docker, un volume hôte monté dans un conteneur exécuté par Docker voit ses autorisations de fichiers préservées. Assurez-vous que tous les répertoires montés et tous les fichiers contenus disposent des autorisations appropriées afin de pouvoir y accéder et les manipuler dans le conteneur. Si vous utilisez le projet Docker Compose fourni pour votre environnement, cet aspect est déjà pris en considération.
- Conteneur de volumes persistants (PVC) de l'outil Assets
Dans les déploiements Kubernetes, un PVC est utilisé pour conserver les fichiers utilisés par l'outil Assets dans Management Center for HCL Commerce. La mise à niveau vers un conteneur d'utilisateur non root présente un problème potentiel en fonction du type de PVC initialement provisionné :
- Un stockage ayant pour mode d'accès
readWriteOncene présente aucun problème lors de cette mise à niveau.Généralement, le stockage PVC est provisionné par la classe de stockage cloud en tant que PVC à mode d'accès
readWriteOnceet est monté avec l'utilisateur root comme propriétaire. LefsGroupest défini sur1000dans le chart Helm HCL Commerce, garantissant que l'utilisateur non root conservera toujours un accès complet en lecture et en écriture à tous les fichiers et répertoires préexistants dans le volume monté. - Un stockage ayant pour mode d'accès
readWriteManyprésente une exigence de mise à jour des autorisations lors de cette mise à niveau.Un type de PVC
readWriteMany, qui peut être provisionné par un autre fournisseur, tel que NFS Provisioner, présente un obstacle avec les autorisations utilisateur lors de cette mise à niveau. Dans ce cas, lefsGroupspécifié dans le chart Helm HCL Commerce n'aura aucune influence sur les fichiers existants dans le volume. Ainsi, les autorisations de fichiers au sein de votre PVC doivent être modifiées de manière à ce qu'elles restent accessibles par l'utilisateur non root.Pour mettre à jour vos autorisations de fichiers PVC
readWriteMany, consultez Mise à jour des autorisations de fichiers PVC.
- Un stockage ayant pour mode d'accès