La security (Parte II)

Pagina 2 di 3

Sotto al vestito... CodeSource e Permissions

Le Policy sono relativamente semplici, esse collegano ilcodice con una o piu' Permissions in un formato chee' piu' o meno key=value. Il contenutotuttavia vale una visita guidata.

CodeSource, definito in java.security.CodeSource, identificai files class per ragioni di sicurezza. Non confondetelo conil codebase, che e' la proprieta' usata perdescrivere la posizione di "root" di un Applet o diuna applicazione.

Esistono vari "tipi" di Permission, ognuno sirivolge ad uno specifica "classe" di funzioni, peresempio, FilePermission sono relative a funzioni di I/O suifile. I possibili oggetti associati alla Permission devonoessere ragionevolmente collegati al suo tipo (esempio:FilePermission sono associate ad oggetti di tipo File).

Le azioni che queste Permission consentono saranno (a lorovolta) ragionevolmente collegate con gli oggetti a cui siriferiscono (FilePermission consentira' azioni comeread e write).

Una parola relativa alle azioni: non tutte lePermission le hanno. In effetti, molte delle sottoclassi diBasicPermission non ne fanno uso. RuntimePermission (peresempio) elenca un possibile numero di oggetti che possonoessere "eseguiti" , ma non ha nessuna azione.

L'oggetto stesso, tuttavia, implica una azione. Peresempio la RuntimePermission che ha come oggetocreateClassLoader, implica che l'oggetto e'ClassLoader e l'azione e' create.

Riferirsi alla documentazione per ulteriori informazioni suquesto: http://java.sun.com/products/jdk/1.2/docs/guide/security/Permissions.html.

 

 

Usare i Policy Files

Nell'implementazione di default di Java 2, e'possibile mettere le informazioni relative alle Policy nellostesso file di testo in cui la Virtual Machine crea glioggetti di Policy.

Se siete interessati a creare un nuovo security provider,potete implementarvi il vostro sistema di archiviazione dellePolicy usando il vostro database preferito, una SmartCard oun Bean. Per gli scopi di questo articolo, noi ciconcentreremo sull'implementazione standard.

Di default, Java usa un file standard per generare la propriaPolicy centrale. Questa e' disponibile per ogni VirtualMachine, quindi il suo data source e' sempre lo stesso:$(JAVA_HOME)/jre/lib/security/java.policy. Potetecreare dei file di policy addizionali seguendo la stessasintassi.

Detto in due parole, il file specifica cosa, un certo codice(da una certa posizione e magari firmato con un certocertificato) puo' fare su determinati oggetti.

La posizione da cui il codice opera/viene scaricato ed ilcertificato sono attributi opzionali, se non vengono inclusil'autorizzazione verra' applicata a tutte le copiedel codice indicato.

Possono anche essere usati dei caratteri "jolly"per specificare il codice, per rendere piu' semplice lastruttura del file.

Una volta che avete preparato il vostro Policy File, poteteintegrarlo in vari modi. Per collegarlo"dinamicamente" , includete il file come parametrodi runtime nel richiamo della vostra applicazione:

-Djava.security.policy=[path/nome/del/file]

Per esempio:

java ­Djava.security.policy=/foo/home/myperms.policy Foo

esegue Foo.class con le policy specificate nel file"myperms.policy".

E' anche possibile mettere il file nella directory di unutente e renderlo disponibile per il codice eseguito daquell'utente, questa e' una tecnica utile se si vuoledifferenziare le possibilita' di diversi utenti.

Questo modo e' possibile perche' java.securityspecifica directory utenti come una posizione"valida" per un file di Policy. Naturalmente questadirettiva puo' essere rimossa per evitare che gli utentialterino le proprie autorizzazioni.

Dulcis in fundo, potete rendere le vostre policy disponibilia tutti in una VM creando una nuova entry nel filejava.security.

Questo ha lo svantaggio di richiedere una procedura diinstallazione separata se la vostra applicazione vieneportata da una piattaforma all'altra, ma puo' essereutile se la vostra applicazione non viene reinstallata difrequente.

Per installare una policy in questo modo date un'occhiataalla seguente linea del java.security:

policy.url.1=file:${java.home}/lib/security/java.policypolicy.url.2=file:${user.home}/.java.policy

Dovrete aggiungere una linea simile specificando il percorsodel vostro file di policy.

Un modo molto semplice per creare e modificare Polociese' il tool policytool, che si trova nella$(JAVA_HOME)/bin della vostra installazione. Si tratta di untool grafico, quindi richiede un'ambiente grafico perfunzionare (X o Windows). Dato che questo tool"nasconde" il meccanismo interno del Policy file,e' meglio non diventarne troppo dipendenti.

Continua >>>