Introduction à la sécurité d'accès du code
La sécurité d'accès du code est un mécanisme qui permet de limiter l'accès du code aux ressources et aux opérations protégées. Dans le .NET Framework, la sécurité d'accès du code exécute les fonctions suivantes :
Définit les autorisations et les jeux d'autorisations qui représentent le droit d'accès aux diverses ressources système.
Permet aux administrateurs de configurer la stratégie de sécurité en associant des jeux d'autorisations à des groupes de codes.
Permet au code de demander les autorisations dont il a besoin pour s'exécuter ainsi que les autorisations qu'il lui serait utile d'avoir et spécifie les autorisations que le code ne doit jamais avoir.
Accorde les autorisations à chaque assembly chargé, en fonction des autorisations demandées par le code et des opérations permises par la stratégie de sécurité.
Permet au code d'exiger que ses appelants aient les autorisations spécifiques.
Permet au code d'exiger que ses appelants possèdent une signature numérique, n'autorisant ainsi que les appelants d'une organisation ou d'un site spécifiques à appeler le code protégé.
Applique les restrictions sur le code au moment de l'exécution en comparant les autorisations accordées de chaque appelant de la pile des appels aux autorisations que les appelants doivent avoir.
Pour déterminer si le code est autorisé à accéder à une ressource ou à exécuter une opération, le système de sécurité du runtime parcourt la pile des appels, en comparant les autorisations accordées de chaque appelant à l'autorisation demandée. Si un appelant de la pile des appels n'a pas l'autorisation demandée, une exception de sécurité est levée et l'accès est refusé. Le parcours de la pile des appels est conçu pour éviter les attaques malveillantes au cours desquelles du code ayant un niveau de confiance plus faible appelle du code ayant un niveau de confiance élevé et l'utilise pour exécuter des actions non autorisées. Le fait de demander les autorisations de tous les appelants au moment de l'exécution affecte la performance, mais est essentiel pour protéger le code contre les attaques malveillantes de code ayant un niveau de confiance plus faible. Pour optimiser la performance, vous pouvez faire en sorte que votre code effectue moins de parcours de pile ; vous devez cependant être sûr que vous ne mettez pas la sécurité en danger lorsque vous faites cela.
La figure suivante illustre le parcours de pile qui résulte du fait qu'une méthode dans l'Assembly A4 demande que ses appelants aient l'autorisation P.
Parcours de pile de sécurité
Dans le cadre d'une utilisation classique de la sécurité d'accès du code, une application télécharge un contrôle à partir d'un site Web hôte directement vers le client de sorte que l'utilisateur puisse entrer des données. Le contrôle est construit à l'aide d'une bibliothèque de classes installée. Vous trouverez ci-dessous quelques-unes des façons dont la sécurité d'accès du code peut être utilisée dans ce scénario :
Avant le chargement, un administrateur peut configurer la stratégie de sécurité pour spécifier que le code reçoive une autorité spéciale (plus d'autorisation que le code Internet ne recevrait généralement) s'il a une signature numérique particulière. Par défaut, le jeu d'autorisations nommé Internet prédéfini est associé à tout le code téléchargé à partir d'Internet.
Au moment du chargement, le runtime n'accorde plus au contrôle aucune autre autorisation que celles associées au jeu d'autorisations nommé Internet, sauf si le contrôle a une signature de confiance. Dans ce cas, lui sont octroyées les autorisations associées au jeu d'autorisations Internet et éventuellement d'autres autorisations supplémentaires en raison de sa signature de confiance.
Au moment de l'exécution, dès qu'un appelant (dans ce cas, le contrôle hébergé) accède à une bibliothèque qui expose des ressources protégées ou une bibliothèque qui appelle du code non managé, la bibliothèque exige une sécurité, ce qui conduit à vérifier que les autorisations de ses appelants sont les autorisations appropriées octroyées. Ces vérifications de sécurité évitent que le contrôle n'effectue des actions non autorisées sur les ordinateurs du client.