Thứ Bảy, 22 tháng 2, 2020

HỌC ORACLE DB TỪ A-Z - BÀI 18: QUẢN LÝ THÔNG TIN PROFILES

18.1.GIỚI THIỆU PROFILE
Thông tin profile là tập hợp các thông tin về tài nguyên hệ thống và thông tin liên quan tới mật khẩu của user bao gồm:
§  Thời gian sử dụng CPU (CPU time)
§  Các thao tác vào ra (I/O operations)
§  Thời gian nghỉ (Idle time)
§  Thời gian kết nối (Connect time)
§  Dung lương bộ nhớ (Memory space)
§  Các phiên làm việc đồng thời (Concurrent sessions)
§  Số lần sử dụng và thời gian sử dụng một mật khẩu (Password aging and expiration)
§  Lịch sử thay đổi mật khẩu (Password history)
§  Cơ chế xác nhận mật khẩu (Password complexity verification)
§  Khoá account truy nhập (Account locking)

Quản trị viên database gán các profile cho từng user mà theo đó Oracle server phân bổ tài nguyên cho user theo thông tin có trong profile.
Oracle server tự động tạo default profile (profile mặc định) mỗi khi tạo database. Ban đầu, các thông tin trong default profile được đặt không hạn chế. Quản trị viên database có thể điều chỉnh lại các tham số này đối với từng user.

Sử dụng Profile
§  Hạn chế users thực hiện các thao tác đòi hỏi sử dụng nhiều tài nguyên hệ thống.
§  Đảm bảo cắt kết nối của users với database mỗi khi session của user đó không hoạt động nữa.
§  Cho phép các users như nhau trong một nhóm sử dụng tài nguyên như nhau.
§  Quản lý việc sử dụng tài nguyên dạng dữ liệu lớn và phức tạp trong hệ thống database có nhiều người dùng.
§  Điều chỉnh việc sử dụng mật khẩu của user.

Sử dụng profile để quản lý tài nguyên
Ta có thể quản lý tài nguyên hệ thống thông qua việc sử dụng tài nguyên. Để làm được điều đó, ta thực hiện theo các bước sau:
1.      Tạo một profile bằng lệnh CREATE PROFILE qua đó xác định các giới hạn tài nguyên và giới hạn mật khẩu.
2.      Gán profile đó cho user thông qua lệnh CREATE USER hay ALTER USER.
3.       Thực hiện giới hạn các tài nguyên sử dụng bằng cách dùng lệnh ALTER SYSTEM hay điều chỉnh lại các thông số có trong file tham số khởi tạo. Cách này đòi hỏi phải dừng rồi khởi động lại database.

18.2.QUẢN LÝ PROFILE

18.2.1.  Tạo Profile

Tạo profile lưu trữ các giới hạn tài nguyên sử dụng thông qua câu lệnh:
CREATE PROFILE profile LIMIT
[SESSIONS_PER_USER max_value]
[CPU_PER_SESSION max_value]
[CPU_PER_CALL max_value]
[CONNECT_TIME max_value]
[IDLE_TIME max_value]
[LOGICAL_READS_PER_SESSION max_value]
[LOGICAL_READS_PER_CALL max_value]
[COMPOSITE_LIMIT max_value]
[PRIVATE_SGA max_bytes]

max_value :== {integer|UNLIMITED|DEFAULT}
max_bytes :== {integer[K|M]|UNLIMITED|DEFAULT}
Với:
profile             là tên của profile
UNLIMITED              xác định user được gán profile tương ứng có thể sử dụng không hạn chế tài nguyên
DEFAULT                  mục profile để hạn chế sử dụng tài nguyên được chỉ ra trong mệnh đề tương ứng thuộc DEFAULT profile
COMPOSITE_LIMIT
giới hạn sử dụng tài nguyên tổng cộng bao gồm cả các trọng số tương ứng. Giới hạn được tính bằng tổng số: CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION, PRIVATE_SGA

Lưu ý:
View RESOURCE_COST trong data dictionary cho biết các trọng số tương ứng được gán cho các tài nguyên khác nhau. Ta cũng có thể sử dụng lệnh ALTER RESOURCE COST để biết được các trọng số cho từng tài nguyên khác nhau.

Ví dụ:
CREATE PROFILE developer_prof LIMIT
SESSIONS_PER_USER 2
CPU_PER_SESSION 10000
IDLE_TIME 60
CONNECT_TIME 480;

Trong OEM, ta thực hiện các bước sau
4.      Chạy Security Manager.
5.      Chọn Profile—>Create.
6.      Trong phần General page, nhập vào tên và các thông tin chi tiết ứng với từng mục tài nguyên.
7.      Bấm nút Apply.

