8. Februar 2016

Security Smoke Test für Oracle DBs in der Cloud

Oracle Security in der Praxis
Auf dem Oracle Security Day im letzten Jahr habe ich den Security Smoke Test vorgestellt. Die Idee des Security Smoke Testscist das Wissen aus meinem Buch anzuwenden.

Smoke Tests sind sehr häufig im eCommerce Bereich zu finden, da viele Updates am System wie Katalog-Wechsel stattfinden oder neue Releases/Funktionen/Design im System eingespielt werden. D.h. ein Smoke Test prüft wesentliche Funktionalität auf Korrektheit.
Mein Security Smoke Test testet nun die eingestellte Sicherheit einer Oracle Datenbank und zwar egal welche Version (getestet mit 11g und 12c).

Wie gesagt, habe ich den Security Smoke Test im letzten Jahr (2015) vorgestellt. Nun stelle ich diesen Test für die  Oracle Cloud zur Verfügun. Hierzu musste ich einige Änderungen machen. In der Cloud ist der Test ohne Portscanning, SID Guessing und Bruteforce Attacke verfügbar. Das hat den Grund, da solche Tools nicht in fremden Umgebungen ausgeführt werden dürfen (siehe Hacker Paragraf StGB §202b und 202c sowie Bundesverfassungsgerichtshof Beschluß vom 18.5.2009 und natürlich die Vertragsgrundlage mit dem Cloud Provider).

Dafür stelle ich den Code in der Cloud für alle meine Kunden und Interessierten zur Verfügung. Das Deployment in die Cloud (oder auch on-premise) geht sehr einfach mit GIT clone bzw. per Knopfdruck (Hudson-Jobs) wird sogar eine komplette Umgebung (DB, Apex mit ODRS und Apex deployment) erstellt. Siehe hierzu Deployment in Cloud Umgebungen.
Diese hier gezeigte Version des Security Smoke Tests basiert auf Apex 5.0 mit responsive Layout.


Wie funktioniert nun der Security Smoke Test?

Im Grunde genommen, ist das Prinzip sehr einfach:
  • In der Oberfläche des Security Smoke Test wird das zu überprüfende System eingestellt.
    Mit Hostname, Port Service Name und die Credentials für einen DBA. Passwörter werden doppelt verschlüsselt, (siehe weiter unten)
System in der Oberfläche anlegen
  • Auf Basis der Informationen zum System können dynamisch Database Links für den Scan erzeugt werden. Diese werden nach dem Scan automatisch aus dem System entfernt. Die Erstellung ist im Scan eingebettet:
 EXECUTE IMMEDIATE 'create database link dblink2remotedb connect to '||p_dba||' identified by "'||p_pw||'" using ' ||''''||l_ezconnect||''''; 
  • Mit Hilfe des DB Links werden alle notwendigen Informationen in das Repository des Security Smoke Tests aus der entfernten DB gelesen. Informationen zu den DB Parameters, PW Management, Role Management, Privilegien, User Management und Audit Einstellungen.
  • Auf Basis der geladenen Daten wird über eine intelligente View Schicht ausgewertet. Jede Table mit Informationen aus der überprüften DB enthält zwei Views. Beispiel ist die Table DBPARAMETERS
  1. View DBPARAMETER_VW: Hier wird bewertet und farblich markiert
    CREATE OR REPLACE FORCE VIEW "DBPARAMETER_VW" ("TEST_ID", "PARAMETER_NAME", "PARAMETER_VALUE", "ISDEFAULT", "ISDEPRECATED", "ISMODIFIED") AS
      select test_id,
           parameter_name,
           CASE
              WHEN upper(PARAMETER_NAME) = 'AUDIT_SYS_OPERATIONS'
                 AND upper(PARAMETER_VALUE) = 'FALSE' THEN
                 '<font color="red">'||parameter_value||'</font>'
              ELSE parameter_value
           END as parameter_value,
           isdefault,
           isdeprecated,
           ismodified
      from dbparameters;
  2. View DBPARAMETER_EVAL_VW: hier werden die farblich markierten Parameter mit Punkte versehen: Orange = 5 Punkte, Rot = 20 Punkte
    CREATE OR REPLACE FORCE VIEW "DBPARAMETER_EVAL_VW" ("TEST_ID", "PARAMETER_SCORE") AS
      select test_id,
           case
           when instr(parameter_value, 'red')>0 THEN 20
           when instr(parameter_value, 'orange')>0 THEN 5
           else 0
           end as parameter_score
      from dbparameter_vw;
  • Pro Test werden dann alle Punkte zusammengezählt und das ergibt den Score für einen Test.
