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.

Pour connaître la liste des fichiers de règles disponibles pris en charge par WebSphere Application Server, voir la rubrique sur les fichiers de règles de sécurité Java 2. Le fichier app.policy est un fichier de règles par défaut partagé par toutes les applications d'entreprise WebSphere Application Server. L'union des droits d'accès contenus dans les fichiers ci-dessous concerne l'application d'entreprise WebSphere Application Server :
  • 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.

Dans WebSphere Application Server, les droits d'accès aux unités d'exécution appropriées doivent être spécifiés dans le fichier was.policy ou app.policy pour les applications qui manipulent des unités d'exécution. Si les droits d'accès aux unités d'exécution ne sont pas spécifiés, l'application ne peut pas manipuler d'unités d'exécution et WebSphere Application Server crée une exception java.security.AccessControlException. Si un administrateur ajoute les droits d'accès d'unité d'exécution au fichier app.policy, la modification des droits d'accès requiert le redémarrage de WebSphere Application Server. Un administrateur doit ajouter le code ci-dessous à un fichier was.policy ou app.policy pour qu'une application puisse manipuler des unités d'exécution :
grant codeBase "file:${application}" { 
  permission java.lang.RuntimePermission "stopThread"; 
  permission java.lang.RuntimePermission "modifyThread";
  permission java.lang.RuntimePermission "modifyThreadGroup"; 
}; 
Important : Les mots clés des principaux Signed By et JAAS (Java Authentication and Authorization Service) ne sont pas pris en charge dans le fichier was.policy. Toutefois, le mot clé Signed By est pris en charge dans les fichiers suivants : java.policy, server.policy et client.policy. The JAAS principal keyword is supported in a JAAS policy file when it is specified by the java.security.auth.policy Java virtual machine (JVM) system property. Vous pouvez définir de manière statique les fichiers de règles d'autorisation dans la propriété java.security.auth.policy avec auth.policy.url.n=URL, où URL est l'emplacement de la règle d'autorisation.
Si les droits d'accès par défaut des applications d'entreprise (ensemble des droits d'accès définis dans le fichier java.policy, les fichiers server.policy et app.policy) sont suffisants; aucune action n'est requise. Le fichier app.policy par défaut est utilisé automatiquement. Si un changement spécifique s'impose pour toutes les applications d'entreprise de la cellule, mettez à jour le fichier app.policy. Les erreurs de syntaxe dans les fichiers de règles entraînent l'échec du démarrage des serveurs. Editez avec vigilance ces fichiers de règle.
Remarque : Les mises à jour du fichier app.policy s'appliquent uniquement aux applications d'entreprise sur le noeud auquel le fichier app.policy appartient.

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]
wsadmin> set obj [$AdminConfig extract cells/cell_name/node/node_name/app.policy c:\temp\test\app.policy]
[IBM i][z/OS]
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]
wsadmin> $AdminConfig checkin cells/cell_name/nodes/node_name/app.policy c:\temp\test\app.policy $obj
[IBM i][z/OS]
wsadmin> $AdminConfig checkin cells/cell_name/nodes/node_name/app.policy  temp/test/app.policy $obj
Tableau 1. Symboles utilisés pour associer des listes de droits d'accès à un type de ressource spécifique. Plusieurs symboles réservés sont définis pour associer les listes de droits d'accès à un type de ressource spécifique.
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.
Tableau 2. Symboles fournis pour indiquer le chemin d'accès et le nom de java.io.FilePermission. Cinq symboles imbriqués sont fournis pour indiquer le chemin d'accès et le nom de java.io.FilePermission. Ces symboles permettent des spécifications de droit d'accès souples. Le chemin d'accès absolu reste identique une fois l'application installée.
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
Conseil : Vous ne pouvez pas utiliser ${was.module.path} dans l'entrée ${application}.

[IBM i][z/OS]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 :

Avertissement : Dans l'exemple de code ci-dessous, les deux premières lignes relatives à java.io.FilePermission sont scindées en deux à des fins d'illustration.
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";
};
Si toutes les applications d'entreprise WebSphere Application Server d'une cellule requièrent des droits d'accès différents des valeurs par défaut dans les fichiers java.policy, server.policy et app.policy, mettez à jour le fichier app.policy. Le symptôme d'un droit manquant est matérialisé par l'exception java.security.AccessControlException.
Remarque : Les mises à jour du fichier app.policy s'appliquent uniquement aux applications d'entreprise sur le noeud du fichier app.policy.
[Windows] Le droit manquant figure dans les données de l'exception, par exemple,
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]
grant codeBase "file:user_client_installed_location" {   
  permission java.io.FilePermission 
"C:\WebSphere\AppServer\java\jre\lib\ext\mail.jar", "read";
 };
[IBM i]
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é.


Icône indiquant le type de rubrique Rubrique de référence



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rsec_apppolicy
Nom du fichier : rsec_apppolicy.html