quản lý password trong oracle

   Giới thiệu

 

Để tăng cường tính bảo mật cho hệ thống, việc đơn giản và cũng là hiệu quả nhất, đó là xây dựng và thực thi chính sách đặt password cho user.

 

Trên thực tế, tôi từng biết có rất nhiều hệ thống database, mà password cho user quản trị chỉ đơn giản là oracle, welcome1, abc123,…

 

Đây là 1 lỗ hổng cực kỳ nghiêm trọng, hacker có thể không mất quá nhiều thời gian để dò ra được password và truy cập vào database. Điều này có thể khiến dữ liệu bị thất thoát hoặc nguy hiểm hơn, là mất toàn bộ.

 

Tuy nhiên, chúng ta cũng có thể hạn chế rủi ro này rất nhiều, bằng cách xây dựng và thực thi chính sách đặt password cho user.

 

Oracle cho phép chúng ta làm điều này trong PROFILE của user

 


 

   PROFILE là gì?

 

Mỗi user khi được tạo ra sẽ được gán cho 1 profile.

 

Nó là tập hợp của những quy định mà user phải tuân thủ.

 

VD như sau:

 

create user duy identified by Abcd1234 profile DEFAULT;

 

Câu lệnh trên, tôi đã tạo ra user với profile được gán là DEFAULT.

 

Chú ý: nếu bạn không chỉ ra mệnh đề profile DEFAULT trong câu lệnh create user. Theo mặc định, profile DEFAULT sẽ được gán cho user.

 

Bạn có thể kiểm tra các quy định có trong profile DEFAULT bằng câu lệnh sau:

 

select resource_name, limit from dba_profiles where profile='DEFAULT';

 

Kết quả:

 

 

Trong đó, bạn hãy chú ý đến các tham số sau, chúng có tác dụng giúp bạn xây dựng chính sách về password cho database.

 

Tên tham số Ý nghĩa
FAILED_LOGIN_ATTEMPTS Quy định số lần đăng nhập thất bại cho phép. Nếu quá con số được quy định, user sẽ chuyển sang trạng thái LOCK.

VD: FAILED_LOGIN_ATTEMPTS = 10, nếu user nào đăng nhập sai password quá 10 lần, user đó sẽ bị lock

PASSWORD_LIFE_TIME  Quy định thời gian 1 password được coi là hợp lệ. Nếu quá thời gian này mà không đổi sang password mới, account sẽ chuyển sang trạng thái EXPIRED
PASSWORD_REUSE_TIME
Quy định thời gian tối thiểu để dùng lại 1 password cũ.

VD: PASSWORD_REUSE_TIME = 30, bạn đổi password hiện tại là ab123 thành abc123, trong vòng 30 ngày bạn không thể đặt lại password ab123 nữa. Muốn đặt lại password này phải chờ qua 30 ngày

PASSWORD_REUSE_MAX Quy định số lần thay đổi password trước khi password cũ được sử dụng.

VD: PASSWORD_REUSE_MAX = 5, password hiện tại là ab123, bạn cần 5 lần đổi password với các password khác nhau, mới có thể đặt lại password là ab123.

PASSWORD_LOCK_TIME Quy định số ngày user sẽ bị khóa, nếu bị đăng nhập sai password quá số lần quy định
PASSWORD_GRACE_TIME Quy định khoảng thời gian cảnh báo password đã bị EXPIRED sẽ xuất hiện.

VD: PASSWORD_LIFE_TIME = 60 và PASSWORD_GRACE_TIME = 3, có nghĩa, sau 60 ngày password của bạn sẽ bị EXPIRED và trong vòng 3 ngày, mỗi lần login bạn sẽ nhận được 1 cảnh báo và yêu cầu đổi password. Nếu sau 3 ngày, bạn không đổi password, user của bạn sẽ bị LOCK.

PASSWORD_VERIFY_FUNCTION Quy định hàm được sử dụng để kiểm tra độ phức tạp của password.

Bạn có thể dùng các hàm kiểm tra password do Oracle cung cấp (verify_function_11G, ora12c_verify_function, ora12c_strong_verify_function).

 

Ví dụ:

 

Tôi tạo 1 profile tên là DBA_PROFILE với các tham số như sau:

 

CREATE PROFILE DBA_PROFILE LIMIT
   FAILED_LOGIN_ATTEMPTS 5
   PASSWORD_LIFE_TIME 60
   PASSWORD_REUSE_TIME 60
   PASSWORD_REUSE_MAX 5
   PASSWORD_VERIFY_FUNCTION ora12c_verify_function
   PASSWORD_LOCK_TIME 1 
   PASSWORD_GRACE_TIME 10;

 

Điều đó có ý nghĩa: những user nào được gán cho profile này sẽ được áp dụng chính sách password như sau:

 

   Đăng nhập sai password quá 5 lần, user sẽ bị LOCK (FAILED_LOGIN_ATTEMPS = 5).

 

   Mỗi lần bị khóa do đăng nhập sai password, user sẽ bị khóa trong vòng 1 ngày (PASSWORD_LOCK_TIME = 1)

 

   Cứ 60 ngày, password sẽ bị EXPIRED, bạn cần đổi lại chúng (PASSWORD_LIFE_TIME = 60).

 

   Sau khi password bị EXPIRED, trong vòng 10 ngày, mỗi khi login, bạn sẽ nhận được cảnh báo cần đổi password. Nếu sau 10 ngày, bạn vẫn chưa đổi, user của bạn sẽ bị khóa. (PASSWORD_GRACE_TIME = 10)

 

   Bạn không thể sử dụng 1 password đã đặt trước đó để đặt password mới, trong vòng 60 ngày (PASSWORD_REUSE_TIME = 6)

 

   Bạn phải đổi password  5 lần (mỗi lần 1 password khác nhau), sau đó mới có thể sử dụng password cũ (PASSWORD_REUSE_MAX )

 

   Oracle sẽ sử dụng hàm ora12c_verify_function để xác minh tính phức tạp cho password của bạn (PASSWORD_VERIFY_FUNCTION = ora12c_verify_function). Hàm này sẽ bắt buộc password của bạn phải thỏa mãn:

    • Tối thiểu 8 ký tự
    • Tối thiểu phải có 1 chữ cái, 1 chữ số
    • Không được chứa database name, oracle, user name, hay user name viết theo chiều ngược lại.
    • Không được quá đơn giản như welcome1
    • Password mới phải khác ít nhất 3 ký tự so với password cũ.

 

Hẹn gặp lại các bạn ở các bài viết lần sau.

 

Nguồn: https://dangxuanduy.com/

 

Hiện tại, tôi có tổ chức đều đặn các khóa học về quản trị Oracle Database, tôi sẽ để thông tin ở đây, để bạn nào quan tâm về lịch học cũng như chương trình học có thể theo dõi nhé.

 

    KHÓA HỌC: QUẢN TRỊ ORACLE DATABASE THẬT LÀ ĐƠN GIẢN  Xem ngay!

 

   Hãy tham gia group “Kho tài liệu kiến thức database” để cùng học hỏi và chia sẻ nhé.

Đặng Xuân Duy
Đọc thêm  Khóa học Oracle nâng cao - Quản trị kiến trúc Multitenant 12c

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *