Droits d'accès au fichier java.policy
La sécurité Java™ 2 utilise plusieurs fichiers de règles pour déterminer les droits accordés à chaque programme Java.
Pour obtenir la liste des fichiers de règle disponibles pris en charge par WebSphere Application Server, voir Fichiers de règles de sécurité Java 2.
Pour IBM Technology for Java, le fichier java.policy
se trouve dans le répertoire java_home/jre/lib/security. Pour toutes les JVM, le fichier java.policy est utilisé dans tout le système.
N'éditez pas le fichier java.policy sur le serveur.
![[IBM i]](../images/iseries.gif)
- Saisissez QShell.
- Accédez à profile_root/bin.
- Appelez wsadmin -conntype NONE -c '$AdminTask showVariables {-scope Node=myNode -variableName JAVA_HOME}'.
Le
fichier java.policy est un fichier de règles par défaut global partagé par
tous les programmes Java exécutés sur la machine JVM (machine virtuelle Java) du noeud. La modification
du fichier java.policy s'applique en local, au niveau du noeud. La règle Java par défaut est sélectionnée automatiquement. Les erreurs
de syntaxe dans les fichiers de règle entraînent l'échec du serveur d'applications. Un fichier java.policy mis à jour est appliqué à tous
les programmes Java exécutés sur toutes les JVM installées sur le
noeud local. Redémarrez les programmes pour que les mises à jour
soient prises en compte. Il est recommandé de ne pas modifier
ce fichier.
Si une modification spécifique est requise pour certains programmes Java installés sur un noeud et si le fichier java.policy doit être mis à jour, modifiez avec soin le fichier java.policy à l'aide de l'outil de règles. Pour plus d'informations, voir Utilisation de PolicyTool pour éditer des fichiers de règles pour la sécurité Java 2.
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[z/OS]](../images/ngzos.gif)
Droits d'accès par défaut pour le fichier java.policy
// Les extensions standard obtiennent tous les droits par défaut
grant codeBase "file:${java.home}/lib/ext/*" {
permission java.security.AllPermission;
};
// droits par défaut octroyés à tous les domaines
grant {
// permet à une unité d'exécution de s'arrêter à l'aide de
la méthode java.lang.Thread.stop()
// n'acceptant aucun argument.
// Ce droit est octroyé par défaut uniquement pour assurer
// une compatibilité amont.
// Il est fortement conseillé de supprimer ce droit
// du fichier de règles ou de le limiter aux sources de code
// indiquées car Thread.stop() n'est pas sécurisé.
// Reportez-vous à "http://java.sun.com/notes" pour en savoir plus.
// droit java.lang.RuntimePermission "stopThread";
// permet d'écouter sur des ports dépourvus de droits
permission java.net.SocketPermission "localhost:1024-", "listen";
// propriétés "standard" pouvant être lues
permission java.util.PropertyPermission "java.version", "read";
permission java.util.PropertyPermission "java.vendor", "read";
permission java.util.PropertyPermission "java.vendor.url", "read";
permission java.util.PropertyPermission "java.class.version", "read";
permission java.util.PropertyPermission "os.name", "read";
permission java.util.PropertyPermission "os.version", "read";
permission java.util.PropertyPermission "os.arch", "read";
permission java.util.PropertyPermission "file.separator", "read";
permission java.util.PropertyPermission "path.separator", "read";
permission java.util.PropertyPermission "line.separator", "read";
permission java.util.PropertyPermission "java.specification.version", "read";
permission java.util.PropertyPermission "java.specification.vendor", "read";
permission java.util.PropertyPermission "java.specification.name", "read";
permission java.util.PropertyPermission "java.vm.specification.version","read";
permission java.util.PropertyPermission "java.vm.specification.vendor","read";
permission java.util.PropertyPermission "java.vm.specification.name", "read";
permission java.util.PropertyPermission "java.vm.version", "read";
permission java.util.PropertyPermission "java.vm.vendor", "read";
permission java.util.PropertyPermission "java.vm.name", "read";
};
Si certains programmes Java installés sur un noeud requièrent des droits d'accès non définis en tant que valeurs par défaut dans le fichier java.policy, envisagez la mise à jour du fichier java.policy. Le plus souvent, d'autres fichiers de règles sont mis à jour à la place du fichier java.policy. Si le droit d'accès n'est pas défini, l'exception java.security.AccessControlException est générée. Les droits d'accès manquants sont répertoriés dans les données de l'exception.
java.security.AccessControlException: access denied (java.io.FilePermission
C:\WebSphere\AppServer\java\jre\lib\ext\mail.jar read)
Les deux lignes de code précédentes doivent être sur une seule ligne.
Lorsqu'un programme Java reçoit cette exception et que l'ajout de ce droit est justifié, ajoutez un droit d'accès dans le fichier java.policy.
grant codeBase "file:user_client_installed_location" {
permission java.io.FilePermission
"C:\WebSphere\AppServer\java\jre\lib\ext\mail.jar", "read"; };
Pour savoir s'il faut ajouter un droit d'accès, consultez la rubrique relative à l'exception de contrôle d'accès pour la sécurité Java 2.
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[z/OS]](../images/ngzos.gif)