18.2.2.  Thiết lập các giới hạn về tài nguyên

Giới hạn về tài nguyên cho từng session level
Tài nguyên
Diễn giải
CPU_PER_SESSION
Tổng lượng thời gian CPU, được xác định theo đơn vị trăm giây.
SESSIONS_PER_USER
Số lượng tối đa các session có thể sử dụng đồng thời bởi cùng một user
CONNECT_TIME
Thời gian kết nối tối đa, tính theo đơn vị phút
IDLE_TIME
Thời gian trễ, tính theo đơn vị phút
LOGICAL_READS_PER_SESSION
Số lượng block dữ liệu được đọc
PRIVATE_SGA
Vùng không gian giành riêng trong SGA, tính theo đơn vị byte

Giới hạn về tài nguyên cho từng Call level
Tài nguyên
Diễn giải
CPU_PER_CALL
Thời gian sử dụng CPU cho mỗi lần gọi, tính  theo đơn vị trăm giây.
LOGICAL_READS_PER_CALL
Số lượng block được đọc tối đa

Ghi chú:
§  IDLE_TIME được áp dụng chỉ cho các tiến trình server. Giới hạn IDLE_TIME  không ảnh hưởng gì đối với các câu lệnh truy vấn dài hay các thao tác khác.
§  LOGICAL_READS_PER_SESSION là giới hạn các lần đọc block dữ liệu từ cả bộ nhớ lẫn ổ đĩa.
§  PRIVATE_SGA áp dụng khi chạy multithreaded server (MTS).

18.2.3.  Gán Profile cho User

Việc gán profile có thể được thực hiện ngay trong lện CREATE USER hay lệnh ALTER USER.

Ví dụ: sử dụng lệnh CREATE USER để tạo một user USER3 với mật khẩu là USER3, sau đó gán profile có tên là DEVELOPER_PROF cho user vừa tạo.
CREATE USER user3 IDENTIFIED BY user3
DEFAULT TABLESPACE data01
TEMPORARY TABLESPACE temp
QUOTA unlimited ON data01
PROFILE developer_prof;

Điều chỉnh user SCOTT và gán profile DEVELOPER_PROF cho User này.
ALTER USER scott
PROFILE developer_prof;

Trong OEM, ta có thể làm theo các bước sau
8.      Chạy Security Manager.
9.      Chọn Profile—>Assign Profile to users.
10.  Trong phần Assign Profile page, chọn user tương ứng.
11.  Bấm nút OK.

Một số tính chất của Profile
§  Profile được gán không ảnh hưởng tới sessions hiện thời.
§  Profiles chỉ có thể được gán cho users không được gán cho roles hay cho các profiles khác.
§  Trong trường hợp ta không gán profile cho user ngay từ khi mới tạo user, profile mặc định (default profile) sẽ được tự động gán cho user đó.

18.2.4.  Đặt giới hạn tài nguyên

Ta có thể đặt giới hạn sử dụng tài nguyên thông qua tham số khởi tạo RESOURCE_LIMIT hay sử dụng câu lện ALTER SYSTEM.

Sử dụng tham số khởi tạo RESOURCE_LIMIT
§  Cho phép hoặc không cho phép áp dụng các giới hạn tài nguyên. Với cách này, ta cần khởi động lại instance khi thay đổi các giá trị trong file tham số khởi tạo.
§  Giá trị của tham số là TRUE nếu cho phép giới hạn tài nguyên. Ngược lại, giá trị sẽ là FALSE (đây là giá trị mặc định).

Sử dụng lệnh ALTER SYSTEM
§  Cho phép hoặc không cho phép áp dụng các giới hạn tài nguyên.
§  Các điều chỉnh do lệnh ALTER SYSTEM sẽ có tác dụng ngay cho tới khi có một điều chỉnh khác hoặc khi database bị tắt.
§  Ta sử dụng lệnh này trong trường hợp muốn hạn chế sử dụng tài nguyên mà lại không được tắt database.

18.2.5.  Thay đổi thông tin trong profile

Ta có thể thay đổi các thông tin trong profile thông qua câu lệnh ALTER PROFILE.
Cú pháp:
ALTER PROFILE profile LIMIT
[SESSIONS_PER_USER max_value]
[CPU_PER_SESSION max_value]
[CPU_PER_CALL max_value]
[CONNECT_TIME max_value]
[IDLE_TIME max_value]
[LOGICAL_READS_PER_SESSION max_value]
[LOGICAL_READS_PER_CALL max_value]
[COMPOSITE_LIMIT max_value]
[PRIVATE_SGA max_bytes]

