Przeglądaj źródła

vlc: Add draft about sandboxing

Alexandre Janniaux 6 lat temu
rodzic
commit
ce48154a1f
1 zmienionych plików z 43 dodań i 0 usunięć
  1. 43 0
      vlc/prerequis_sandbox.md

+ 43 - 0
vlc/prerequis_sandbox.md

@@ -0,0 +1,43 @@
+# Points à détailler pour la sandbox
+
+Le sandboxing consiste à isoler les différentes parties de l'application, de
+préférence par zone de privilèges et possibilité d'accès à des ressources, mais
+également à limiter l'accès à ces ressources. Deux fils d'exécutions qui ont
+chacun accès à un fichier en particulier doivent être isolés l'un de l'autre.
+
+Le code et projet réalisé ne correspond pas exactement à une sandbox elle-même
+mais à l'architecture mise en place afin de pouvoir l'implémenter. Même si Linux
+permet d'appliquer certaines règles de sandboxing à des threads, il faut garder
+en tête qu'un thread partage le même espace mémoire que les autres thread du
+processus, et qu'il n'est donc pas envisageable de baser l'isolation là dessus.
+
+Le projet a donc constitué à modifier l'architecture existante de façon à passer
+d'un modèle multithread à un modèle multiprocessus comprenant les besoins
+expliqués au dessus. Dans la suite du document, chaque choix d'architecture sera
+apprécié à travers ce cadre-là et comparé à des solutions existantes pour chacun
+des problèmes qui en est sorti.
+
++ Architecture broker vs architecture non broker
++ Zygote
++ Passage de descripteur de fichier entre processus
++ Gestion de messages asynchrones
++ Gestion de la boucle événementielle
+
+Pas pris en compte :
+
++ Le sandboxing lui-même
++ Les défaillances arrivant dans un programme distribué
+
+# Prérequis sandbox
+
+La première partie du document sera tournée vers Linux, même si le travail a été
+effectué en prenant en considération les limitations de Windows également. Il
+nous faut donc rappeler certains points de l'API Linux qui seront utilisés dans
+la suite, tout comme il faut décrire ce que VLC a besoin de faire dans
+l'architecture que je construis.
+
+Le principal de l'architecture actuelle de VLC est organisé autour de la notion
+de module. D'un côté, le core contrôle le chargement des fonctionnalités et joue
+un rôle d'orchestrateur. De l'autre côté chaque fonctionnalité est apportée par
+un module qui peut être chargé dynamiquement ou lié statiquement à
+l'application.