Oracle stworzył Database Vault’a, żeby chronić wrażliwe dane przed administratorem DB. Po instalacji produktu i stworzeniu tzw. REALM’ów, SYSDBA traci uprawnienia do określonych czynności (m.in. zakładanie kont i wiele poleceń ALTER) ale głównie traci możliwość wybierania danych z tabel chronionych takim REALM’em. Sam Vault jednak nie wystarczy, bo admin mający dostęp do plików danych może pojechać sobie po nich poleceniem strings i przegrepować po odpowiednich wyrażeniach regularnych, szukając np. numerów kart kredytowych – na to jednak Oracle też ma odpowiedź – transparentne szyfrowanie przestrzeni tabel i wszystko gra!
Tylko, że jest jeden problem – jeśli w 11gR2 używamy automatycznego zarządzania pamięcią (MEMORY_TARGET), granulki pamięci zaczynają być reprezentowane poprzez pliki na urządzeniu tmpfs – /dev/shm. Na podstawie polecenia ipcs i lsof, można łatwo skorelować pamięć współdzieloną zaalokowaną przez bazę danych z plikami na urządzeniu /dev/shm… Standardowo użytkownik, będący właścicielem binariów bazy ma swobodny dostęp do tych pliczków a bloki danych po odczycie rezydują w pamięci w postaci niezaszyfrowanej – więc sytuacja się powtarza jak przy plikach danych – strings i egrep 🙂 Czy to bug? Czy może feature?
Pozdrawiam i polecam przetestować 🙂
P.S.
Dokładniej temat opisałem tutaj: http://ora-600.pl/art/oracle_database_vault_tde.pdf