Ví dụ:
ALTER PROFILE default LIMIT
SESSIONS_PER_USER 5
CPU_PER_CALL 3600
IDLE_TIME 30;

Trong OEM, ta thực hiện theo các bước sau
12.  Chạy Security Manager.
13.  Chuyển tới nút Profile.
14.  Chọn profile tương ứng.
15.  Trong phần General page thay đổi các thông số trong từng mục.
16.  Bấm nút Apply.

18.2.6.  Huỷ profile

Thực hiện việc huỷ profile theo lệnh DROP PROFILE.
Cú pháp:
DROP PROFILE profile [CASCADE]
Với:
profile             tên của profile bị huỷ
CASCADE                 huỷ tất cả các profile đã được gán cho user.
Ví dụ:
DROP PROFILE developer_prof;

Hoặc
DROP PROFILE developer_prof CASCADE;

Trong OEM, ta thực hiện theo các bước sau
17.  Chạy Security Manager.
18.  Chuyển tới nút Profile.
19.  Chọn profile tương ứng.
20.  Chọn Profile—>Remove.
21.  Bấm nút OK.

18.2.7.  Thông tin về các giới hạn tài nguyên

Để xem thông tin về các giới hạn sử dụng tài nguyên, ta xem xét trong các data dictionary DBA_USERSDBA_PROFILE
Hình vẽ 1.    Thông tin về giới hạn tài nguyên

Ví dụ: xem giới hạn tài nguyên của User SCOTT
SVRMGR1> SELECT p.profile, p.resource_name, p.limit
2> FROM dba_users u, dba_profiles p
3> WHERE p.profile=u.profile AND username=’SCOTT’ AND
4> p.resource_type=’KERNEL’;

PROFILE                    RESOURCE_NAME                         LIMIT
--------------                 --------------------------                         -------
DEVELOPER_PROF                                                            COMPOSITE_LIMIT            DEFAULT
DEVELOPER_PROF                                                            SESSIONS_PER_USER        2
DEVELOPER_PROF                                                            CPU_PER_SESSION            10000
DEVELOPER_PROF                                                            CPU_PER_CALL      DEFAULT
DEVELOPER_PROF                                                            LOGICAL_READS_PER_SESSION                                     DEFAULT
DEVELOPER_PROF                                                            LOGICAL_READS_PER_CALL                                     DEFAULT
DEVELOPER_PROF                                                            IDLE_TIME   60
DEVELOPER_PROF                                                            CONNECT_TIME     480
DEVELOPER_PROF                                                            PRIVATE_SGA         DEFAULT
9 rows selected.

18.3.QUẢN LÝ MẬT KHẨU

Để có thể đảm bảo việc bảo mật cho toàn bộ database, hệ thống quản lý mật khẩu Oracle cho phép quản trị viên database quản lý mật khẩu thông qua các profile. Việc quản lý mật khẩu này có một số đặc điểm sau:
§  Account locking: cho phép tự động khoá account tương ứng với user mỗi khi user đó không thể kết nối tới hệ thống.
§  Gắn thời hạn sử dụng cho mỗi mật khẩu: mỗi mật khẩu sẽ có một thời hạn sử dụng nhất định, quá thời hạn trên, mật khẩu cần được thay đổi.
§  Lưu trữ lịch sử thay đổi mật khẩu (Password history): kiểm tra các mật khẩu mới để đảm bảo mật khẩu mới không trùng với các mật khẩu trước đó.
§  Cơ chế xác nhận mật khẩu mềm dẻo: cho phép kiểm tra và xác nhận mật khẩu một cách mềm dẻo nhưng vẫn đảm bảo tính chặt chẽ chống lại được những hình thức cố tình xâm nhập vào hệ thống bằng cách phá khoá, đoán mật khẩu.
Hình vẽ 2.    Quản lý mật khẩu
Cũng tương tự như việc đưa ra các giới hạn về tài nguyên sử dụng, ta cũng có thể sử dụng các profile để thiết lập các giới hạn về mật khẩu và gán cho mỗi user thông qua lệnh CREATE hay ALTER USER.
Thực hiện quản lý mật khẩu, ta có thể sử dụng các câu lệnh CREATE USER hay ALTER USER để lock hay unlock account của user đó.

18.3.1.  Tạo profile quản lý mật khẩu