Also zusammengefasst, das Wissen steckt in der <TABLE>_VW View Schicht. Hier muss man ansetzen, wenn man die Auswertung erweitern will. Das Scoring kann natürlich auch verändert werden, hierfür müssen die Views <TABLE>_EVAL_VW angepaßt werden.
Ich möchte nicht behaupten, dass die Überprüfung vollständig ist. D.h. es können zusätzliche Auswertungen eingebaut werden oder besser gesagt: für eine vollständige Prüfung sollten zusätzliche Überprüfungen eingebaut werden.

Installation der Apex Anwendung Security Smoke Test

Die Installation ist sehr einfach:
Aufruf des Scripts 00_startInstall_Apex.sh auf dem Server mit dem Benutzer SYS oder einem DBA und die Apex Anwendung wird installiert.
Voraussetzung ist eine DB 11g oder 12c mit einer laufenden Apex 5.0 Umgebung.

Installation in der Cloud

Soll der Security Smoke Test in der Cloud zur Verfügung gestellt werden, dann hat man folgende Möglichkeiten:
  • git clone auf der DB VM in der Cloud (geht auch on-premise)
  • Hudson Job Ausführung zur Erstellung einer kompletten Umgebung inklusive VM, DB, Apex, ORDS und natürlich die Apex Anwendung.
Siehe hierzu Deployment in Cloud Umgebungen.
Der Vorteil in der Cloud ist die schnelle zur Verfügungstellung einer kompletten Umgebung. D.h. erstellt man einen DB as a Service in 11g oder 12c, ist bereits alles installiert, was der Security Smoke Test benötigt. Da die Services in der Cloud auch über eine REST API verfügen, kann der komplette Test inklusive der Umgebung (DB, ODRS, Apex) scriptgesteuert erstellt werden, sozusagen 1-Click oder wie Larry sagt: "Push the button".

Besonderheiten in der Cloud Umgebung

Für die Cloud-Umgebung gibt es einige Besonderheiten:
  1. Der Security Smoke Test bekommt einen eigenen Tablespace. Die Anlage des TS in der Cloud erzeugt automatisch einen verschlüsselten TS mit TDE egal ob eine SE oder EE DB.
  2. Alle Passwörter des DBAs (gespeichert unter Systems) wird zusätzlich verschlüsselt.
  3. Apex und Oracle Data Rest Service sind bereits vorinstalliert.
  4. Wollen Sie die DBs in der Cloud überprüfen, dann müssen Sie die zu überprüfende VM in die Security List der Security Smoke Test VM hinzufügen. Nach dem Test können Sie die VM wieder entfernen. (macht man in der Compute Service Console-> View VM)
  5. Apex wird derzeit in der Version 5.0 in der Cloud zur Verfügung gestellt, d.h. der Patch 5.0.3 sollte manuell eingespielt werden. 

Bedienung des Security Smoke Test

Login
Bei der Installation wird der User Admin angelegt. Das Standard Passwort finden Sie in der Readme.txt und muss beim ersten Login angepasst werden.
Homepage
Auf der Home-Page befinden sich direkte Links zu den Schritten, die durchführt werden müssen, sowie eine Kalender Übersicht, welche Tests bereits durchgeführt wurden.
Als erstes System erstellen
Zuerst sollte man ein System anlegen, welches später überprüft werden soll.
Security Smoke Test erstellen
Auf Basis des eingestellten Systems erstellt man einen Security Smoke Test.
Security Smoke Test ausführen
Nach der Erstellung klickt man auf den Link "Start Scan Process".
Scan wird durchgeführt
Der Scan wird durchgeführt und gleichzeitig ausgewertet. Dieser Vorgang dauert weniger als eine Minute. Also ein idealer Smoke Test. Ein Smoke Test muss schnell gehen und ein gutes Gefühl geben, damit der Release Manager sein "GO" zur Live-Schaltung gibt.
Auswertung direkt nach dem Scan
Nach dem Scan wird sofort eine Zusammenfassung des Tests aufgezeigt. Hierbei werden 14 Zeilen ausgewertet und mit einem Score versehen. Die Summe ist Gesamtscore des Test.
Detailansicht des Test Ergebnisses
Im Menü Smoke Tests Results kann man sich einen detaillierten Überblick der Ergebnisse verschaffen.
Im System Trends erkennen
Natürlich werden Sie viele Tests pro System haben, da Patches eingespielt werden und Veränderungen am System vorgenommen werden. Nach jeder Veränderung feuern Sie einen Security Smoke Test ab. Den Trend erkennen Sie unter Ihrem eingestellten System.

Zusammenfassung

Dieses Beispiel zeigt, dass Security nicht kompliziert sein muss. Wissen kann digitalisiert werden. Die hier gezeigte Lösung sollte auf die Bedürfnisse seiner eigenen Security Policy angepasst werden.

Falls Sie das Wissen noch nicht aufgebaut haben, dann wird es Zeit. Ein Anfang könnte mein Buch sein.

Keep on going to protect our data
Carsten

PS: Wer der den Code haben möchte, bitte direkte Email an mich.




Keine Kommentare:

Kommentar posten