v1.3.3Version stable

Version stable v1.3.3

Droits d’accès et ACL POSIX

Depuis la 0.0.69, vérifier les accès pour une identité explicite du conteneur, y compris les ACL POSIX gérées avec setfacl.

1. Configurer les chemins et l’identité

dir-groups:
  app:
    paths: [/data, /etc/app/settings.json]
    access:
      uid: 1000
      gid: 1000
      groups: [1000]

Les identifiants appartiennent à l’espace du conteneur. Indiquez tous les groupes attendus, dont le GID principal. La sonde vérifie son identité et ses groupes réels, et refuse les capacités effectives ou permises. Elle ne bascule jamais silencieusement sur root.

2. Demander les contrôles d’accès

monit-docker -c monit-docker.yml stats --rsc 'fs_readable[app]' --rsc 'fs_writable[app]' --rsc 'fs_executable[app]'

Chaque résultat vaut 1 (autorisé) ou 0 (refusé). Pour un répertoire, exécutable signifie recherche/traversée. Python 3 doit être présent dans chaque conteneur contrôlé. La sonde isolée utilise la bibliothèque standard et le contrôle noyau os.access, car certains tests shell, notamment ceux de BusyBox, peuvent ignorer les entrées ACL. Un prérequis absent ou une identité invérifiable fait échouer la collecte au lieu d’annoncer un accès valide. Aucun fichier ni ACL n’est modifié.

3. Comprendre les ACL et les limites

Les tests Docker réels couvrent utilisateurs/groupes nommés, masques, ACL par défaut, fichiers et répertoires. Le masque peut retirer l’écriture accordée à un utilisateur nommé ; les ACL par défaut concernent les nouveaux enfants, pas l’accès au parent lui-même. Les liens symboliques sont suivis. Le contrôle prédit l’accès de la sonde : il ne prouve pas qu’une application pourra créer, écrire, supprimer ou exécuter un fichier. Quotas, options de montage, sticky bit, contextes de sécurité et changements ultérieurs peuvent modifier le résultat réel.

Les contextes applicatifs SELinux/AppArmor et les règles serveur des ACL NFSv4/SMB ne sont ni reproduits ni certifiés. La démo publique n’active pas ces sondes sur ses images hétérogènes ; utilisez cette configuration sur vos propres cibles compatibles.

4. Utiliser les règles et métriques

monit-docker -c monit-docker.yml cron --state-file /var/lib/monit-docker/state.json --dry-run --cmd-if 'fs_writable[app] == 0 ? restart'

Un groupe correspond dès qu’un chemin satisfait ses conditions. Pour détecter un chemin non inscriptible, testez == 0 ; == 1 ne garantit pas que tous les chemins sont inscriptibles. Les règles acceptent égalité/inégalité avec 0 ou 1. Prometheus expose monit_docker_container_fs_readable, monit_docker_container_fs_writable et monit_docker_container_fs_executable avec les labels du conteneur, du groupe et du chemin. Commencez par une simulation avant d’activer une correction automatique.