Tạo profile quản lý mật khẩu thông qua lệnh CREATE PROFILE
Cú pháp:
CREATE PROFILE profile LIMIT
[FAILED_LOGIN_ATTEMPTS max_value]
[PASSWORD_LIFE_TIME max_value]
[ {PASSWORD_REUSE_TIME
|PASSWORD_REUSE_MAX} max_value]
[ACCOUNT_LOCK_TIME max_value]
[PASSWORD_GRACE_TIME max_value]
[PASSWORD_VERIFY_FUNCTION
{function|NULL|DEFAULT} ]
Ví dụ:
CREATE PROFILE grace_5 LIMIT
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LIFE_TIME 30
PASSWORD_REUSE_TIME 30
PASSWORD_VERIFY_FUNCTION verify_function
PASSWORD_GRACE_TIME 5;

Trong OEM, ta thực hiện theo các bước sau:
22.  Chạy Security Manager.
23.  Chọn Profile—>Create.
24.  Trong phần Password Property sheet nhập vào các tham số mật khẩu của account.
25.  Bấm nút Apply.

18.3.2.  Các tham số điều chỉnh mật khẩu

Tài nguyên
Diễn giải
FAILED_LOGIN_ATTEMPTS
Số lần kết nối hỏng (do nhập sai tên hay mật khẩu) tối đa
PASSWORD_LOCK_TIME
Số ngày lock account của user kể từ khi hết hạn sử dụng mật khẩu
PASSWORD_LIFE_TIME
Số ngày sử dụng mật khẩu mới kết từ khi bắt đầu thay đổi mật khẩu
PASSWORD_GRACE_TIME
Thời gian gia hạn cho việc thay đổi mật khẩu
PASSWORD_REUSE_TIME
Thời gian tối thiểu, tính theo ngày, có thể tái sử dụng mật khẩu cũ
PASSWORD_REUSE_MAX
Số lần tối đa có thể sử dụng lại một mật khẩu.
PASSWORD_VERIFY_FUNCTION
Hàm PL/SQL thực hiện mã hoá và kiểm tra mật khẩu trước khi nó được sử dụng


18.3.3.  Một số đặc điểm chính trong quản lý mật khẩu

Account Locking
Oracle server tự động locks (khoá) account của user khi user đó cố tình truy nhập vào account với số lần truy nhập sai đạt đến giá trị FAILED_LOGIN_ATTEMPTS. Sau khoảng thời gian PASSWORD_LOCK_TIME, account đó lại được tự động unlocked hoặc có thể được unlocked bởi quản trị viên database với lệnh ALTER USER.
Ngoài ra, database account cũng có thể được locked một cách tường minh thông qua lệnh ALTER USER. Khi này, account sẽ không được tự động unlocked giống như trường hợp trên.

Thời hạn sử dụng mật khẩu
Tham số PASSWORD_LIFE_TIME xác định thời gian tối đa cho việc sử dụng một mật khẩu, sau thời gian này, mật khẩu cần được thay đổi.
Quản trị viên database có thể chỉ ra thời gian gia hạn (PASSWORD_GRACE_TIME). Thời gian này bắt đầu sau khi mật khẩu truy cập hệ thống hết hạn. Trong thời gian này, mỗi lần truy cập vào hệ thống sẽ hiện lên một thông báo nhắc nhở (warning message) thay đổi mật khẩu. User cần phải thực hiện thời hạn thay đổi mật khẩu trong khoảng thời gian gia hạn,  quá thời gian trên account của user sẽ bị locked.

Lịch sử sử dụng mật khẩu (Password history)
Password history thực hiện việc kiểm tra để đảm bảo không cho phép user được tái sử dụng một mật khẩu nào đó trong nhiều lần. Các quy định này được thiết lập trong các tham số:
§  PASSWORD_REUSE_TIME tương ứng với thời gian tối thiểu, tính theo ngày, có thể tái sử dụng mật khẩu cũ.
§  PASSWORD_REUSE_MAX là số lần tối đa có thể sử dụng lại một mật khẩu.
Khi một tham số được thiết lập giá trị là DEFAULT hay UNLIMITED, các tham số khác sẽ được gán giá trị là UNLIMITED.

18.3.4.  Hàm cung cấp mật khẩu cho người sử dụng

Khi đưa hàm cung cấp mật khẩu cho người sử dụng vào trong databse, quản trị viên database cần quan tâm tới một số đặc điểm sau:
§  Hàm được khai báo theo định dạng:
function_name(
userid_parameter IN VARCHAR2(30),
password_parameter IN VARCHAR2(30),
old_password_parameter IN VARCHAR2(30))
RETURN BOOLEAN
§  Giá trị trả về của hàm là TRUE nếu thành công hay FALSE trong trường hợp gặp lỗi.
§  Khi hàm mật khẩu phát sinh lỗi (raise an exception), lỗi đó sẽ làm ngừng thực hiện lệnh ALTER USER hay CREATE USER.
§  Hàm mật khẩu bắt buộc phải khai báo trong schema của user SYS.
Oracle cung cấp sẵn hàm xác nhận mật khẩu, hàm này được gọi là VERIFY_FUNCTION đặt trong file script utlpwdmg.sql, thuộc thư mục %ORACLE_HOME%\RDBMS\ADMIN.

