Droits d'accès au fichier app.policy
La sécurité Java™ 2 utilise plusieurs fichiers de règles pour déterminer les droits accordés à chaque programme Java. L'union des droits d'accès contenus dans les fichiers ci-dessous concerne l'application d'entreprise WebSphere Application Server. Cette union détermine les droits accordés.
- les fichiers de règles spécifiés dans les propriétés policy.url.* dans le fichier java.security,
- les fichiers app.policy gérés par les services de configuration et de réplication de fichiers,
- le fichier server.policy,
- le fichier java.policy,
- le fichier was.policy,
- la spécification de droits d'accès du fichier ra.xml,
- la bibliothèque partagée, qui correspond au fichier library.policy.
Les modifications apportées à ces fichiers sont répliquées sur d'autres noeuds dans la cellule WebSphere Application Server, Network Deployment.
grant codeBase "file:${application}" {
permission java.lang.RuntimePermission "stopThread";
permission java.lang.RuntimePermission "modifyThread";
permission java.lang.RuntimePermission "modifyThreadGroup";
};
Pour extraire le fichier de règles, utilisez une invite de commande et entrez la commande suivante en utilisant les valeurs de variable appropriées pour votre environnement :
![[Windows]](../images/windows.gif)
wsadmin> set obj [$AdminConfig extract cells/cell_name/node/node_name/app.policy c:\temp\test\app.policy]
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
wsadmin> set obj [$AdminConfig extract cells/cell_name/node/node_name/app.policy /temp/test/app.policy]
Modifiez le fichier extrait app.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. Les modifications apportées au fichier app.policy sont valables en local, au niveau du noeud.
Pour vérifier le fichier de règles, utilisez une invite de commande et entrez la commande suivante en utilisant les valeurs de variable appropriées pour votre environnement :
![[Windows]](../images/windows.gif)
wsadmin> $AdminConfig checkin cells/cell_name/nodes/node_name/app.policy c:\temp\test\app.policy $obj
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
wsadmin> $AdminConfig checkin cells/cell_name/nodes/node_name/app.policy temp/test/app.policy $obj
Symbole | Signification |
---|---|
file:${application} | Les droits s'appliquent à toutes les ressources au sein de l'application. |
file:${jars} | Les droits d'accès s'appliquent à tous les fichiers JAR (Java archive) utilitaires de l'application |
file:${ejbComponent} | Les droits d'accès s'appliquent aux ressources EJB de l'application. |
file:${webComponent} | Les droits d'accès s'appliquent aux ressources Web au sein de l'application. |
file:${connectorComponent} | Les droits d'accès s'appliquent aux ressources de connecteur, qu'elles soient dans l'application ou autonomes. |
Symbole | Signification |
---|---|
${app.installed.path} | Chemin d'accès à l'emplacement de l'installation de l'application. |
${was.module.path} | Chemin d'accès à l'emplacement d'installation du module. |
${current.cell.name} | Nom de cellule actuel |
${current.node.name} | Nom de noeud actuel |
${current.server.name} | Nom de serveur actuel |
Le fichier app.policy fourni par WebSphere
Application Server se trouve dans le répertoire racine_profil/config/cells/nom_cellule/nodes/nom_noeud/app.policy qui contient les droits par défaut :
grant codeBase "file:${application}" {
// The following are required by JavaMail
permission java.io.FilePermission "${was.install.root}${/}lib${/}activation-impl.jar", "read";
permission java.io.FilePermission "${was.install.root}${/}lib${/}mail-impl.jar", "read";
};
grant codeBase "file:${jars}" {
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
};
grant codeBase "file:${connectorComponent}" {
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
};
grant codeBase "file:${webComponent}" {
permission java.io.FilePermission "${was.module.path}", "read";
permission java.io.FilePermission "${was.module.path}${/}-", "read, write"
permission java.lang.RuntimePermission "loadLibrary.*";
permission java.lang.RuntimePermission "queuePrintJob";
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
};
grant codeBase "file:${ejbComponent}" {
permission java.lang.RuntimePermission "queuePrintJob";
permission java.lang.RuntimePermission "loadLibrary.*";
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
permission java.io.FilePermission "*", "read,write";
};
![[Windows]](../images/windows.gif)
java.security.AccessControlException: access denied
(java.io.FilePermission
C:\WebSphere\AppServer\java\jre\lib\ext\mail.jar read)
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 server.policy, par exemple :
![[Windows]](../images/windows.gif)
grant codeBase "file:user_client_installed_location" {
permission java.io.FilePermission
"C:\WebSphere\AppServer\java\jre\lib\ext\mail.jar", "read";
};
![[IBM i]](../images/iseries.gif)
grant codeBase "file:user_client_installed_location" {
permission java.io.FilePermission
"${was.install.root}$(/)java$(/)jre$(/)lib$(/)ext$(/)mail.jar", "read";
};
Les lignes d'information précédentes sur les droits sont coupées à titre d'illustration. Entrez les droits d'accès sur une seule ligne.
Pour savoir s'il faut ajouter un droit, voir la rubrique AccessControlException.
Redémarrez toutes les applications d'entreprise de WebSphere Application Server afin de vous assurer que le fichier app.policy mis à jour est appliqué.