Audit- und Paßwort-Funktionen im GTDS

Werbung
Audit- und Paßwort-Funktionen im GTDS
Audit-Funktionen im GTDS
Im Prinzip geht es dabei um Protokollierung verschiedener, insbesondere für die Sicherheit
relevanter Aktionen. Intern verfügt GTDS bereits über solche Protokolle, die über
Benutzer, Rechte … verfügbar sind :
Das Masken – Log protokolliert im klassischen GTDS Maskenzugriffe im Kontext der Patienten, so
dass Zugriffe auf einzelne Patienten nachvollziehbar sind. Die Details und die Konfiguration sind
in der Hilfe beschrieben (http://www.med.uni-giessen.de/akkk/gtds/grafisch/doku/gtds_log.htm).
Diese Funktion ist seit dem Jahr 2001 verfügbar und seit 2011 auch für WebGTDS wirksam sofern
der GTDS – Parameter GLOBAL.GTDSLOG den Wert Ja hat.
Die Knopf „Web-GTDS“ ermöglicht die Sicht auf Anmeldeinformation, Länge der Sitzungen und
den letzten Sitzungskontext im WebGTDS
In manchen Fällen ist es möglich, daß diese Protokolle nach einer gewissen Zeit gelöscht werden
müssen. Dazu stehen auf Anfrage spezielle SQL-Pakete zur automatisierten, fristgerechten
Löschung zur Verfügung.
Audit-Funktionen der Datenbank verwenden
Manche Aktionen werden von den GTDS – Protokollen bisher nicht erfaßt, z.B. Login und Logout
in Bezug auf die Datenbank. Hier ist es am einfachsten, die Audit-Funktionen von Oracle zu
verwenden. Dafür sind folgende Schritte erforderlich :
Datenbank für Audit-Funktionen konfigurieren
Im Auslieferungszustand ist diese Funktionalität normalerweise deaktiviert. Sie muß nur einmalig
eingeschaltet werden. Dazu ist ein Neustart der Datenbank erforderlich.Die Aktion zur Aktivierung
von Audit hängt von der Version ab (bei Detailfragen im konkreten Falle beraten wir gern) :
•
bei Oracle 9 oder früher muß in der Datei INITGTDS.ORA o.ä. im Verzeichnis
%ORACLE_HOME%/DBS bzw. %ORACLE_HOME%/Database die Zeile
audit_trail=DB
angefügt bzw. unkommentiert werden.
•
bei den meist jetzt mit GTDS verwendeten Versionen 10 oder 11 von Oracle ist ein SQLStatement auszuführen (geht evtl. auch als OPS$TUMSYS), wie es in der Datei
Audit_Trail.sql abgelegt ist :
alter System Set Audit_Trail = DB scope = SPFILE ;
In beiden Fällen ist die Änderung zunächst nicht wirksam. Erst wenn die Datenbank
heruntergefahren und neu gestartet wird, ist anschließend Audit eingeschaltet.
Zunächst sind danach jedoch keinerlei Audit-Funktionen aktiv. Lediglich ist die Datenbank bereit,
solche Funktionen tatsächlich auszuführen. Anderenfalls würden AUDIT … - Statements zwar ohne
Fehler angenommen, es geschieht jedoch nichts.
Den Status des Datenbank-Parameters Audit_Trail können Sie in SQLPLUS als
OPS$TUMSYS anzeigen mit
SHOW PARAMETERS
AUDIT
Einzelne Audit-Funktionen beauftragen
Nach dieser einmaligen Vorbereitung können einzelne Audit-Funktionen mit SQL aktiviert bzw.
deaktiviert werden. Die ganzen Details enthält die originale Dokumentation von Oracle, die u.a.
auch im Internet verfügbar ist ( Configuring and Administering Auditing
http://docs.oracle.com/cd/B19306_01/network.102/b14266/cfgaudit.htm ) . Für GTDS reicht als
erster Schritt aus, Audit für Login und Logoff zur Datenbank zu aktivieren. Um dies für einen
bestimmten Benutzer zu tun, genügt das SQL-Statement (wie in Audit.sql )
Audit CONNECT By
BenutzerName ;
Statt BenutzerName wird natürlich ein Benutzer aus GTDS eingesetzt.
Soll dies für alle GTDS – Benutzer geschehen kann ein Skript wie Start_Audit.sql
eingesetzt werden, welches als OPS$TUMSYS ausgeführt ein neues Skript namens
Audit_Benutzer.sql generiert, welches wiederum diese Funktion für alle gewünschten
Benutzer einschaltet.
Audit – Protokolle anschauen
Oracle speichert diese Protokolle in internen Tabellen, deren Inhalte über Views mit SQL abgerufen
werden können. Für GTDS steht ein fertiges SQLPLUS – Skript zur Verfügung mit dem Namen
Sel_Aud.sql . Es wird gestartet in der Form
SQL> @Sel_Aud
Benutzer
AnzahlTage
Sollen also alle Datenbank – Verbindungen des Benutzers PC03 in den letzten 30 Tagen aufgelistet
werden, ginge das so :
SQL> @Sel_Aud
PC03 30
Der Kern dieses Skriptes ist das folgende SQL :
select OS_USERNAME,
USERNAME,
TO_CHAR(TIMESTAMP,'DD.MM.YY HH24:MI:SS') Login_Timestamp,
TO_CHAR(LogOff_Time,'DD.MM.YY HH24:MI:SS') LogOff,
Action_Name,
TERMINAL||' '||USERHOST WO,
Client_ID
from DBA_AUDIT_TRAIL
where Username LIKE '&BENUTZER'
AND ( SysDate - Timestamp ) <= &TAGE
order by Timestamp ;
Datenschutz-konforme Anforderungen an Paßwörter u.a. im GTDS
Um dem Mißbrauch von Benutzernamen und Paßwörtern vorzubeugen, werden häufig eine Reihe
von Forderungen gestellt wie :
1. Begrenzte Lebensdauer von Paßwörtern, anschließend soll ein Wechsel innerhalb einer Frist
erzwungen werden
2. Paßwort muß beim ersten eigenständigen Login geändert werden
3. Mindestlänge , z.B. 8 Zeichen
4. frühere Paßwörter dürfen (evtl. für eine gewisse Zeit) nicht wieder verwendet werden
5. nicht triviale Paßwörter. Bestimmte einfache Varianten und bekannte Wörter sollen nicht
verwendet werden. Paßwörter sollen nicht nur Buchstaben, sondern auch Zahlen und
Satzzeichen enthalten.
6. Verbindung soll nach einer gewissen Zeit der Inaktivität getrennt werden
7. Maximale Verbindungszeit ohne Unterbrechung soll auf einen Arbeitstag begrenzt sein.
8. Login wird nach einer gewissen, geringen Anzahl von Fehlversuchen gesperrt.
Als kommerzielle Datenbank bietet Oracle in Gestalt der Benutzerprofile schon lange solche
Möglichkeiten. Da GTDS sein Login über Oracle durchführt, konnten sie auch schon immer mit
GTDS verwendet werden. Manche Funktionen wurden allerdings nicht über die Masken unterstützt,
so dass beispielsweise bei fehlgeschlagenen Logins generische Werkzeuge von ORACLE genutzt
werden mussten, um Probleme zu beheben.
Mit dem neuesten Versionsstand unterstützt GTDS geeignete Benutzerprofile direkt in der
Benutzerverwaltung. Informations- und Fehlermeldungen zum Paßwortablauf und -wechsel werden
explizit gehandhabt. Aus Gründen der Kompatibilität zur bisherigen Arbeitsweise (Schulung der
Anwender vor Aktivierung erforderlich) werden diese Funktionen jedoch nicht bei der Installation
des Updates automatisch aktiviert. Nach der Installation des aktuellen Patches ist GTDS stehen also
die neuen Paßwort-Funktionen zur Verfügung, müssen aber explizit aktiviert werden.
Als Beispiel wird in der Datei Beispiel_Profil.sql ein einfaches Profil namens
BSP_PROFIL zur Verfügung gestellt. In der Benutzerverwaltung im GTDS könnte dieses Profil
dann neuen Benutzern zugewiesen werden. Das nachfolgend dargestellte Profil muss den lokalen
Erfordernissen angepasst werden. Die im folgenden verwendete Bezeichnung BSP_PROFIL dient
lediglich der Illustration und sollte durch einen passenden Namen ersetzt werden.
Beispiel_Profil.sql
erzeugt das neue Profil BSP_PROFIL mit folgenden
Einstellungen :
CPU_PER_SESSION 360000
eine Stunde CPU (Einheit 1/100 Sec.)
IDLE_TIME 30
30 Minuten nichts tun. Gilt nicht für langlaufende
Abfragen und Berichte
CONNECT_TIME 800
800 Minuten Verbindungszeit. Am nächsten Tag auf
jeden Fall neues Login erforderlich
FAILED_LOGIN_ATTEMPTS 8
Fehlerhafte Login- Versuche. ACHTUNG : Das initiale
Login ins klassische GTDS wird u.U. doppelt gezählt.
PASSWORD_LIFE_TIME 50
Maximale Lebensdauer des Paßwortes in Tagen
PASSWORD_REUSE_TIME 100
Paßwort kann erst nach dieser Zahl Tagen wieder
verwendet werden, nur wenn seitdem mindestens
PASSWORD_REUSE_MAX Paßwortwechsel erfolgt sind.
PASSWORD_REUSE_MAX 8
Paßwort kann ggf. nach dieser Zahl Wechsel wieder
benutzt werden
PASSWORD_VERIFY_FUNCTION Pwck
-- s.u.
PASSWORD_LOCK_TIME UNLIMITED
Ein gesperrter Account (z.B. wegen zuvieler Login mit
falschem Paßwort) muß vom GTDS - Administrator
entsperrt werden.
PASSWORD_GRACE_TIME 30
Nach Ablauf des Paßwortes (PASSWORD_LIFE_TIME) ist
noch diese Anzahl von Tagen zum Ändern verfügbar.
Beim Login ins GTDS erfolgt ein entsprechender Hinweis.
Zur Überprüfung von Länge und Inhalt der Paßwörter dient die PL/SQL - Funktion PWCK , wie
im Profil unter PASSWORD_VERIFY_FUNCTION angegeben :
Passwort.sql
muß als SYS (!) ausgeführt werden. Erzeugt die
Hilfsfunktion Pwck zur Paßwort- Überprüfung.
Die Anforderungen an Paßworte des jeweiligen Profiles,
dem diese Funktion zugeordnet ist, werden in dieser
Funktion festgelegt. Gegenwärtig realisiert :
- altes und neues Paßwort verschieden, minimaler
Unterschied derzeit ein Zeichen
- Paßwort mindestens 8 Zeichen lang
- Paßwort muß mindestens je ein Zeichen enthalten von
* Buchstaben
* Ziffern
* Satzzeichen
Einmalige Vorbereitung der Datenbank
Damit ein entsprechendes Profil GTDS – Benutzern zugewiesen werden kann, sind zwei Schritte
notwendig :
1. Hilfsfunktion PWCK zur Paßwort-Überprüfung unter SYS erzeugen. Das geht am
einfachsten aus einem administrativen Account auf dem Datenbank-Server (unter Windows
muß er der Gruppe ORA_DBA angehören, unter Linux der Gruppe dba, wie meist der
oracle) :
sqlplus
…
/NOLOG
SQL> CONNECT / AS SYSDBA
….
SQL> @Passwort
….
SQL> EXIT
evtl. muß zu Passwort.sql der volle Pfadname angegeben werden.
2. Profil BSP_Profil erzeugen. Das kann als OPS$TUMSYS geschehen, wenn der (wie meist)
DBA-Rechte hat :
SQL> SHO USER
User is OPS$TUMSYS
SQL> @Beispiel_Profil
Auch hier könnte wieder der volle Pfadname zu Beispiel_Profil.sql nötig sein.
Danach kann das Profil für GTDS – Benutzer verwendet werden.
ACHTUNG :
Es ist unter Umständen sinnvoll, für unterschiedliche Arten von Benutzern unterschiedliche Profile
zu erstellen und den Benutzern zuzuweisen. Das vorgestellte Beispiel-Profil sollte beispielsweise
nicht unverändert dem OPS$TUMSYS zugewiesen werden, da ohne spezielle
Vorsichtsmaßnahmen unter Umständen ein Login nicht mehr möglich ist und zur Behebung auf
übergeordnete Nutzer zurückgegriffen werden müsste. Ähnliches gilt auch für Spezialbenutzern wie
GTDSHL7 oder GTDSEXP oder GTDSSESSIONINITIATE für Schnittstellen, Datenbankexport
und Vermittlung von WebGTDS-Aufrufen, die nicht für interaktive Sitzungen gedacht sind und
auch nur begrenzte Berechtigungen haben. Werden für diese Fälle Vorschläge für Profile benötigt,
sollte derzeit noch Rücksprache mit den Entwicklern erfolgen.
Des weiteren sollte bedacht werden, dass bei der Einrichtung insbesondere sehr strenger Profile
auch eine Logistik vorhanden sein muss, die quasi zwangsläufig häufiger auftretenden Probleme
(gesperrte Accounts, abgelaufene oder nicht erinnerbare Passwörter, …) kurzfristig zu beheben,
damit zeitkritische Nutzungen wie Anmeldung von Patienten zu Tumorkonferenzen jederzeit zur
Verfügung stehen.
Neue GTDS – Parameter
- PASSWORT.AENDERN
wenn Ja für einen Benutzer gesetzt, wird dieser nach dem
Logon unmittelbar aufgefordert, sein Paßwort zu ändern, und
in die Maske SETPASS geführt. Bricht er dort ab, erwarten
ihn derzeit noch keine Restriktionen
- PASSWORT.PROFIL
Name jenes Profiles, das für den Datenschutz neuen GTDS Benutzern zugewiesen werden soll. Wenn Sie unser Beispiel_Profil.sql
verwenden ist der Wert einfach BSP_PROFIL
- GLOBAL.PASSWORT_MIT_REPLACE
muß auf Ja gesetzt werden, sonst funktioniert die PaßwortÄnderung nicht.
Änderungen von Masken im GTDS
In der Benutzerverwaltung kann jetzt einzelnen Benutzern ein Profil zugewiesen werden (in diesem
Fall heißt das Profil DATENSCHUTZ 1). Die Maske zum ändern des Paßwortes kann direkt
aufgerufen werden (2). Ist ein Benutzer gesperrt (z.B. Arzt hat das Paßwort vergessen und zu oft
probiert), kann mit dem Knopf Unlock die Sperre unmittelbar aufgehoben werden (3).
Erweitert wurde auch die Maske zur Paßwort-Änderung :
Die Grundfunktionalität bleibt die gleiche. Jedoch wird jetzt das Ablaufdatum des
Benutzerpaßwortes angezeigt, wenn vorhanden, und ein evtl. Sperrdatum. Ist der Account gesperrt,
kann er direkt in dieser Maske entsperrt werden.
Nach Drücken von Passwort ändern wird das neue Paßwort gesetzt, jedoch nur wenn es die
Bedingungen des für den zu ändernden Benutzer gesetzten Profiles (s.o.) erfüllt. Ist das nicht der
Fall kommt eine Fehlermeldung wie diese :
Hier entspricht das
Paßwort nicht den
Anforderungen, da es
keine Ziffer enthält. Die
volle Meldung, daß das
Paßwort Buchstaben,
Ziffern und Satzzeichen
enthalten muß, wird leider
noch abgeschnitten.
Verfügbarkeit der SQL-Skripte
Die erwähnten SQL-Skripte sind im aktuellen GTDS – Patch bzw. - Update enthalten, werden
jedoch nicht automatisch ausgeführt. Sie sind im Unterverzeichnis SQL\passwort_skripte
abgelegt. Beispiel_Profil.sql heißt in einigen frühen Distributionen
Datenschutz_Profil.sql.
Herunterladen