4.5. Exécuter Rsync en tant que root ou non-root
Cette section s'applique uniquement lorsque vous travaillez avec l'API OpenShift, et non avec la console web.
Les environnements OpenShift ont le contrôleur PodSecurityAdmission activé par défaut. Ce contrôleur exige des administrateurs de cluster qu'ils appliquent les normes de sécurité des pods au moyen d'étiquettes d'espace de noms. Toutes les charges de travail du cluster sont censées exécuter l'un des niveaux de normes de sécurité pods suivants : Privileged Baseline ou Restricted. Chaque cluster dispose de son propre ensemble de règles par défaut.
Pour garantir la réussite du transfert de données dans tous les environnements, Migration Toolkit for Containers (MTC) 1.7.5 a introduit des changements dans les pods Rsync, notamment l'exécution des pods Rsync en tant qu'utilisateur non root par défaut. Cela garantit que le transfert de données est possible même pour les charges de travail qui ne nécessitent pas nécessairement des privilèges plus élevés. Cette modification a été apportée parce qu'il est préférable d'exécuter les charges de travail avec le niveau de privilèges le plus bas possible.
Remplacer manuellement l'opération non root par défaut pour le transfert de données
Bien que l'exécution des pods Rsync en tant qu'utilisateur non root fonctionne dans la plupart des cas, le transfert de données peut échouer lorsque vous exécutez des charges de travail en tant qu'utilisateur root du côté de la source. MTC propose deux façons de remplacer manuellement l'opération non-root par défaut pour le transfert de données :
- Configurer toutes les migrations pour exécuter un pod Rsync en tant que root sur le cluster de destination pour toutes les migrations.
- Exécuter un pod Rsync en tant que root sur le cluster de destination par migration.
Dans les deux cas, vous devez définir les étiquettes suivantes du côté source de tous les espaces de noms qui exécutent des charges de travail avec des privilèges plus élevés avant la migration : enforce, audit, et warn.
Pour en savoir plus sur l'admission à la sécurité des pods et la définition des valeurs des étiquettes, voir Contrôle de la synchronisation de l'admission à la sécurité des pods.
4.5.1. Configurer le MigrationController CR en tant que root ou non-root pour toutes les migrations Copier lienLien copié sur presse-papiers!
Par défaut, Rsync s'exécute en tant que non-root.
Sur le cluster de destination, vous pouvez configurer le CR MigrationController pour qu'il exécute Rsync en tant que root.
Procédure
Configurez le CR
MigrationControllercomme suit :apiVersion: migration.openshift.io/v1alpha1 kind: MigrationController metadata: name: migration-controller namespace: openshift-migration spec: [...] migration_rsync_privileged: trueCette configuration s'appliquera à toutes les migrations futures.
4.5.2. Configurer le CR MigMigration en tant que root ou non-root par migration Copier lienLien copié sur presse-papiers!
Sur le cluster de destination, vous pouvez configurer le CR MigMigration pour qu'il exécute Rsync en tant que root ou non-root, avec les options non-root suivantes :
- En tant qu'identifiant d'utilisateur spécifique (UID)
- En tant qu'identifiant de groupe spécifique (GID)
Procédure
Pour exécuter Rsync en tant que root, configurez le CR
MigMigrationselon cet exemple :apiVersion: migration.openshift.io/v1alpha1 kind: MigMigration metadata: name: migration-controller namespace: openshift-migration spec: [...] runAsRoot: truePour exécuter Rsync en tant qu'identifiant d'utilisateur (UID) ou de groupe (GID) spécifique, configurez le CR
MigMigrationselon cet exemple :apiVersion: migration.openshift.io/v1alpha1 kind: MigMigration metadata: name: migration-controller namespace: openshift-migration spec: [...] runAsUser: 10010001 runAsGroup: 3