2016-07-19 7 views
1

Gibt es eine Möglichkeit, die Verschlüsselungsfunktionen von Oracle Advanced Sicherheit in Spring JDBC dataSource-Konfiguration zu bringen?
Oracle Advanced Secuity Verschlüsselung mit Spring JDBC XML-Konfiguration

Der DBA sagte mir, die folgenden Argumente in die Verbindung auf der Clientseite übergeben.

sqlnet.encryption_client = requested 
sqlnet.encryption_types_client = (RC4_128) 
sqlnet.crypto_checksum_client = requested 
sqlnet.crypto_checksum_types_client = (MD5) 

Nach dem Oracle Documentation, kann die Verschlüsselung für Thin-Treiber eingestellt werden, indem Sie die Argumente der OracleConnection Zugabe über gute alte java.util.Properties.

Allerdings kann ich keinen Weg finden, dies mit meiner Spring dataSource.xml Konfiguration zu tun.
Die Datasource Bohne funktioniert:

<bean id="dataSource" 
    class="oracle.jdbc.pool.OracleDataSource" destroy-method="close"> 
    <property name="URL" value="${datasource.url}" /> 
    <property name="user" value="${datasource.user}" /> 
    <property name="password" value="${datasource.password}" /> 
    <property name="connectionCachingEnabled" value="true"/> 
</bean> 

Aber leider sind die erforderlichen Eigenschaften sind die folgende Ausnahme

Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'encryption_client' of bean class [oracle.jdbc.pool.OracleDataSource]


<property name="encryption_client" value="${datasource.encryption_client}"/> 
    <property name="encryption_types_client" value="${datasource.encryption_types_client}"/> 
    <property name="crypto_checksum_client" value="${datasource.crypto_checksum_client}"/> 
    <property name="crypto_checksum_types_client" value="${datasource.crypto_checksum_types_client}"/> 
  1. In der Spring documentation nicht verstanden und bringen Ich se e dass nur einige wenige Attribute erwähnt werden.
  2. wieder Blick auf das Beispiel in der Oracle Dokumentation werden die Eigenschaften wie diese hat OracleDataSource ods = new OracleDataSource();ods.setProperties(prop)
    ... aber die API gesetzt kein setProperties() Methode.
    (https: // docs.oracle.com/cd/E18283_01/appdev.112/e13995/oracle/jdbc/pool/OracleDataSource.html)

Ich bin ganz verwirrt :(
Jede Hilfe oder Hinweis wird sehr geschätzt

TL;. TR
gibt es eine Lösung für die über~~POS=TRUNC dieser Oracle Verschlüsselungseigenschaften zum Frühling

?

Antwort

0

Bitte beziehen Sie sich auf OracleConnection, die den korrekten Namen für sicherheitsrelevante Verbindungseigenschaften haben. Beispiel:

Properties connProps = new Properties(); 

// For Data Integrity Check connProps.setProperty(OracleConnection.CONNECTION_PROPERTY_THIN_NET_CHECKSUM_TYPES, "(MD5, SHA1, SHA256, SHA384 or SHA512)"); connProps.setProperty(OracleConnection.CONNECTION_PROPERTY_THIN_NET_CHECKSUM_LEVEL, "REQUIRED"); 

// For Data Encryption connProps.setProperty(OracleConnection.CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_LEVEL, REQUIRED"); connProps.setProperty(OracleConnection.CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_TYPES,"(DES40C)"); 

// OracleDataSource – Oracle JDBC Connection 
OracleDataSource ods = new OracleDataSource(); 
ods.setConnectionProperties(connProps); 

Auch auf Abschnitt Sicherheit Connection Management Strategies White Paper finden und Security auch White Paper.

+0

Danke @Nirmala. Ihr Beispiel hat mich in die richtige Richtung gedrängt. Die XML-Bean scheint in dieser Hinsicht zu restriktiv zu sein. – jonny