Um ihre Daten und Anwendungen vor unbeabsichtigter oder beabsichtigter Manipulation und Verluß zu schützen ist ein modernes Sicherheitskonzept notwendig. Wir beraten sie und implementieren die optimale Lösung für ihre Anforderungen.
Zum Schutz ihrer Daten sind in Abhängigkeit der von ihnen definierten Anforderungen bieten sich unterschiedliche Lösungsansätze. In der Kombination der Maßnamen ergibt sich ein effizienter Schutz ihrer Daten bei definierten SLA's.
Um die Zugrifssmöglichkeit von externen Systemen auf die Oracle DB und den Oracle Listener zu limitieren bietet sich der Einsatz von IP-Whitelisten an. Dieser werden in der sqlnet.ora konfiguriert_
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME) SSL_CLIENT_AUTHENTICATION =FALSE tcp.validnode_checking = yes tcp.invited_nodes = (127.0.0.1, 192.168.0.15, 192.168.0.15) WALLET_LOCATION = (SOURCE= (METHOD=File) (METHOD_DATA= (DIRECTORY=/opt/app/oracle/WALLETS/oracle) ) )
In diesem Fall können nur Verbindungen von Servern mit den genannten IP-Adressen zum Listener aufgebaut werden. Zur Fehlervermeidung sollten hier nur IP Adressen angegeben werden und nicht die Namensauflösung genutzt werden. In der Listener Konfiguration darf nur TCP aktiviert sein.
Ein typische Anwendungsfall ist der Zugriff vom Application-Server auf die Datenbank. Für optimale Nutzung der RAC-Features sowie zur Einhaltung der Sicherheitsrichtlinien muß die jdbc-Datasource korrekt konfiguriert sein. Der Zugriff erfolgt über ein Layer-Konzept. Hierbei wird das Datenschema gelocked, die notwendigen Rechte für die Objekte werden an den Applikationsuser über Views und Synonyme gegeben.
Somit hat der Applikationsuser keinen direkten Zugriff auf die Objekte und kann diese nicht verändern. Über das Viewkonzept wir ein zusätzlicher Apstraktionslayer eingefügt, so das Änderungen in Schema über die Views gekapselt sind. Damit können Datenbank- und Applikationsänderungen unabhängig voneinander ausgeführt werden.
Die jdbc-Datasource sollte über Service-Namen auf die Oracle-Instanz zugreifen, eine re-connect fähige Konfiguration kann wie folgt aussehen:
<?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>jdbc/MyDS_Name</jndi-name> <connection-url>jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = orarac1-vip)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = orarac2-vip)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = MyDS_Name.service) (SERVER = DEDICATED))) </connection-url> <driver-class>oracle.jdbc.driver.OracleDriver</driver-class> <user-name>application_user<user-name> <password>topsecret<password> <set-tx-query-timeout/> <query-timeout>30</query-timeout> <attribute name='ManagedConnectionFactoryProperties'> <properties> <config-property name='QueryTimeout' type='int'>30</config-property> <config-property name='TransactionQueryTimeout' type='boolean'>true</config-property> </properties> </attribute> <blocking-timeout-millis>5000</blocking-timeout-millis> <min-pool-size>0</min-pool-size> <max-pool-size>50</max-pool-size> <check-valid-connection-sql>select count(1) from dual</check-valid-connection-sql> <idle-timeout-minutes>1</idle-timeout-minutes> </local-tx-datasource> </datasources>