SUN JAVA 2 Gestion de la sécurité pour les applets Date de création : Dernière modif : Document : Créé par : 15.02.2001 16.04.2017 582688330 Daucourt Philippe Table des matières 1 2 3 4 5 6 Introduction ....................................................................................................................................... 3 Sécurité avec Java 2 ........................................................................................................................ 3 Le fichier « java.security » ................................................................................................................ 4 Les fichiers « .policy » et l’utilitaire « policytool » ............................................................................. 4 La sécurité avec le Java Plug-in ...................................................................................................... 6 Diagramme résumant la sécurité avec Java 2 ................................................................................. 8 582688330 16/04/17 Page 2 sur 8 1 Introduction Une applet Java n’a par défaut aucun droit sur les ressources du poste de travail qui l’exécute. Il n’est donc, par exemple, pas possible à l’applet de lire un fichier se trouvant sur le disque dur local ou d’accéder à une imprimante. La plate-forme Java 2 permet cependant de définir une politique de sécurité autorisant certains applets identifiés à utiliser les ressources du client. Ce document présente donc les concepts nécessaires à la mise en œuvre d’une telle politique de sécurité. 2 Sécurité avec Java 2 Chaque applet est obligatoirement exécutée sous le contrôle d’un gestionnaire de sécurité (Security Manager). Celui-ci s’interpose entre l’applet et les ressources du système afin d’empêcher toutes tentatives d’accès illégales aux ressources du client. Les permissions d’accès sont définies par la politique de sécurité (Security Policy) installée sur le poste de travail. Lorsqu’aucune politique de sécurité n’est définie explicitement sur le client, le gestionnaire utilise alors la politique par défaut qui s’appelle le bac à sable (Sandbox). Le bac à sable interdit aux applets tout accès (lecture et écriture) aux ressources de la machine locale. Quand une applet tente d’accéder à une ressource du système, le gestionnaire de sécurité vérifie si le code exécuté a la permission d’accéder à cette ressource en consultant la politique de sécurité. Si la permission est accordée, tout se passe normalement. Dans le cas contraire, une exception est levée. Un navigateur Web qui veut exécuter des applets doit lui-même charger lors de son démarrage un et un seul gestionnaire de sécurité qui sera partagé par toutes les applets placées sous son contrôle. Pour des raisons de sécurité évidentes, une applet ne peut pas créer et utiliser son propre gestionnaire de sécurité. Par opposition aux applets, une application Java n’a aucun gestionnaire de sécurité par défaut. Une application peut donc accéder sans autre aux ressources locales du client. C’est au programmeur de créer un gestionnaire de sécurité qui limitera les accès de son application. 582688330 16/04/17 Page 3 sur 8 3 Le fichier « java.security » Le fichier « java.security » est un fichier de configuration qui indique aux gestionnaires de sécurité comment la politique de sécurité est définie sur un poste de travail. Aperçu partiel du contenu d’un fichier « java.security » : Policy.url.1=file:${java.home}/lib/security/java.policy Policy.url.2=file:${user.home}/.java.policy Policy.url.3=file:/c:/maSecuriteJava/maPolitique.policy Dans cet exemple, la politique de sécurité du poste client est définie par trois fichiers. Pour savoir dans quel répertoire se trouve le fichier « java.security », il faut effectuer une recherche sur le disque dur. Son emplacement dépend de l’environnement d’exécution Java 2 (voir chapitre 5) utilisé. 4 Les fichiers « .policy » et l’utilitaire « policytool » Les fichiers « .policy » servent à paramétrer la politique de sécurité du système local. Un fichier « .policy » contient un ensemble de répertoires auxquels sont attribués individuellement un ensemble de permissions. Exemple de fichier « .policy » : grant codeBase "file://J:/daucourt/ " { permission java.lang.RuntimePermission "queuePrintJob"; }; grant codeBase "http://esnig2.cpln.ch/applet/" { permission java.lang.RuntimePermission "queuePrintJob"; permission java.io.FilePermission "<<ALL FILES>>", "write"; }; Ce fichier autorise toutes les applets du répertoire « j:\daucourt » à utiliser les imprimantes locales et celles du répertoire « applet » sur la machine « esnig2.cpln.ch » à imprimer et à écrire sur le système de fichier local. L’utilitaire « policytool » est un programme livré avec le JDK qui permet de créer et d’éditer des fichiers « .policy » au travers d’une interface graphique. Pour lancer l’utilitaire « policytool » il suffit de taper policytool dans une fenêtre de ligne de commande pour autant que le chemin d’accès aux programmes du JDK soit correctement défini dans la variable « path » du système d’exploitation (par exemple : c:\jdk1.3\bin). 582688330 16/04/17 Page 4 sur 8 Aperçu du fichier « maPolitique.policy » au travers de l’utilitaire « policytool »: 582688330 16/04/17 Page 5 sur 8 5 La sécurité avec le Java Plug-in Il peut arriver que plusieurs environnement d’exécution Java 2 (Java Runtime Environement ou JRE) existent en parallèle sur un même poste de travail. Le Java Plug-in ne peut travailler qu’avec un seul de ces environnements. Il faut donc faire attention lors du paramétrage du fichier « java.security » que ce soit bien celui du JRE utilisé par le Java Plug-in. Le Java Plug-in se configure dans le panneau de configuration de Windows. 582688330 16/04/17 Page 6 sur 8 Dans le cas ci-dessous, il faut utiliser le fichier « java.security » du répertoire « c:\jdk1.3\jre\lib\security » puisque l’environnement d’exécution par défaut se trouve dans le répertoire « c:\jdk1.3 ». 582688330 16/04/17 Page 7 sur 8 6 Diagramme résumant la sécurité avec Java 2 <<Applet>> Applet Java 2 <<Navigateur Web>> Gestionnaire de sécurité <<Application>> Machine virtuelle du Java 2 Runtime Environnement <<Fichier>> java.security <<Fichier>> java.policy 582688330 16/04/17 <<Fichier>> applet.policy Page 8 sur 8