18.3.5.  Thông tin về mật khẩu

Ta có thể kết hợp các thông tin về mật khẩu có trong các data dictionary DBA_USERS DBA_PROFILES.
§  DBA_USERS: profile, username, account_status, lock_date, expiry_date
§  DBA_PROFILES: profile, resource_name, resource_type (PASSWORD), limit
Ví dụ:
Xem thông tin về thời hạn và trạng thái lock của mật khẩu.
SVRMGR> SELECT username, password, account_status,
2>lock_date, expiry_date
3> FROM dba_users;
USERNAME PASSWORD              ACCOUNT_STATUS LOCK_DATE EXPIRY_DA
--------- --------------- -------------- --------- ---------
SYS                 D4C5016086B2DC6 OPEN                                            19-DEC-97
SYSTEM        D4DF7931AB130E3 OPEN                                            19-DEC-97
TEST               7A0F2B316C212D6   OPEN                                            31-JAN-98
SCOTT           F894844C34402B6     OPEN                                            19-DEC-97
DBSNMP        E066D214D5421CC OPEN                                            19-DEC-97
USER3            94152F9F5B35B10    OPEN                                            12-FEB-98
6 rows selected.

Xem thông tin profile của mật khẩu
SVRMGR> SELECT * FROM dba_profiles
2>WHERE resource_type='PASSWORD';
PROFILE                       RESOURCE_NAME                      LIMIT
---------------                    ------------------------                          ---------------
DEFAULT                     FAILED_LOGIN_ATTEMPTS      3
DEVELOPER_PROF   FAILED_LOGIN_ATTEMPTS      DEFAULT
DEFAULT                     PASSWORD_LIFE_TIME             60
DEVELOPER_PROF   PASSWORD_LIFE_TIME             DEFAULT
DEFAULT                     PASSWORD_REUSE_TIME        1800
DEVELOPER_PROF   PASSWORD_REUSE_IME           DEFAULT
DEFAULT                     PASSWORD_REUSE_MAX         UNLIMITED
DEVELOPER_PROF   PASSWORD_REUSE_MAX         DEFAULT
DEFAULT                     PASSWORD_VERIFY_FUNCTION        VERIFY_FUNCTION
DEVELOPER_PROF   PASSWORD_VERIFY_FUNCTION        DEFAULT
DEFAULT                     PASSWORD_LOCK_TIME          .0006
DEVELOPER_PROF   PASSWORD_LOCK_TIME          DEFAULT
DEFAULT                     PASSWORD_GRACE_TIME        10
DEVELOPER_PROF   PASSWORD_GRACE_TIME        DEFAULT
14 rows selected.

---------------------------
* Dữ liệu trong thời đại 4.0 là "TRÁI TIM" của doanh nghiệp. Quản trị cơ sở dữ liệu (Database Administration - DBA) là ngành có lương cao nhất trong ngành IT và đầy tiềm năng trong thời đại 4.0. Oracle là cơ sở dữ liệu hàng đầu trên thế giới và được rất nhiều doanh nghiệp lớn trên thế giới và Việt Nam sử dụng.

* Bạn có mong muốn từng bước trở thành chuyên gia DBA không? Nếu câu trả lời là CÓ thì hãy nhanh chóng đăng ký sở hữu trọn đời khóa học online "Quản trị cơ sở dữ liệu cơ bản" của tôi tại Unica (bạn có thể xem trên điện thoại, máy tính bảng, PC vào bất kỳ lúc nào chỉ cần có mạng Internet). Hiện tại tôi đang khuyến mại cho 100 bạn đăng ký đầu tiên giảm giá từ 2400K còn 799K, CAM KẾT HOÀN TIỀN 100% nếu học xong không có kết quả:

- Môn 1: Quản trị Oracle 12 cơ bản, giảm giá 70% HÔM NAY cho 100 bạn đầu tiên từ 2tr4 còn 799K theo link:  https://bit.ly/3d2ofqZ (khoá này học ở Oracle hãng là 1.500$), chuyển khoản còn 699K

- Môn 2: Quản trị Linux trong 21h, cũng giảm giá 70% HÔM NAY  cho 100 bạn đầu tiên từ 2tr4 còn 799K theo link: https://bit.ly/3e7gwJw, chuyển khoản còn 699K

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master