JavaDB / Derby Sicherheit

Verschlüsselte Datenbank

Derby unterstützt, die Daten in der Datenbank, verschlüsselt abzulegen. Dazu muss die Datenbank entsprechend erstellt werden. Mit folgendem Befehl wird eine neue Datenbank verschlüsselt abgelegt:

java -Dij.protocol=jdbc:derby: org.apache.derby.tools.ij
ij>connect
'jdbc:derby:encryptedDB3;create=true;dataEncryption=true;
bootPassword=sicherIstSicher';

Standardmässig wird DES mit einer Schlüssellänge von 56 Bits verwendet.

Der Algorithmus kann mit Attribute encryptionAlgorithm angegeben werden. Nachfolgendes Beispiel verwendet den Algorithmus "Trippel-DES" mit der Feedback-Methode "CBC" und dem Padding-Typ "NoPadding".

encryptionAlgorithm=DESede/CBC/NoPadding

Benutzer Authentifizierung

Derby unterstützt Benutzerautorisierung. Benutzerautorisierung bedeutet, dass Derby Benutzer anhand eines Benutzernamens und eines Passwortes authentifiziert, bevor es Zugriffe auf Daten zulässt. Standardmässig ist diese Funktion ausgeschaltet, da man bei einem integrierte Datenbank in der Regel keine Autorisierung braucht. Wenn man die Autorisierung einsetzen will, muss man sie zuerst aktivieren. Die Aktivierung erfolgt mit dem setzen der Eigenschaft (Property) "derby.connection.requireAuthentication" auf den Wert true. Diese Eigenschaft kann systemweit oder datenbankweit gesetzt werden. Das setzten kann mittels einer Property-Datei oder programmatisch erfolgen. Die Benutzer können dabei intern mit einer eingebauten Funktion, extern mittels LDAP oder mit einer benutzerdefinierten Klasse authentifiziert werden.
Die folgende Java-Funktion aktiviert die Benutzerautorisierung und erstellt zwei Benutzerkonten mit unterschiedlichen Rechten:

   1:
   2:
   3:
   4:
   5:
   6:
   7:
   8:
   9:
  10:
  11:
  12:
  13:
  14:
  15:
  16:
  17:
  18:
  19:
  20:
  21:
  22:
  23:
  24:
  25:
  26:
  27:
  28:
  29:
  30:
  31:
  32:
  33:
  34:
  35:
  36:
public static void benutzerAutorisierungEinschalten(Connection conn) 
    throws SQLException { 
        System.out.println("Aktiviere Benutzerautorisierung."); 
        Statement s = conn.createStatement(); 

        // Aktiviere Benutzerautorisierung
        s.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(" 
                + "derby.connection.requireAuthentication, true)");
        // Verwende interne Autorisierung 
        s.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(" 
                + "derby.authentication.provider, BUILTIN)"); 

        // Kreiere zwei Benutzer
        s.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(" 
                + "derby.user.admin, derby2005)"); 
        s.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(" 
                + "derby.user.gast, gast2005)"); 

        // Setzte Standardzugriffmodus auf Keinen Zugriff
         s.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(" 
                 + "derby.database.defaultConnectionMode, noAccess)"); 

        // Setzze Zugriffberechtigungen 
        s.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(" 
                + "derby.database.fullAccessUsers, admin)"); 

        // Defining read-only users 
        s.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(" 
                + "derby.database.readOnlyAccessUsers, gast)"); 

        // Priorisiere Datenbankeigenschaften. D. h. datenbankweite  
        // Eigenschaften haben Priorität gegenüber systemweite Eigenschaften 
        s.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(" 
                + "derby.database.propertiesOnly, false)"); 
        s.close(); 
    }     
Scherer Informatik Scherer Informatik GmbH Tel 032 396 39 05
Juchen 24A Fax 032 396 39 06
CH-2577 Siselen info(at)scherer-informatik.ch
Home Firma Dienstleistungen Preise Kontakt Infos Partnerbereich
JDBC und JavaDB
log4j Derby / JavaDB · Installation · DB Erstellen · Referenz · Sicherheit · JDBC-Beispiele Tomcat Eclipse