Deutschsprachiger Datenbank & Cloud Technologie Blog

Oracle Datenbank Passwort Profile - Basics und Neuigkeiten

June 21, 2021
Text Size 100%:

 
Passwort Sicherheit ist seit jeher ein wichtiges Thema, wenn man mit Datenbanken Applikationen arbeitet. Das Passwort soll dabei eine gewisse Komplexität haben, nur eine bestimmte Anzahl von fehlerhaften Login-Versuchen erlauben und irgendwann auch ablaufen. Innerhalb der Oracle Datenbanken verwendet man dafür die Oracle User Profiles.
Was sind noch einmal Oracle User Profiles? Ganz einfach gesagt: User Profiles ermöglichen es, eine Reihe von Datenbank-Limits einzustellen. Wenn ein Profile einem Benutzer zugewiesen ist, dann kann dieser Benutzer diese Limits nicht überschreiten. Dabei kann es um Limits für Datenbank Ressourcen und/oder Passwort Sicherheit gehen. Möchte man Datenbank Ressourcen begrenzen, gilt allerdings die Empfehlung, den Datenbank Ressource Manager mit mehr Funktionalität und Flexibilität zu verwenden. Bei den Passwörtern hingegen sind User Profiles das Mittel der Wahl.

Wie werden diese eingestellt bzw. wie lassen sie sich administrieren? Oracle User Profiles werden mit CREATE PROFILE angelegt. Jeder User, der das CREATE PROFILE Recht besitzt, kann ein User Profile anlegen. Ein Oracle Profile kann natürlich auch von mehreren Benutzern verwendet werden, so dass die Profile-Einstellungen gemeinsam gelten.
Um ein User Profile zuzuweisen, wird das CREATE oder ALTER USER Kommando verwendet.  Die Änderungen werden bei der nächsten User Connection gültig. Falls man kein Profile zuweist, wird automatisch ein Default Profile verwendet. Darüberhinaus gibt es out-of-the-box weitere Profiles wie zum Beispiel das Profile mit Namen ORA_STIG_PROFILE, das die aktuellsten STIG (Security Technical Implementation Guide's)- Richtlinien addressiert, wie z.B. die Notwendigkeit einer Passwortkomplexitätsfunktion, maximale Fehlversuche bei der Anmeldung, Wiederverwendungszeit usw. Um einen Überblick über die Profiles zu bekommen, selektiert man am Einfachsten USER/DBA/CDB_PROFILES. Neu mit 21c ist auch die Einführung des Profiles ORA_CIS_PROFILE um den neuesten CIS (Center for Internet Security)-Richtlinien für Passwörter zu entsprechen.

Folgendes Beispiel zeigt die von Oracle vordefinierten Profiles und ihre Einstellungen in einer PDB im Datenbank Release 21c.

Copied to Clipboard
Error: Could not Copy
Copied to Clipboard
Error: Could not Copy
SQL> select profile, resource_name, limit from dba_profiles
     where resource_type='PASSWORD'order by 1;

PROFILE              RESOURCE_NAME               LIMIT
-------------------- --------------------------- ---------------------------
DEFAULT              PASSWORD_REUSE_TIME         365
DEFAULT              PASSWORD_LOCK_TIME          1
DEFAULT              PASSWORD_GRACE_TIME         7
DEFAULT              INACTIVE_ACCOUNT_TIME       UNLIMITED
DEFAULT              PASSWORD_VERIFY_FUNCTION    NULL
DEFAULT              PASSWORD_REUSE_MAX          5
DEFAULT              PASSWORD_ROLLOVER_TIME      0
DEFAULT              PASSWORD_LIFE_TIME          60
DEFAULT              FAILED_LOGIN_ATTEMPTS       3
ORA_CIS_PROFILE      PASSWORD_REUSE_TIME         365
ORA_CIS_PROFILE      PASSWORD_LIFE_TIME          90
ORA_CIS_PROFILE      PASSWORD_VERIFY_FUNCTION    ORA12C_VERIFY_FUNCTION
ORA_CIS_PROFILE      PASSWORD_REUSE_MAX          20
ORA_CIS_PROFILE      FAILED_LOGIN_ATTEMPTS       5
ORA_CIS_PROFILE      PASSWORD_ROLLOVER_TIME      DEFAULT
ORA_CIS_PROFILE      INACTIVE_ACCOUNT_TIME       120
ORA_CIS_PROFILE      PASSWORD_GRACE_TIME         5
ORA_CIS_PROFILE      PASSWORD_LOCK_TIME          1
ORA_STIG_PROFILE     PASSWORD_VERIFY_FUNCTION    ORA12C_STIG_VERIFY_FUNCTION
ORA_STIG_PROFILE     PASSWORD_LIFE_TIME          35
ORA_STIG_PROFILE     PASSWORD_REUSE_TIME         175
ORA_STIG_PROFILE     FAILED_LOGIN_ATTEMPTS       3
ORA_STIG_PROFILE     PASSWORD_REUSE_MAX          5
ORA_STIG_PROFILE     PASSWORD_LOCK_TIME          UNLIMITED
ORA_STIG_PROFILE     INACTIVE_ACCOUNT_TIME       35
ORA_STIG_PROFILE     PASSWORD_ROLLOVER_TIME      DEFAULT
ORA_STIG_PROFILE     PASSWORD_GRACE_TIME         0

Aus den Bezeichnungen lässt sich leicht die Art der Begrenzung ableiten. So steht die Ressource PASSWORD_LIFE_TIME für die Gültigkeitsdauer eines Passworts oder FAILED_LOGIN_ATTEMPTS für die mögliche Anzahl der fehlerhaften Login-Versuche. Die Ressource INACTIVE_ACCOUNT_TIME, die mit 12.2. eingeführt wurde, gibt dabei die Anzahl der Tage an, die ein User "idle" sein kann. Nach Ablauf der Frist wird das Konto gesperrt. Der Standardwert ist UNLIMITED, der Mindestwert muss 15 betragen.

Details zu den Funktionen wie ORA12C_STIG_VERIFY_FUNCTION und ORA12C_VERIFY_FUNCTION, die für die Komplexität des Passworts eingesetzt werden können, kann man in folgendem Link nachlesen.

Möchte man die Profile Einstellungen pro User sehen, kann man die View DBA_USERS selektieren.

Copied to Clipboard
Error: Could not Copy
Copied to Clipboard
Error: Could not Copy
SQL>  select account_status, profile, password_change_date from dba_users 
      where username in ('APPS1','SCOTT');

ACCOUNT_STATUS       PROFILE              PASSWORD_CHANGE_DATE
-------------------- -------------------- --------------------
OPEN                 DEFAULT              23-MAR-21
OPEN & IN ROLLOVER   APPS1_ROLLOVER       21-JUN-21

Neues Feature: Passwörter ändern ohne Downtime 

Seit neuestem kann eine Anwendung ihre Datenbankpasswörter ändern, ohne dass ein Administrator eine Ausfallzeit einplanen muss.  Das Feature hat den aussagekräftigen Namen Gradual Database Password Rollover for Applications. Damit besteht die Möglichkeit eine Übergangszeit für das Datenbankpasswort zu definieren, indem man den neuen Profile-Parameter PASSWORD_ROLLOVER_TIME (in Tagen) verwendet. Das alte und das neue Passwort bleiben dann im Zeitraum von PASSWORD_ROLLOVER_TIME gültig.

Hinweis: Gradual Database Password Rollover for Applications ist ein 21c Feature. Mit dem Release Update 19.12 steht es allerdings auch in Oracle Database 19c zur Verfügung. Mehr Informationen zu Release Update Features finden sich im New Features Guide im Kapitel New Features in 19c Release Updates.

Das folgende, einfache Beispiel zeigt die Funktionsweise.

Es geht um den Datenbank User APPS1, der ein neues Profile mit PASSWORD_ROLLOVER_TIME von 2 Tagen zugewiesen bekommt.

Copied to Clipboard
Error: Could not Copy
Copied to Clipboard
Error: Could not Copy
SQL> connect apps1/apps_orig@PDB1
Connected.

-- Prüfen des Account Status

SQL> select account_status from user_users;

ACCOUNT_STATUS 
--------------------------------------------
OPEN

Nun wird das neue Profile angelegt und dem User APPS1 zugewiesen.

Copied to Clipboard
Error: Could not Copy
Copied to Clipboard
Error: Could not Copy
SQL> create profile apps1_rollover limit  PASSWORD_ROLLOVER_TIME 2;

Profile created.

SQL> alter user apps1 profile apps1_rollover;

User altered.

Zur Überprüfung können wir wieder  DBA_PROFILES und DBA_USERS selektieren.

Copied to Clipboard
Error: Could not Copy
Copied to Clipboard
Error: Could not Copy
SQL> select resource_name, limit from dba_profiles
where resource_type='PASSWORD' and profile='APPS1_ROLLOVER';

RESOURCE_NAME             LIMIT
------------------------- --------------------
FAILED_LOGIN_ATTEMPTS     DEFAULT
PASSWORD_LIFE_TIME        DEFAULT
PASSWORD_REUSE_TIME       DEFAULT
PASSWORD_REUSE_MAX        DEFAULT
PASSWORD_VERIFY_FUNCTION  DEFAULT
PASSWORD_LOCK_TIME        DEFAULT
PASSWORD_GRACE_TIME       DEFAULT
INACTIVE_ACCOUNT_TIME     DEFAULT
PASSWORD_ROLLOVER_TIME    2

9 rows selected.

SQL> select account_status from dba_users where username='APPS1';

ACCOUNT_STATUS
----------------------------------------------------------------------------
OPEN & IN ROLLOVER

Nun kann man sich 2 Tage mit beiden Passwörtern einloggen. In meinen Tests habe ich SQL Developer verwendet.



Hinweis: Beim Ausprobieren mit SQL*Plus im Oracle Cloud Datenbank Service gibt es noch einen internen Bug in SQL*Plus, der im nächsten RU mit 21.3 behoben sein wird.
 

Beide Passwörter können nun 2 Tage lang verwendet werden. Möchte man das Passwort vorzeitig auslaufen lassen, kann man den Passwort-Rollover-Zeitraum auch mit EXPIRE PASSWORD ROLLOVER PERIOD beenden. Der Benutzer muss dann bei der nächsten Anmeldung das neue Passwort angeben, da das alte Passwort abgelaufen ist,

Copied to Clipboard
Error: Could not Copy
Copied to Clipboard
Error: Could not Copy
SQL> ALTER USER APPS1 EXPIRE PASSWORD ROLLOVER PERIOD;

User altered.

Wie man sehen kann, ist der ACCOUNT_STATUS wieder OPEN.

Copied to Clipboard
Error: Could not Copy
Copied to Clipboard
Error: Could not Copy
SQL> select account_status from dba_users where username='APPS1';

ACCOUNT_STATUS
--------------------------------
OPEN

Und das Einloggen funktioniert nur noch mit dem neuen Passwort.

Copied to Clipboard
Error: Could not Copy
Copied to Clipboard
Error: Could not Copy
SQL> connect apps1/apps_new@PDB1
Connected.

SQL> connect apps1/apps1_orig@pdb1
ERROR:
ORA-01017: invalid username/password; logon denied

Warning: You are no longer connected to ORACLE.

Fazit

Oracle User Profiles ist eine wichtige Technologie, wenn es um Passwort Sicherheit geht. Sie ist einfach zu verwenden und zu verwalten und wird ständig weiterentwickelt. Ein interessantes und sehr nützliches Feature ist sicherlich die Neuigkeit in 21c ein Passwort ohne Downtime ändern zu können. Ein Grund mehr sich einmal wieder mit den Passwort Sicherheits Mechanismen in der Oracle Datenbank zu beschäftigen. Viel Spaß beim Testen!

 

Weitere Informationen

 

 

 

 

 

 

 

 

 

 

 

 

Ulrike Schwinn

Studierte Mathematik und ist bei der Firma Oracle als Systemberaterin tätig. In ihrer Funktion berät und schult sie Kunden in Fragen der neuesten Datenbank und Cloud Technologien. Sie wirkte an mehreren Oracle-Buchprojekten mit und ist als Referentin auf IT Kongressen vertreten.


Previous Post

Oracle Datenbanken - Monthly News: Mai Ausgabe

Ulrike Schwinn | 1 min read

Next Post


Oracle Datenbanken - Monthly News: Juni Ausgabe

Ulrike Schwinn | 1 min read