Accueil
» LINUX
»
Comment configurer les profils AppArmor pour les applications personnalisées sur SUSE SLES 15
Comment configurer les profils AppArmor pour les applications personnalisées sur SUSE SLES 15
Note de version (vérifiée le 6 octobre 2026) : Cette procédure s’applique à SUSE Linux Enterprise Server (SLES) 15 SP7 et aux systèmes SLE 15 compatibles utilisant AppArmor. SUSE indique qu’AppArmor est installé et actif par défaut sur SLES 15 SP7. SUSE Linux 16.0 remplace AppArmor par SELinux ; par conséquent, les commandes ci-dessous ne s’appliquent pas à la version 16.0. Consultez le guide de comparaison de SUSE Linux 16.0 et la documentation SELinux correspondante.
AppArmor est un module de sécurité Linux qui restreint les ressources auxquelles un programme peut accéder. Un profil est la politique associée à un exécutable : il peut autoriser ou interdire l’accès aux fichiers, aux fonctionnalités et autres ressources. Ce guide vous accompagne de la confirmation de la plateforme à l’application d’un profil testé, en proposant une phase d’apprentissage progressive afin de minimiser les risques de dysfonctionnement inattendu d’une application personnalisée.
Que devez-vous préparer avant de créer un profil ?
Utilisez une fenêtre de test ou de maintenance si l'application est importante. Vous aurez besoin d'un compte administrateur sudo, du chemin d'accès réel à l'exécutable de l'application et de la liste de ses tâches courantes. Incluez les opérations en arrière-plan, le démarrage et l'arrêt, les rechargements de configuration, les chargements ou exportations, les tâches planifiées et toutes les fonctions réseau. Un profil établi à partir d'un seul lancement ne peut pas déduire les fonctionnalités que vous n'utilisez jamais.
Sachez où l'application lit et écrit les données, quel compte l'exécute et si elle lance des processus auxiliaires. Évitez autant que possible de tester sur des données de production sensibles. Enregistrez l'état actuel du service et conservez une copie de tout profil existant avant d'effectuer des modifications.
Comment puis-je confirmer qu'AppArmor est disponible sur cette version de SUSE ?
Vérifiez d'abord la version du système d'exploitation et l'état actuel d'AppArmor :
cat /etc/os-release
sudo aa-status
Vérifiez d'abord la version SUSE ; la commande affichée lit le fichier d'identification du système d'exploitation.Utilisez la commande aa-status pour voir si AppArmor est actif et quels profils sont chargés.
Vérifiez que le système indique SLES 15 SP7 ou une autre version dont la documentation prend en charge AppArmor. Sous SLES 15 SP7, le guide SUSE indique qu'AppArmor est installé et actif par défaut. S'il est absent, SUSE documente son installation sudo zypper in -t pattern apparmor. Si le service est installé mais non actif, vérifiez la stratégie de démarrage du système et l'état des services avant de l'activer ; ne désactivez pas le module de sécurité pour contourner un problème d'application. Consultez le guide de démarrage d'AppArmor pour SLES 15 SP7 et le guide des outils en ligne de commande d'AppArmor pour SLES 15 SP7 pour plus de détails spécifiques à cette version.
Comment identifier le fichier exécutable qu'AppArmor doit profiler ?
Les profils AppArmor sont associés aux chemins d'accès des programmes. Il est donc important d'identifier le fichier exécutable réel plutôt que de supposer que la commande saisie par l'utilisateur correspond au binaire. Pour une commande accessible via le chemin d'accès du shell, exécutez :
command -v myapp
Remplacez myapp par la commande de l'application et vérifiez le chemin d'accès à l'exécutable avant de le profiler.
Pour un service, examinez sa définition d'unité et les détails de son processus à l'aide des outils disponibles sur votre système. Un script de lancement, un lien symbolique ou un interpréteur peut mener à un exécutable différent de celui attendu. Résolvez un chemin connu lorsque readlink -f /path/to/myappcela est nécessaire. Remplacez le chemin absolu vérifié dans chaque commande ci-dessous ; /usr/local/bin/myappceci n'est qu'un exemple.
Avant de créer un profil, vérifiez si un profil existe déjà dans le répertoire `/etc/profiles` /etc/apparmor.d. SUSE y stocke les profils, et le nom du fichier remplace généralement les barres obliques par des points dans le chemin de l'exécutable. Par exemple, `/ /usr/local/bin/myappetc/profiles` correspond à un nom de fichier tel que `/etc/ usr.local.bin.myappprofiles`. Ne remplacez pas un profil existant, qu'il soit fourni par un fournisseur ou géré localement, sans l'avoir examiné au préalable. SUSE répertorie également des profils supplémentaires dans le répertoire `/etc/profiles`/usr/share/apparmor/extra-profiles ; un profil approprié peut servir de point de départ, mais il doit néanmoins être vérifié pour votre application et votre version (voir la documentation du dépôt de profils SUSE ).
Comment générer un profil initial en toute sécurité ?
Exécutez l'outil de génération de profil en tant qu'administrateur, en utilisant le chemin d'accès complet à l'exécutable :
sudo aa-genprof /usr/local/bin/myapp
Lancez aa-genprof avec le chemin d'accès à l'exécutable vérifié ; le chemin indiqué ici est un exemple à remplacer.
aa-genprofCrée un profil initial et place le programme en mode de surveillance pendant son exécution. Ce mode enregistre les violations de stratégie sans bloquer l'opération refusée, ce qui vous permet d'observer le comportement avant application des restrictions. Suivez les instructions de l'outil ; après avoir exécuté l'application, utilisez son option d'analyse pour consulter les événements consignés. SUSE décrit ce processus comme itératif et ne garantit pas l'exhaustivité du profil suggéré automatiquement.
Quelles actions devez-vous tester, et où trouvez-vous les refus ?
Lorsque le profil est en mode de test, utilisez l'application comme un opérateur normal. Testez les flux de travail courants et les tâches moins fréquentes mais prises en charge, notamment les lectures, les écritures, les chargements, la génération de rapports, les redémarrages de services et les tâches auxiliaires. Veillez à ce que le test soit réaliste : un programme peut utiliser des fichiers ou des processus enfants différents pour une exportation et pour son écran d'accueil.
Consultez les messages du noyau et le journal d'audit pour les événements AppArmor :
sudo journalctl -k | grep -i apparmor
Après avoir exécuté le programme, examinez les messages du noyau à la recherche d'événements AppArmor ; cette commande affiche les entrées correspondantes, le cas échéant.
Selon la configuration de la journalisation du système, SUSE pointe également vers /var/log/audit/audit.log`/ journalctl | grep -i apparmoretc/log/log/`, `/ dmesg -Tetc/log/` et `/etc/log/`. L'absence de correspondance dans une vue de journal ne prouve pas que le profil est correct : vérifiez que l'application a bien été exécutée et consultez le service de journalisation ainsi que les autres emplacements de journaux documentés. Ne considérez pas un profil généré comme testé simplement parce que l'application démarre une fois.
Comment faut-il examiner et affiner le profil ?
En tant que superutilisateur, utilisez-le aa-logprofpour traiter les événements enregistrés et répondre aux invites :
sudo aa-logprof
Utilisez aa-logprof pour examiner les accès observés et déterminer lesquels doivent figurer dans la politique de l'application.
Pour chaque événement, vérifiez si l'accès est nécessaire à une tâche applicative documentée. N'autorisez que le chemin d'accès, le mode d'accès ou la capacité requis par le programme. La lecture d'un fichier de configuration est normale ; une écriture imprévue dans un répertoire non lié peut signaler une erreur ou un composant distinct nécessitant une investigation. Des règles trop générales affaiblissent le confinement, tandis que des règles trop restrictives peuvent perturber des tâches valides.
N’acceptez pas automatiquement toutes les invites et n’accordez pas un accès global à tous les fichiers.
Évitez les caractères génériques trop larges et les capacités inutiles ; privilégiez un chemin précis et les autorisations minimales requises.
Répétez le cycle de charge de travail et d'examen des journaux après les modifications de profil. Incluez des opérations de service et des tâches en arrière-plan distinctes.
Limitez les modifications à l'application cible ; n'effectuez pas de modifications de profil non pertinentes pour faire taire les interférences.
Le profil constitue une limite de contrôle d'accès ; par conséquent, une invite doit être traitée en fonction du comportement de l'application et des exigences opérationnelles, et non simplement parce qu'elle apparaît dans un journal. Le guide des outils en ligne de commande AppArmor de SUSE SLES 15 SP7 explique ces outils, et le support SUSE AppArmor fournit des liens de référence vers les pages de manuel pertinentes, notamment `man` aa-genprof, aa-logprof`man` et apparmor_parser`man`.
Quand faut-il passer le profil en mode d'application des règles ?
N’activez la mise en application qu’après avoir testé avec succès des flux de travail représentatifs et vérifié les événements légitimes. Appliquez le profil d’application, rechargez l’ensemble de profils d’AppArmor et redémarrez l’application ou le service afin que le processus en cours utilise la stratégie mise à jour.
Appliquez les restrictions au profil cible, puis rechargez AppArmor ; remplacez le chemin d’accès d’exemple par l’exécutable vérifié.
SUSE indique que le rechargement du système entraîne la relecture des profils/etc/apparmor.d ; un programme déjà en cours d'exécution peut nécessiter un redémarrage pour que le profil mis à jour soit pris en compte. Il est recommandé de coordonner ce redémarrage avec le responsable du service et d'utiliser la commande de gestion de service appropriée pour l'application. Ensuite, il est conseillé de répéter les flux de travail essentiels en mode de configuration, plutôt que de supposer que le succès du mode de signalement garantit leur bon fonctionnement.
Comment vérifier le résultat et se remettre d'une régression ?
Vérifiez l'état du profil et recherchez de nouveaux refus après les tests :
Vérifiez le profil chargé et consultez les nouveaux messages AppArmor après avoir exécuté l'application en mode d'application.
Vérifiez que le profil souhaité est chargé et en mode d'application, que le service reste opérationnel et que chaque tâche requise fonctionne correctement. Si l'application bloque une opération légitime, collectez l'événement correspondant, vérifiez si l'accès est réellement nécessaire et affinez le profil. Pour un diagnostic rapide et contrôlé, sudo aa-complain /usr/local/bin/myappvous pouvez placer le profil du programme en mode de signalement ; examinez-le, mettez-le à jour et effectuez de nouveaux tests avant de le réactiver aa-enforce. Rechargez et redémarrez si nécessaire. Évitez de désactiver AppArmor globalement ou d'accorder des autorisations trop larges pour résoudre le problème rapidement.
Quelles sont les erreurs courantes à éviter ?
Utilisation d'instructions de distribution incorrectes : la procédure décrite ici concerne SLES 15 AppArmor. SUSE Linux 16.0 utilise SELinux, d'après le guide comparatif de SUSE.
Profilage d'un wrapper plutôt que du programme réel : vérifiez l'exécutable qui s'exécute réellement, notamment pour les services et les scripts.
Apprentissage insuffisant : les fonctionnalités non testées ne génèrent pas d’accès observés, un profil incomplet peut donc échouer ultérieurement.
Approuver les demandes sans contexte : chaque autorisation ajoutée doit servir une tâche applicative requise.
Oublier le redémarrage : rechargez les profils, puis redémarrez l’application en cours d’exécution si nécessaire afin que le processus adopte la stratégie.
Modification sans possibilité de restauration : sauvegardez les profils gérés localement et suivez les modifications dans le système de contrôle de version ou le processus de gestion de la configuration de votre système.
Ces références ont été vérifiées le 6 octobre 2026. Les commandes et les détails des paquets peuvent varier selon la version du produit ; veuillez consulter la documentation correspondant au Service Pack SLES exact installé avant d’effectuer des modifications.