OVH Cloud OVH Cloud

Mise en place d'un sandbox

4 réponses
Avatar
Armel HERVE
Bonjour =E0 tous,

je voudrais savoir s'il est possible (et comment...) par le bias d'un=20
sandbox de limiter l'acc=E8s de certaines classes d=E9j=E0 =E9crites (plugi=
n,=20
par exemple) =E0 un ensemble restreint de r=E9pertoires.

Je n'ai (ni ne veux avoir acc=E8s) aux sources des classes =E0 limter dans=
=20
leurs actions d'acc=E8s aux fichiers.

Merci d'avances pour vos suggestions

Armel

4 réponses

Avatar
alexandre cartapanis
Bonjour à tous,

je voudrais savoir s'il est possible (et comment...) par le bias d'un
sandbox de limiter l'accès de certaines classes déjà écrites (plugin,
par exemple) à un ensemble restreint de répertoires.

Je n'ai (ni ne veux avoir accès) aux sources des classes à limter dans
leurs actions d'accès aux fichiers.

Merci d'avances pour vos suggestions

Armel


Le mecanisme de Policy est fait pour toi :)

Ce lien explique comment faire pour "restreindre" une application:
http://java.sun.com/docs/books/tutorial/security1.2/tour2/index.html

Avatar
Simon OUALID
Armel HERVE wrote:
Bonjour à tous,

je voudrais savoir s'il est possible (et comment...) par le bias d'un
sandbox de limiter l'accès de certaines classes déjà écrites (plugin,
par exemple) à un ensemble restreint de répertoires.

Je n'ai (ni ne veux avoir accès) aux sources des classes à limter dans
leurs actions d'accès aux fichiers.

Merci d'avances pour vos suggestions

Armel


Regarde du coté du SecurityManager, je crois que c'est lui qui gère ce
genre de choses :

http://java.sun.com/docs/books/tutorial/essential/system/securityIntro.html

Attention par contre, je crois qu'il n'est pas activé par défaut pour
une application standalone, alors qu'il l'est pour un applet ou une
appli Java Web Start.

Si je me souviens bien, on peut l'activer pour une application
standalone avec un -D à passer en paramètre au lancement la JVM, mais ça
fait longtemps que je n'ai pas eu à m'en servir !

Symon

Avatar
Armel HERVE
In article <42b19781$0$3104$,
m'a dit...
Bonjour à tous,

je voudrais savoir s'il est possible (et comment...) par le bias d'un
sandbox de limiter l'accès de certaines classes déjà écrites (p lugin,
par exemple) à un ensemble restreint de répertoires.

Je n'ai (ni ne veux avoir accès) aux sources des classes à limter d ans
leurs actions d'accès aux fichiers.

Merci d'avances pour vos suggestions

Armel


Le mecanisme de Policy est fait pour toi :)

Ce lien explique comment faire pour "restreindre" une application:
http://java.sun.com/docs/books/tutorial/security1.2/tour2/index.html

Merci pour ta réponse, mais il demeure un problème: ce que je voudrais,

c'est restreindre seuelement une partie de l'application, pas
l'application entière: en fait, il s'agit d'une application tournant sur
un serveur resin et qui utilise des feuilles XSL qui peuvent provenir de
sources non certifiées. Dans une feuille XSL, il est possible d'inclure
de façon dynamique un fichier externe appartenant au système
d'exploitation sur lequel tourne le serveur d'application.

Il faut donc absolument que ce moteur XSL soit resteint dans son
utilisation du file system en fonction de l'utilisateur courant de
l'application.

Le SecurityManager permet ce genre de chose, mais globalement à toute
une application et pas seulement sur une sous partie de cette
application.

Armel


Avatar
alexandre cartapanis
In article <42b19781$0$3104$,
m'a dit...


Bonjour à tous,

je voudrais savoir s'il est possible (et comment...) par le bias d'un
sandbox de limiter l'accès de certaines classes déjà écrites (plugin,
par exemple) à un ensemble restreint de répertoires.

Je n'ai (ni ne veux avoir accès) aux sources des classes à limter dans
leurs actions d'accès aux fichiers.

Merci d'avances pour vos suggestions

Armel


Le mecanisme de Policy est fait pour toi :)

Ce lien explique comment faire pour "restreindre" une application:
http://java.sun.com/docs/books/tutorial/security1.2/tour2/index.html



Merci pour ta réponse, mais il demeure un problème: ce que je voudrais,
c'est restreindre seuelement une partie de l'application, pas
l'application entière: en fait, il s'agit d'une application tournant sur
un serveur resin et qui utilise des feuilles XSL qui peuvent provenir de
sources non certifiées. Dans une feuille XSL, il est possible d'inclure
de façon dynamique un fichier externe appartenant au système
d'exploitation sur lequel tourne le serveur d'application.

Il faut donc absolument que ce moteur XSL soit resteint dans son
utilisation du file system en fonction de l'utilisateur courant de
l'application.

Le SecurityManager permet ce genre de chose, mais globalement à toute
une application et pas seulement sur une sous partie de cette
application.

Armel


ok, alors la solution que je vois (comme ca sans vraiment reflechir:))
c'est de faire des jars separé. En effet, dans le fichier Policy, tu
peux specifier les permissions des classes en fonctions de leurs
"sources", c'est a dire d'une URL. Idealement, ton processeur XSLT doit
etre placé dans un jar "a part", et ensuite dans ton fichier policy tu
peux ecrire:

// les permissions ne seront accordé que aux classes contenu dans le
// fichier processor.jar
grant CodeBase "file://path/to/xslt/processor.jar" {
// donne les droits en lecture dans le repertoire
// /path/to/directory et tous ses descendant grace au '-'
permision java.io.FilePermission "/path/to/directory/-" "read"
}

A noter que tu peux accorder des permissions suivant d'autres condition,
comme par exemple le fait que le jar est signé (en utilisant Signedby).

A mon avis, le mecanisme de Policy suffit largement a resoudre ton
probleme, cherche un peu de documentation. La documentation officiel:
http://java.sun.com/j2se/1.5.0/docs/guide/security/spec/security-specTOC.fm.html
En particulier, voir les FilePermission
(http://java.sun.com/j2se/1.5.0/docs/guide/security/spec/security-spec.doc3.html#19913)
et aussi la structure d'un fichier policy
(http://java.sun.com/j2se/1.5.0/docs/guide/security/spec/security-spec.doc3.html#20128)
Voila, j'espere que ca resoudra ton probleme.