I have attended Oracle one-day conference titled ‘Database Security and Compliance’ in London last week, and here is the brief report.
There were 3 very useful talks (and a very good lunch after:) – as expected of Oracle I guess.
The conference was aimed at large organizations, with considerable amounts of sensitive data stored in Oracle databases and the way in which they store and transport the data.
i) Oracle provides pretty useful tool for encrypting all data in a database transparently, so applications and users still see data as normal, but the data is encrypted internally. It is the question of just turning it on and selecting the encryption algorithm for it to be used (from Enterprise Manager Web Interface) and the actual data stored in data files on hard disk drive will be encrypted on the actual medium.
With encryption turned on, if anyone gets hands on the hard drive from database server, or if someone nicks the entire server from the data centre (not unheard-of
) for example, actual data will be scribbled and so of no use to the intruder.
ii) Another utility shown provides a way to encrypt the database backups and exports as well, which can then be transported without fear of losing it (even if someone leave the DVD on the train or it gets lost in the post), the data will actually be encrypted, therefore unreadable, before it reaches the destination. The Oracle 10g+ Data Pump utility for data import/export support this out of the box.
iii) Finally, a couple of very useful tools for data masking. Imagine a complex application that deals with large amounts of data. In order for it to be developed as scalable, and to perform good, without bugs, the development and testing teams would require the real world data for the development process. However, since the data contains sensitive information, it cannot be given to them in its raw form. What development teams then resort to is the local database, with imaginary data. However, development or testing databases populated in this way usually don’t have the required amount of data (which may be in millions on the production system). What would be better is to use the actual production data, but with the sensitive columns masked, so they are unreadable, and therefore unavailable for any misuse while held at development and testing machines.
The demo shown used just a couple of mouse clicks to mask all sensitive data columns (names, email addresses, NI numbers…) – so ‘John Smith’ becomes ‘jhkjh laskjlkjlk’ for example. There are advance features as well, so you can mask sensitive columns but keep them human-readable, by using a set of rules or even an another set of data – so you can mask ‘John Smith’ to ‘Peter Taylor’ in the masked database. The masking process can be deterministic or not, depending on the security constraints. The deterministic approach is a bit less secure, but the data will always be masked in the same way, no matter how many times the masking process is run (therefore ‘John Smith’ from production database will always be masked as ‘Peter Taylor’ – so the testing teams can pick the ‘peter Taylor’ record every time, and each time be sure they are using the same database row as before). The non-deterministic approach will mask the data differently every time the masking is applied.
Each of these looks very useful and easy to use (on the demo at least:)). The demos shown used an Oracle Enterprise Manager web application to do the tasks, from the browser, but it is possible to run each of the from the command line or sqlplus as well.
Further resources:
http://www.oracle.com/technology/deploy/security/database-security/index.html
http://www.oracle.com/technology/products/oem/pdf/ds_datamasking.pdf
http://www.oracle.com/technology/deploy/security/database-security/transparent-data-encryption/index.html