Quản trị hồ sơ (profile) trong Oracle Database là một phần quan trọng của việc quản lý bảo mật và quản lý người dùng. Profile được sử dụng để áp dụng các giới hạn và các chính sách bảo mật cho người dùng.
0. Đầu tiên, để Profile được áp dụng chúng ta cần xem thông số RESOURCE_LIMIT
Kích hoạt hoặc vô hiệu hóa các giới hạn tài nguyên: Khi tham số RESOURCE_LIMIT được thiết lập TRUE, Oracle sẽ thực thi các giới hạn tài nguyên đã được định nghĩa trong các Profile người dùng. Nếu RESOURCE_LIMIT được thiết lập là FALSE, Oracle sẽ không thực thi các giới hạn này.
SHOW PARAMETER RESOURCE_LIMIT; ALTER SYSTEM SET RESOURCE_LIMIT = TRUE; ALTER SYSTEM SET RESOURCE_LIMIT = FALSE;
1. Tạo Profile
Bạn có thể tạo một Profile mới bằng lệnh CREATE PROFILE.
CREATE PROFILE profile_name LIMIT parameter_name value [, parameter_name value, ...]; CREATE PROFILE my_profile LIMIT FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 1 PASSWORD_LIFE_TIME 90;
Trong ví dụ này, my_profile là tên của hồ sơ và các giới hạn (limits) được chỉ định bao gồm số lần thử đăng nhập không thành công trước khi khoá tài khoản (FAILED_LOGIN_ATTEMPTS), thời gian khoá tài khoản sau khi mật khẩu bị khoá (PASSWORD_LOCK_TIME), và tuổi thọ mật khẩu (PASSWORD_LIFE_TIME).
2. Gán Profile cho Người Dùng
Sau khi tạo Profile, bạn có thể gán Profile đó cho các người dùng.
ALTER USER username PROFILE profile_name;
Ví dụ:
ALTER USER myuser PROFILE my_profile;
3. Thực Hiện Quản Lý Profile
Profile cho phép bạn thiết lập các giới hạn về bảo mật và quản lý cho người dùng. Điều này bao gồm các giới hạn về mật khẩu (như tuổi thọ mật khẩu, số lần thử đăng nhập không thành công trước khi khoá tài khoản), và các giới hạn khác như sự sử dụng tài nguyên (ví dụ: CPU, lưu lượng I/O).
4. Kiểm Tra Profile
Để kiểm tra Profile của một người dùng, bạn có thể truy vấn các bảng thông tin hệ thống như DBA_USERS hoặc USER_USERS.
5. Xóa Profile
Nếu không cần thiết nữa, bạn có thể xóa một Profile bằng cách sử dụng lệnh DROP PROFILE.
DROP PROFILE profile_name; DROP PROFILE my_profile;
Tham số phổ biến của profile trong Oracle Database:
- PASSWORD_LIFE_TIME: Xác định thời gian sống của mật khẩu người dùng, đảm bảo rằng mật khẩu được đổi đều đặn để tăng cường bảo mật.
- PASSWORD_REUSE_TIME: Xác định thời gian mà mật khẩu cũ không thể được sử dụng lại, giúp ngăn chặn việc tái sử dụng mật khẩu cũ.
- PASSWORD_REUSE_MAX: Xác định số lần tối đa mà một mật khẩu cũ có thể được sử dụng lại trước khi yêu cầu người dùng chọn một mật khẩu mới.
- PASSWORD_LOCK_TIME: Xác định khoảng thời gian mà tài khoản người dùng sẽ bị khoá sau một số lần đăng nhập không thành công.
- FAILED_LOGIN_ATTEMPTS: Xác định số lần đăng nhập không thành công mà một người dùng có thể thực hiện trước khi tài khoản bị khoá.
- SESSIONS_PER_USER: Xác định số lượng phiên kết nối tối đa mà mỗi người dùng có thể mở đồng thời.
- IDLE_TIME: Xác định thời gian tối đa mà một phiên kết nối có thể không hoạt động trước khi bị đóng tự động.
- CONNECT_TIME: Xác định thời gian tối đa mà một phiên kết nối có thể duy trì trước khi bị đóng tự động.
- CPU_PER_SESSION: Xác định mức độ tài nguyên CPU tối đa mà mỗi phiên kết nối có thể sử dụng.
- CPU_PER_CALL: Xác định mức độ tài nguyên CPU tối đa mà mỗi cuộc gọi có thể sử dụng.
- LOGICAL_READS_PER_SESSION: Xác định số lần đọc logic tối đa mà mỗi phiên kết nối có thể thực hiện.
- LOGICAL_READS_PER_CALL: Xác định số lần đọc logic tối đa mà mỗi cuộc gọi có thể thực hiện.
- PRIVATE_SGA: Xác định liệu một phiên kết nối có thể sử dụng bộ nhớ đệm toàn cục (SGA) hay không.
- COMPOSITE_LIMIT: Xác định số lượng kết nối kết hợp tối đa mà mỗi người dùng có thể mở.
- INACTIVE_ACCOUNT_TIME: Xác định thời gian tối đa mà một tài khoản không hoạt động được phép tồn tại trước khi bị đánh dấu là không hoạt động.
- PASSWORD_GRACE_TIME: Xác định khoảng thời gian sau khi mật khẩu hết hạn mà người dùng vẫn có thể sử dụng mật khẩu cũ.
- PASSWORD_VERIFY_FUNCTION: Xác định hàm xác thực mật khẩu sẽ được sử dụng để đảm bảo tính mạnh mẽ của mật khẩu.
- SESSION_PER_TRANSACTION: Xác định số lượng phiên kết nối tối đa mà mỗi giao dịch có thể mở.
- CACHE_DEFAULT_TIME: Xác định thời gian mà thông tin ủy quyền sẽ được lưu trữ trong bộ nhớ cache.
- PASSWORD_LOCK_MAX_TIME: Xác định thời gian tối đa mà một tài khoản có thể bị khoá sau một số lần đăng nhập không thành công liên tiếp.
- SESSIONS_PER_IP: Xác định số lượng phiên kết nối tối đa được phép từ một địa chỉ IP duy nhất.