Javas drošības atļaujas (permissions)

Katrs konkrētais jautājums ļaut/neļaut atspoguļojas kādā atļaujas java.security.Permission objektā.

Atļauju izskats drošības politikas failos

grant signedBy "signer_a,signer_b" codeBase "URL" {
    permission permission-class-name "target-name", "action",
	    signedBy "signer-names";
    ...
};

Atļauju pamatveidi

java.security.AllPermission
Atļauja, no kuras izriet visas citas atļaujas; jālieto rūpīgi, g.k. testējot vai situācijās, kad ir ļoti grūti uzskaitīt visus vajadzīgos atļauju veidus
java.awt.AWTPermission
Piekļuve klipbordam, AWT notikumiem, utml.
java.io.FilePermission
Failu un direktoriju atļaujas. Apzīmējums "dir/*" nozīmē pašu direktoriju un visus tās failus, "dir/-" nozīmē direktorijas visu saturu (ieskaitot apakšdirektorijas), "<<ALL FILES>>" nozīmē visus failus. "*" - visi faili tekošajā direktorijā un "-" - visi faili tekošajā direktorijā un tās apakšdirektorijās. Akciju veidi: read,write,execute,delete.
java.net.NetPermission
; soketu intervāli
java.util.PropertyPermission
Vides īpašību atļaujas. Akcijas ir read,write. java.lang.reflect.ReflectPermission
Refleksijas atļaujas
java.lang.RuntimePermission
Izpildes laika atļaujas, piemēram "createClassLoader", "getClassLoader", "setSecurityManager", utml.
java.security.SecurityPermission
Darbošanās ar drošības politikām, atļaujām u.c. jēdzieniem.
java.io.SerializablePermission
Serializējamības atļaujas
java.net.SocketPermission
soketu intervāli; īpašības: accept, connect, listen, resolve

Pilnu sarakstu sk. http://java.sun.com/j2se/1.4.2/docs/guide/security/permissions.html - "Permissions in the Java 2 SDK".

java.security.BasicPermission

Vairākas klases manto no šīs atļauju klases. Tai nav akciju, t.i. vai nu attiecīgā īpašība piemīt, vai arī nē.

Atļauju klašu hierarhija zem java.security.Permission ietver tikai pozitīvās atļaujas. Ne vienmēr ir ērti izteikt tādas prasības kā "var rakstīt visus failus, izņemot šo konkrēto failu".

Parakstīts kods

Klašu ielādētāji java.lang.ClassLoader, java.security.SecureClassLoader, java.net.URLClassLoader utml. veido citu objektu hierarhiju. java.security.SecureClassLoader paplašina parasto ielādētāju ar CodeSource atbalstu.

java.lang.SecurityManager

Šī klase jūtami pārveidota kopš JDK1.1; satur atsevišķas 29 "check" metodes.

public void checkCreateClassLoader()
public void checkAccess(Thread t)
public void checkAccess(ThreadGroup g)
public void checkExit(int status)
public void checkExec(String cmd)
public void checkLink(String lib)
public void checkRead(FileDescriptor fd)
...
public void checkSecurityAccess(String action)

Tagad checkPermission metode.

Javas platformas paplašināšana

Kādas lietas var izmantot, neuzrādot CLASSPATH. Kāda ir šo JAR failu aplūkošanas precedences secība.

JRE standarts

T.s. bootstrap classes ir Javas standartbibliotēka rt.jar un internacionalizācijas bibliotēka i18n.jar.

Instalētie paplašinājumi

Pievienojot jaunus JAR failus direktorijā $JRE$/lib/ext, tie kļūst par sistēmas pieinstalētu sastāvdaļu jeb paplašinājumu.

CLASSPATH

Viss, kas ir minēts java.class.path (noklusētā vērtība ".". Ja JAR failam ir manifests ar Class-Path atribūtu, tad arī tur norādītie JAR faili tiks pārmeklēti.

Noklusētā drošības politika

grant codeBase "file:${java.home}/lib/ext/" {
    permission java.security.AllPermission;
};

Tātad instalētajiem paplašinājumiem dod visas iespējamās atļaujas. Šīs atļaujas var izmainīt. Instalētos paplašinājumus var arī parakstīt ar sertifikātiem.


Lapa mainīta 2004-12-02 22:00:20