Πώς κάνουμε enforce password policy σε βάση δεδομένων της Oracle

Πώς κάνουμε enforce password policy σε βάση δεδομένων της Oracle
Πώς κάνουμε enforce password policy σε βάση δεδομένων της Oracle

Όπως γνωρίζουμε σε μία βάση δεδομένων της Oracle μέσα από τα User Profiles μπορούμε να θέσουμε περιορισμούς σε ομάδες χρηστών όσον αφορά το πότε και αν λήγει ένας κωδικός (PASSWORD_LIFE_TIME), πόσες μέρες έχει περιθώριο να αλλαχτεί πριν σταματήσει να λειτουργεί (PASSWORD_GRACE_TIME) , μετά από πόσες μέρες μπορεί να ξαναχρησιμοποιηθεί (PASSWORD_REUSE_TIME) και μετά από πόσες αποτυχημένες προσπάθειες κλειδώνει (FAILED_LOGIN_ATTEMPTS). Δεν μπορούμε όμως από default να θέσουμε περιορισμούς όσων αφορά το μέγεθος και την πολυπλοκότητα του κωδικού.

Σε αυτό το άρθρο θα δούμε πώς κάνουμε εγκατάσταση του buildin functions που μας επιτρέπει αυτή τη δυνατότητα και τι επιλογές έχουμε.

Με την εγκατάσταση έχουμε την δυνατότητα να ενεργοποιήοσουμε ένα από τα δύο functions άνα user profile.

ora12c_verify_function

Με την ενεργοποίηση του ora12c_verify_function θα πληρούνται οι παρακάτω κανόνες:

  • Ο κωδικός πρέπει να είναι τουλάχιστον 8 χαρακτήρες.
  • Ο κωδικός πρέπει να έχει τουλάχιστον 1 γράμμα.
  • Ο κωδικός πρέπει να έχει τουλάχιστον 1 νούμερο.
  • Ο κωδικός δεν πρέπει να περιέχει το username
  • Ο κωδικός δεν πρέπει να περιέχει το username ανάποδα
  • Ο κωδικός δεν πρέπει να περιέχει το όνομα του server
  • Ο κωδικός δεν μπορεί να είναι κοινότυπος όπως ‘oracle’ και ‘password1’ .
  • Ο κωδικός δεν πρέπει να διαφέρει τουλάχιστον 3 χαρακτήρες από τον προηγούμενο κωδικό.

ora12c_strong_verify_function

Με την ενεργοποίηση του ora12c_strong_verify_function θα πληρούνται οι παρακάτω κανόνες:

  • Ο κωδικός πρέπει να είναι τουλάχιστον 9 χαρακτήρες.
  • Ο κωδικός πρέπει να έχει τουλάχιστον 2 κεφαλαία γράμματα.
  • Ο κωδικός πρέπει να έχει τουλάχιστον 2 μικρά γράμματα.
  • Ο κωδικός πρέπει να έχει τουλάχιστον 2 αριθμούς.
  • Ο κωδικός πρέπει να έχει τουλάχιστον 2 ειδικούς χαρακτήρες.
  • Ο κωδικός δεν πρέπει να διαφέρει τουλάχιστον 3 χαρακτήρες από τον προηγούμενο κωδικό.

Η εγκατάσταση

Μέσα από το εργαλείο sqlplus εκτελούμε την παρακάτω εντολή ώστε να γίνουν εγκατάσταση τα functions:

sqlplus / as sysdba

@$ORACLE_HOME/rdbms/admin/utlpwdmg.sql

Με την εγκατάσταση όμως θα ενεργοποιηθεί αυτόματα ora12c_verify_function στο default profile, για να την απενεργοποιήσουμε τρέχουμε τα παρακάτω:

alter profile default limit password_verify_function null;
alter profile default limit password_grace_time unlimited;
alter profile default limit PASSWORD_LIFE_TIME unlimited;
alter profile default limit PASSWORD_LOCK_TIME unlimited;

Αν όμως κάποια κωδικοί δεν πληρούσαν τα κριτήρια π.χ. αν έχει περάσει ο κωδικός τις 180 ημέρες θα γυρίσει σε status EXPIRED(GRACE) καθώς το script αυτόματα άλλαξε την παράμετρο PASSWORD_LIFE_TIME σε 180.

Σε αυτή τη περίπτωση μπορούμε να κάνουμε generate τα commands ώστε να ξαναπεράσουμε τους ίδιους κωδικούς σε όσους χρήστες άνηκαν στο profile DEFAULT και έχουν γυρίσει σε status EXPIRED(GRACE) με το παρακάτω script:

select 'ALTER USER ' ||USERNAME|| ' IDENTIFIED BY VALUES ''' ||spare4|| ''';'  from dba_users du 
inner join sys.user$ su on du.username=su.name
where 1=1
and profile='DEFAULT'
and account_status='EXPIRED(GRACE)';

Σε περίπτωση κατά την σύνδεση του χρήστη μας εμφανίσει θέμα ασυμβατότητας του password file τότε το ξαναδημιουργούμε μέσα από command line ορίζοντας τον κωδικό του χρήστη sys και το format=12:

orapwd file=$ORACLE_HOME/dbs/orapwdbname force=y password=passw0rd format=12

Για να ενεργοποιήσουμε το ora12c_verify_function σε ένα user profile τρέχουμε την παρακάτω εντολή:

alter profile profile_name limit password_verify_function ora12c_verify_function;

Για να ενεργοποιήσουμε το ora12c_strong_verify_function σε ένα user profile τρέχουμε την παρακάτω εντολή:

alter profile profile_name limit password_verify_function ora12c_strong_verify_function;

Για να δούμε όλα τα policies σε ένα user profile τρέχουμε το παρακάτω query:

select * from dba_profile where PROFILE='DEFAULT';
Πώς κάνουμε enforce password policy σε βάση δεδομένων της Oracle
01

Όπως βλέπουμε στην προκειμένη περίπτωση έχει ενεργοποιηθεί ως PASSWORD_VERIFY_FUNCTION η function ora12c_verify_function.

Πηγές:

Μοιράσου το

Αφήστε μία απάντηση