nosql:security_oracle_nosql_db_v3
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |||
nosql:security_oracle_nosql_db_v3 [2015/03/04 11:26] – [JMX Console verbinden] gpipperr | nosql:security_oracle_nosql_db_v3 [2015/03/04 14:49] (aktuell) – gpipperr | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | =====Sicherheitsfeature in der Oracle NoSQL V3 - Protokoll Verschlüsselung und User Login===== | ||
+ | |||
+ | Ab der Version 3 der Oracle NoSQL Datenbank sind erste Sicherheitsfeatures integriert. | ||
+ | |||
+ | Die Kommunikation zwischen dem Client und der Datenbank lässt sich mit SSL verschlüsseln, | ||
+ | |||
+ | Allerdings ist ein echtes Schema Konzept, wie in der Oracle RDBMS noch nicht umgesetzt. | ||
+ | |||
+ | === Vorbereitung ==== | ||
+ | |||
+ | Für das Einrichten des Stores muss das Java Werkzeug " | ||
+ | |||
+ | Auf allen Knoten bei Bedarf entsprechend verlinken! | ||
+ | <code bash> | ||
+ | #als root | ||
+ | ln -s / | ||
+ | </ | ||
+ | ==== Netzwerk Verschlüsselung ==== | ||
+ | |||
+ | SSL Verschlüsselung über das Netzwerk kann aktiviert werden. | ||
+ | |||
+ | |||
+ | ==== User Login ==== | ||
+ | |||
+ | In der EE Edition kann eine Oracle Wallet für das Passwort verwendet werden. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Nachträglich eine Security Konfiguration hinzufügen in einer CE Edition==== | ||
+ | |||
+ | Ablauf: | ||
+ | |||
+ | * Store stoppen | ||
+ | * Basis Security Configuration anlegen <code bash> | ||
+ | java -Xmx256m -Xms256m -jar $KVHOME/ | ||
+ | |||
+ | security-> | ||
+ | Enter a password for the Java KeyStore: | ||
+ | Re-enter the KeyStore password for verification: | ||
+ | Created files | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | </ | ||
+ | * Verzeichnis security auf alle KVRROOT' | ||
+ | cd / | ||
+ | |||
+ | cp -r security / | ||
+ | cp -r security / | ||
+ | |||
+ | </ | ||
+ | * Security Information in jeder config.xml auf allen Knoten hinzufügen< | ||
+ | security-> | ||
+ | Configuration updated. | ||
+ | security-> | ||
+ | Configuration updated. | ||
+ | security-> | ||
+ | Configuration updated. | ||
+ | </ | ||
+ | * Store wieder starten | ||
+ | * Am Store as Admin im Security Mode anmelden <code bash> | ||
+ | java -Xmx256m -Xms256m -jar $KVHOME/ | ||
+ | |||
+ | Logged in admin as anonymous | ||
+ | |||
+ | kv-> | ||
+ | </ | ||
+ | * Admin User anlegen <code bash> | ||
+ | |||
+ | |||
+ | |||
+ | kv-> plan create-user -name root -admin -wait | ||
+ | Enter the new password: | ||
+ | Re-enter the new password: | ||
+ | Executed plan 15, waiting for completion... | ||
+ | Plan 15 ended successfully | ||
+ | |||
+ | show user -name root | ||
+ | user: id=u1 name=root enabled=true type=LOCAL retain-passwd=inactive granted-roles=[public, | ||
+ | |||
+ | |||
+ | </ | ||
+ | * testen mit <code bash> | ||
+ | java -Xmx256m -Xms256m -jar $KVHOME/ | ||
+ | </ | ||
+ | * Pwd File für diesen User anlegen< | ||
+ | java -Xmx256m -Xms256m -jar $KVHOME/ | ||
+ | java -Xmx256m -Xms256m -jar $KVHOME/ | ||
+ | </ | ||
+ | * Security Config anlegen <code bash> | ||
+ | cd $KVROOT/ | ||
+ | # use this as template | ||
+ | cp client.security root_user.security | ||
+ | #edit the entries | ||
+ | vi root_user.security | ||
+ | |||
+ | oracle.kv.ssl.trustStore=client.trust | ||
+ | oracle.kv.transport=ssl | ||
+ | oracle.kv.ssl.protocols=TLSv1.2, | ||
+ | oracle.kv.ssl.hostnameVerifier=dnmatch(CN\=NoSQL) | ||
+ | oracle.kv.auth.pwdfile.file=root.pwd | ||
+ | oracle.kv.auth.username=root | ||
+ | |||
+ | </ | ||
+ | * testen <code bash> | ||
+ | java -Xmx256m -Xms256m -jar $KVHOME/ | ||
+ | </ | ||
+ | * Datei root.pwd und root_user.security auf alle Knoten verteilen< | ||
+ | cd / | ||
+ | |||
+ | cp root.pwd root_user.security / | ||
+ | cp root.pwd root_user.security / | ||
+ | </ | ||
+ | |||
+ | === Nach dem Einrichten des Root Users keine Daten mehr sichtbar!=== | ||
+ | |||
+ | Per Default erhält der User die Rollen : | ||
+ | <code bash> | ||
+ | kv-> show user -name root | ||
+ | user: id=u1 name=root enabled=true type=LOCAL retain-passwd=inactive granted-roles=[public, | ||
+ | </ | ||
+ | |||
+ | Damit kann der User " | ||
+ | |||
+ | Role je nach Bedarf hinzufügen ( http:// | ||
+ | <code bash> | ||
+ | plan grant -role readwrite -user root -wait | ||
+ | |||
+ | </ | ||
+ | |||
+ | Nun kann der User root wieder alle Einträge im Store sehen! | ||
+ | |||
+ | ==== Auditieren ==== | ||
+ | |||
+ | In den Logfiles unter $KVSTORE/ | ||
+ | <code bash> | ||
+ | |||
+ | cd $KVSTORE/ | ||
+ | |||
+ | grep KVAuditInfo | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== JMX Console verbinden ==== | ||
+ | |||
+ | Der Truststore muss dazu angeben werden: | ||
+ | |||
+ | <code cmd> | ||
+ | |||
+ | C:\Program Files (x86)\Java\jdk1.7.0_45\bin\jconsole -J-Djavax.net.ssl.trustStore=" | ||
+ | |||
+ | </ | ||
+ | |||
+ | Logging Properies für die Fehlersuche " | ||
+ | |||
+ | |||
+ | Wird der Pfad zum Zertifikat nicht hinterleg, erhält man den folgenden aussagekräftigen Fehler: | ||
+ | <code java> | ||
+ | | ||
+ | java.io.IOException: | ||
+ | at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java: | ||
+ | at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java: | ||
+ | </ | ||
+ | ==== Mit dem Store in Java verbinden ==== | ||
+ | |||
+ | Vorbereitung: | ||
+ | |||
+ | Normale Anmeldung an den Store mit Username/ | ||
+ | |||
+ | <code java> | ||
+ | |||
+ | //Call back Handler für die erneute Authentifizierung | ||
+ | public static | ||
+ | |||
+ | ...... | ||
+ | |||
+ | // get the host to connect as first parameter | ||
+ | String host = " | ||
+ | |||
+ | // get the store Name | ||
+ | String store = " | ||
+ | | ||
+ | // get the root user name | ||
+ | String username = " | ||
+ | |||
+ | // get the user password | ||
+ | String userpwd = " | ||
+ | |||
+ | // get the path to the trust file | ||
+ | String trustFile = " | ||
+ | |||
+ | |||
+ | ...... | ||
+ | |||
+ | |||
+ | try { | ||
+ | |||
+ | KVStoreConfig kvconfig = new KVStoreConfig(store, | ||
+ | |||
+ | /* Set the required security properties */ | ||
+ | Properties secProps = new Properties(); | ||
+ | secProps.setProperty(KVSecurityConstants.TRANSPORT_PROPERTY, | ||
+ | secProps.setProperty(KVSecurityConstants.SSL_TRUSTSTORE_FILE_PROPERTY, | ||
+ | |||
+ | kvconfig.setSecurityProperties(secProps); | ||
+ | |||
+ | |||
+ | // Store Zugriff | ||
+ | kvstore = | ||
+ | | ||
+ | } catch (AuthenticationFailureException afe) { | ||
+ | System.out.println(" | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Über einen User Trust file mit **" | ||
+ | <code java> | ||
+ | ...... | ||
+ | |||
+ | // get the host and port | ||
+ | String host = " | ||
+ | int port=5000; | ||
+ | |||
+ | // get the store Name | ||
+ | String store = " | ||
+ | | ||
+ | // get the path to the trust file | ||
+ | String trustFile = " | ||
+ | |||
+ | ...... | ||
+ | |||
+ | |||
+ | .... | ||
+ | public CountRecords(String host, int port, String store, String trustFile) { | ||
+ | |||
+ | # | ||
+ | |||
+ | System.setProperty(" | ||
+ | |||
+ | try { | ||
+ | KVStoreConfig kvconfig = new KVStoreConfig(store, | ||
+ | |||
+ | // Store Zugriff | ||
+ | kvstore = KVStoreFactory.getStore(kvconfig); | ||
+ | } catch (AuthenticationFailureException afe) { | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | ... | ||
+ | |||
+ | </ | ||
+ | ==== Security wieder auf NONE setzen ==== | ||
+ | |||
+ | Um die Sicherheitseinstellungen wieder auszuschalten, | ||
+ | |||
+ | Store zuvor stoppen! | ||
+ | |||
+ | |||
+ | Store Security wieder entfernen: | ||
+ | <code bash> | ||
+ | java -Xmx256m -Xms256m -jar $KVHOME/ | ||
+ | |||
+ | security-> | ||
+ | security-> | ||
+ | security-> | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | Und wieder starten | ||
+ | |||
+ | |||
+ | ===Zum erneuten Einschalten=== | ||
+ | |||
+ | Store stoppen. | ||
+ | |||
+ | Wieder erneut einbinden: | ||
+ | <code bash> | ||
+ | java -Xmx256m -Xms256m -jar $KVHOME/ | ||
+ | |||
+ | config add-security -root / | ||
+ | config add-security -root / | ||
+ | config add-security -root / | ||
+ | |||
+ | </ | ||
+ | |||
+ | Store erneut wieder starten. | ||
+ | |||
+ | ===== Quellen ===== | ||
+ | |||
+ | |||
+ | * http:// | ||
nosql/security_oracle_nosql_db_v3.txt · Zuletzt geändert: 2015/03/04 14:49 von gpipperr