Mục tiêu đặt ra khi thực hiện đề tài: - Hiểu rõ các cơ chế an toàn trong oracle như xác thực, mã hóa dữ liệu, ủy quyền, kiểm toán … - Minh họa các bước triển khai các tính năng và công cụ bảo mật của Oracle 21c thông qua các kịch bản cụ thể, tương ứng với các cơ chế an toàn.Mục tiêu đặt ra khi thực hiện đề tài: - Hiểu rõ các cơ chế an toàn trong oracle như xác thực, mã hóa dữ liệu, ủy quyền, kiểm toán … - Minh họa các bước triển khai các tính năng và công cụ bảo mật của Oracle 21c thông qua các kịch bản cụ thể, tương ứng với các cơ chế an toàn.
Mục tiêu thực hiện đề tài
Tên đề tài: “Tìm hiểu các cơ chế an toàn cơ bản trong Oracle 21c”
Mục tiêu đặt ra khi thực hiện đề tài:
- Hiểu rõ các cơ chế an toàn trong oracle như xác thực, mã hóa dữ liệu, ủy quyền, kiểm toán …
- Minh họa các bước triển khai các tính năng và công cụ bảo mật của Oracle 21c thông qua các kịch bản cụ thể, tương ứng với các cơ chế an toàn
TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU ORACLE 21C VÀ CÁC CƠ CHẾ AN TOÀN
Giới thiệu về Oracle 21c
Hệ quản trị cơ sở dữ liệu Oracle, thường được gọi là Oracle Database hoặc Oracle RDBMS, là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) được phát triển bởi Oracle Corporation Đây là một trong những hệ quản trị cơ sở dữ liệu phổ biến và mạnh mẽ nhất trên thị trường
Oracle Database cung cấp một nền tảng để lưu trữ, quản lý và truy vấn dữ liệu Hệ thống này sử dụng ngôn ngữ truy vấn SQL (Structured Query Language) để tương tác với cơ sở dữ liệu
1.1.2 Kiến trúc của Oracle Database
Tương tự như nhiều hệ quản trị cơ sở dữ liệu quan hệ phổ biến khác, Oracle Database cũng được xây dựng dựa trên ngôn ngữ truy vấn SQL, tiêu chuẩn hóa cho việc quản lý và truy vấn dữ liệu trên máy chủ một cách hiệu quả Đặc biệt, Oracle đã áp dụng công nghệ PL/SQL, một phần mở rộng của SQL, để phát triển các tính năng độc quyền cho ngôn ngữ truy vấn này Bên cạnh đó, Oracle Database còn hỗ trợ lập trình bằng Java và cho phép sử dụng các ngôn ngữ và chương trình khác
Không khác các nền tảng cơ sở dữ liệu khác, Oracle Database kết nối các phần tử dữ liệu thông qua cấu trúc bảng, tạo ra các lưu trữ khác nhau để hỗ trợ việc xử lý dữ liệu một cách dễ dàng
Các mô hình kiến trúc của công nghệ này bao gồm một tập hợp các ràng buộc ACID, nhằm đảm bảo độ chính xác và độ tin cậy của dữ liệu Nguyên tắc ACID bao gồm độ nguyên tử, tính thống nhất, tính độc lập và độ bền của dữ liệu
Kiến trúc của Oracle Database thể hiện qua các phần sau:
• Cấu trúc lưu trữ vật lý: Các tệp dữ liệu, tệp điều khiển chứa thông tin quản lý cơ sở dữ liệu, và các tệp nhật ký để ghi lại các thay đổi dữ liệu Mỗi cơ sở dữ liệu và phiên bản của nó sẽ quản lý các tệp này
• Cấu trúc lưu trữ logic: Bao gồm khối dữ liệu, một tập hợp các khối liền kề, extents (nhóm khối liền kề), phân đoạn (nhóm extents) và không gian bảng (lưu trữ phân đoạn)
Mỗi phiên bản của Oracle Database được tạo dựng trên nền một bộ nhớ cache được gọi là System Global Area (SGA) chứa nhóm các bộ nhớ chia sẻ Các phiên bản cũng bao gồm các tiến trình chạy ngầm để quản lý I/O và giám sát hoạt động cơ sở dữ liệu, với mục tiêu tối ưu hoá hiệu suất và độ tin cậy
Trong mô hình tương tác của Oracle, các tiến trình máy khách kết nối với phiên bản cơ sở dữ liệu thích hợp để thực thi mã ứng dụng Các tiến trình máy chủ, được kết nối với vùng bộ nhớ riêng biệt gọi là khu vực chương trình chung (khác với SGA), quản lý tương tác giữa các tiến trình máy khách và cơ sở dữ liệu
Phiên bản mới nhất của cơ sở dữ liệu phổ biến nhất thế giới, Oracle Database 21c, được phát hành theo tiêu chí ưu tiên cho điện toán đám mây – “cloud first”
Phiên bản chạy trên nền tảng Cloud của Oracle được ra mắt vào Tháng Mười Hai 2020, và bản hoạt động trên máy chủ on-premise được phát hành muộn hơn, vào tháng 8 năm 2021
Oracle đã nhất quán áp dụng phương pháp lưu trữ và quản lý dữ liệu trong một CSDL hội tụ, thay vì chia nhỏ thành nhiều thành phần chức năng đơn dụng Hay nói cách khác, CSDL hội tụ của Oracle là CSDL đa mô hình (multi-model), phục vụ nhiều đối tượng (multi-tenant) và nhiều loại công việc khác nhau (multi-workload)
Cơ sở dữ liệu Oracle hỗ trợ đầy đủ nhiều mô hình dữ liệu và phương pháp truy cập, đơn giản hóa việc hợp nhất trong khi đảm bảo tính cô lập và vượt trội trong các trường hợp sử dụng khối lượng công việc cơ sở dữ liệu điển hình – cả hoạt động và phân tích
Dưới đây là một số tính năng mới của CSDL Oracle phiên bản 21c
• Kiểu dữ liệu Native JSON: Thực thi JavaScript bên trong Oracle Database
• Cải tiến tính năng CSDL trên bộ nhớ (In-Memory)
Các cơ chế an toàn trong an toàn thông tin
Các cơ chế an toàn trong an toàn thông tin là các phương pháp và kỹ thuật được sử dụng để bảo vệ thông tin khỏi các mối đe dọa bảo mật Các cơ chế này bao gồm:
• Mã hóa: Mã hóa là quá trình biến đổi thông tin ban đầu thành dạng mã hóa, đảm bảo tính bảo mật của thông tin khi truyền qua các kênh mạng Có nhiều phương pháp mã hóa như mã hóa đối xứng, mã hóa bất đối xứng và mã hóa mã nguồn mở
• Xác thực: Xác thực là quá trình xác định tính hợp lệ của một người dùng, một thiết bị hay một ứng dụng Các kỹ thuật xác thực bao gồm xác thực bằng mật khẩu, xác thực bằng vân tay, xác thực bằng thẻ, xác thực bằng chứng chỉ, ……
• Phân quyền: Phân quyền là quá trình xác định quyền truy cập cho các người dùng đến các tài nguyên khác nhau trên hệ thống quyền truy cập được cấp phép dựa trên vai trò của người dùng hoặc các nhóm người dùng
• Quản lý rủi ro: Quản lý rủi ro là quá trình đánh giá và quản lý các rủi ro bảo mật trong hệ thống thông tin Các biện pháp quản lý rủi ro bao gồm đánh giá rủi ro, phân loại và ưu tiên các rủi ro, áp dụng các biện phòng ngừa và giảm thiểu rủi roi
• Kiểm soát truy cập: Kiểm soát truy cập là quá trình kiểm soát việc truy cập của vào các tài nguyên hệ thống thông tin, đảm bảo rằng chỉ có những người dùng được phép truy cập vào các tài nguyên đó
CÁC CƠ CHẾ AN TOÀN TRONG ORACLE 21C
Cơ chế xác thực
Xác thực là quá trình xác nhận định danh của các cá nhân hay ứng dụng có yêu cầu truy cập tới một môi trường an toàn Việc xác nhận định danh này được hoàn thành bằng cách thẩm tra đăng nhập và các chứng nhận (credential) được tạo trong cùng một môi trường
2.1.1 Cơ chế xác thực bởi hệ điều hành
Xác thực bởi hệ điều hành có nghĩa là nếu có thể đăng nhập vào máy chủ cơ sở dữ liệu thông qua một tài khoản hệ điều hành được ủy quyền, người dùng sẽ được phép kết nối vào cơ sở dữ liệu mà không cần yêu cầu mật khẩu bổ sung Một ví dụ đơn giản minh họa khái niệm này
Ví dụ về xác thực bởi hệ điều hành
1 Hiển thị các nhóm OS mà người dùng Oracle thuộc về Sử dụng lệnh id để hiển thị các nhóm hệ điều hành mà người dùng oracle thuộc về
$ id uidP0(oracle) gidP6(oinstall) groupsP6(oinstall), 507(dba),508(oper)
2 Kết nối vào cơ sở dữ liệu với quyền SYSDBA, sử dụng tên người dùng và mật khẩu không hợp lệ Lệnh dưới đây cố tình sử dụng tên người dùng và mật khẩu không hợp lệ
$ sqlplus bad/notgood as sysdba
3 Xác minh rằng kết nối đã được thiết lập với quyền SYS Dùng lệnh show user để kiểm tra người dùng hiện tại
SYS@orcl> show user USER is "SYS"
Ví dụ trên cho thấy dù nhập tên người dùng và mật khẩu không hợp lệ thì người dùng vẫn có thể kết nối đến Oracle Kết nối này hoạt động vì Oracle bỏ qua tên người dùng/mật khẩu được cung cấp, do người dùng đã được xác thực trước đó qua hệ điều hành Trong ví dụ này, người dùng OS oracle thuộc nhóm OS dba, do
5 đó được phép kết nối cục bộ vào cơ sở dữ liệu với quyền SYSDBA mà không cần cung cấp tên người dùng và mật khẩu chính xác
2.1.2 Cơ chế xác thực bởi database
Oracle có thể xác thực người dùng đang cố gắng kết nối với cơ sở dữ liệu bằng cách sử dụng thông tin được lưu trữ trong cơ sở dữ liệu đó Để thiết lập Oracle sử dụng xác thực cơ sở dữ liệu, mỗi người dùng mới được tạo một mật khẩu để sử dụng trong quá trình thiết lập kết nối đến database Quá trình này ngăn chặn việc sử dụng cơ sở dữ liệu trái phép vì kết nối sẽ bị từ chối nếu người dùng cung cấp mật khẩu không chính xác Oracle lưu trữ mật khẩu của người dùng trong từ điển dữ liệu (data dictionary) ở dạng được mã hóa để ngăn chặn sự thay đổi trái phép, nhưng người dùng có thể thay đổi mật khẩu của mình bất kỳ lúc nào Để thiết lập giao thức xác thực khác được máy khách hoặc cơ sở dữ liệu cho phép, DBA có thể điều chỉnh tham số SQLNET.ALLOWED_LOGON_VERSION trong tệp sqlnet.ora của máy chủ Sau đó, mỗi lần thực hiện kết nối, nếu máy khách hoặc máy chủ không đáp ứng phiên bản tối thiểu do đối tác chỉ định thì quá trình xác thực sẽ không thành công với lỗi ORA-28040 Tham số này có thể lấy các giá trị là 10, 9 hoặc 8, đại diện cho các phiên bản máy chủ cơ sở dữ liệu Oracle khuyến nghị giá trị 10
Cơ chế này tương ứng với các tài khoản được tạo bằng lệnh CREATE USER
Mật khẩu của mỗi user sẽ được Oracle server lưu trữ ngay trong data dictionary và nó có thể kiểm tra rất dễ dàng mỗi khi User kết nối đến database
CREAT USER user IDENTIFIED BY password [PASSWORD EXPIRE] [ACCOUNT {LOCK | UNLOCK}]
User Tên truy nhập của User
Xác định cơ chế xác thực user bởi database với mật khẩu truy nhập là password (password không phân biệt hoa thường)
Bắt buộc user phải chỉ rõ mật khẩu mỗi khi user thực hiện kết nối tới database thông qua SQL*PLUS
Sử dụng tùy chọn này để lock/ unlock đối với mỗi user một cách tường minh ( mặc định là UNLOCK)
Bảng 2 1 Thông số khi tạo user với cơ chế xác nhận bởi database Lưu ý: Khi thiết lập tùy chọn PASSWORD EXPIRE trong lệnh tạo user, khi user sử dụng SQL*PLUS để kết nối tới database, mỗi lần kết nối user lại phải nạp mới mật khẩu Việc truy cập thường sẽ nhận được thông báo:
ORA-28001: the password has expired Changing password for new_user Old password:
2.1.3 Cơ chế xác thực bởi mạng hoặc bên thứ ba
Oracle cung cấp các giao diện (được gọi là adapters) cho một loạt các dịch vụ bảo mật của bên thứ ba để xác thực người dùng Có thể cấu hình các dịch vụ này để người dùng chỉ cần sử dụng một mật khẩu duy nhất để kết nối với bất kỳ cơ sở dữ liệu nào trong mạng của người dùng Kiến trúc đăng nhập một lần (single sign-on) hoạt động bằng cách lưu trữ thông tin tên người dùng và mật khẩu trong cơ sở dữ liệu hoặc hệ thống tệp nằm trên một máy chủ duy nhất, được gọi là máy chủ xác thực
Các dịch vụ xác thực hỗ trợ bao gồm:
Kiến Trúc Máy Chủ Xác Thực
Máy chủ xác thực hoạt động như một trung gian giữa các máy tính khách và máy chủ cơ sở dữ liệu, như mô tả trong hình dưới:
Hình 2 1 Minh họa máy chủ xác thực
1 Khi một người dùng trên máy khách khởi tạo kết nối cơ sở dữ liệu, máy khách sẽ yêu cầu thông tin xác thực từ máy chủ xác thực Thông tin này thường ở dạng một khóa được mã hóa
2 Máy chủ xác thực xác minh máy khách và gửi lại thông tin xác thực cần thiết
3 Máy khách thực hiện yêu cầu kết nối tới máy chủ cơ sở dữ liệu, sử dụng thông tin xác thực nhận được từ máy chủ xác thực
4 Máy chủ cơ sở dữ liệu gửi thông tin xác thực tới máy chủ xác thực để xác thực
8 5 Máy chủ xác thực gửi xác nhận lại cho máy chủ cơ sở dữ liệu, sau đó máy chủ cơ sở dữ liệu chấp nhận yêu cầu kết nối Ưu điểm
• Máy chủ xác thực lưu trữ mật khẩu được quản lý tập trung, và việc truy cập có thể (và nên) được giới hạn cực kỳ Không cho phép đăng nhập tương tác
• Mật khẩu không bao giờ di chuyển qua mạng; thay vào đó, chúng được sử dụng như một khóa để mã hóa và giải mã thông tin trong quá trình đăng nhập
• Người dùng có thể sử dụng cùng một mật khẩu cho mọi cơ sở dữ liệu mà họ truy cập, với ít rủi ro rằng mật khẩu này bị xâm phạm
• Bên cạnh việc liên kết mật khẩu với người dùng, cũng có thể liên kết tên người dùng với máy khách để một người dùng cụ thể chỉ có thể kết nối từ một máy khách cụ thể.
Cơ chế mã hóa dữ liệu
TDE (Transparent Data Encryption) là tính năng mã hóa dữ liệu trong suốt của Oracle Database Nó cho phép người dùng mã hóa dữ liệu nhạy cảm được lưu trữ trong bảng, tablespace hoặc toàn bộ database để đảm bảo an toàn dữ liệu ngay cả khi phương tiện lưu trữ bị đánh cắp hoặc bị truy cập trái phép Sau khi dữ liệu được mã hóa, dữ liệu này sẽ được giải mã một cách minh bạch cho người dùng hoặc ứng dụng được ủy quyền khi họ truy cập dữ liệu TDE giúp bảo vệ dữ liệu được lưu trữ trên phương tiện (còn gọi là dữ liệu ở trạng thái nghỉ) trong trường hợp phương tiện lưu trữ hoặc tệp dữ liệu bị đánh cắp Ngoài ra, để ngăn chặn việc giải mã trái phép, TDE lưu trữ các khóa mã hóa trong mô-đun bảo mật bên ngoài cơ sở dữ liệu, được gọi là keystore (kho khóa)
Những điểm cần lưu ý khi sử dụng TDE:
• TDE chỉ mã hóa dữ liệu ở mức File, dữ liệu khi lưu trong File sẽ ở dạng mã hóa Cách này giúp File dữ liệu bị đánh cắp nếu không có khóa thì không xem được
• Người dùng có quyền truy cập, ví dụ quyền SELECT đến dữ liệu thì mặc nhiên sẽ nhìn thấy dữ liệu ở dạng bản rõ
• Khóa mã hóa dữ liệu (Data Encryption Key – DEK): TDE sử dụng một khóa DEK để mã hóa và giải mã dữ liệu Khóa DEK này được lưu trữ riêng biệt với dữ liệu được mã hóa
• Khóa chính (Master Key): Khóa DEK được mã hóa bằng một khóa chính (Master Key) được lưu trữ an toàn trong Oracle Wallet
• Truy cập dữ liệu: Khi người dùng hoặc ứng dụng được cấp quyền truy cập dữ liệu, Oracle Database sử dụng Master Key để giải mã khóa DEK và sau đó sử dụng khóa DEK được giải mã để giải mã dữ liệu
2.2.2 Các loại mã hóa TDE
Mã hóa cột TDE được sử dụng để bảo vệ dữ liệu nhạy cảm, chẳng hạn như thẻ tín dụng và số an sinh xã hội, được lưu trữ trong các cột của bảng Loại mã hóa này sử dụng kiến trúc dựa trên khóa hai tầng để mã hóa và giải mã các cột bảng nhạy cảm Trong đó, khóa mã hóa chính (Master encryption key) được sử dụng để mã hóa và giải mã dữ liệu trong cột của bảng Khóa mã hóa chính được lưu trữ trong một mô-đun an toàn bên ngoài, có thể là ví (Wallet) hoặc Oracle Key Vault,
Hình 2 2 Quá trình mã hóa cột TDE
10 Việc lưu trữ theo cách này sẽ ngăn việc sử dụng trái phép các khóa mật và tách biệt các chức năng chương trình thông thường khỏi các hoạt động mã hóa, giúp phân chia nhiệm vụ giữa người quản trị CSDL và quản trị an toàn, tăng cường khả năng bảo mật Mỗi bảng chứa cột mã hóa có một khóa bảng duy nhất, mỗi khóa bảng được mã hóa riêng bằng Master Key và được lưu trữ dưới dạng bản mã
Mã hóa không gian bảng TDE cho phép mã hóa toàn bộ vùng bảng Tất cả các đối tượng được tạo trong tablespace sẽ được mã hóa tự động Mã hóa tablespace TDE rất hữu ích nếu trong trường hợp muốn bảo vệ dữ liệu nhạy cảm trong các bảng
Trường hợp này, không cần thực hiện phân tích chi tiết từng cột trong bảng để xác định các cột cần mã hóa Ngoài ra, mã hóa tablespace TDE tận dụng mã hóa hàng loạt và bộ đệm để cung cấp hiệu suất nâng cao Mặc dù tác động hiệu suất thực tế trên các ứng dụng có thể khác nhau, nhưng chi phí hiệu năng được ước tính trong khoảng từ 5% đến 8%
Hình 2 3 Quá trình mã hóa tablespace Mã hóa tablespace TDE mã hóa tất cả dữ liệu trong một vùng bảng, việc này có thể thay thế cho mã hóa cột nếu cần mã hóa nhiều cột trong một bảng Loại mã hóa này mã hóa tất cả dữ liệu được lưu trữ trong một vùng bảng và dữ liệu làm lại (redo) tương ứng của nó Mã hóa không gian bảng TDE không mã hóa dữ liệu được
11 lưu trữ bên ngoài vùng bảng Ví dụ, dữ liệu BFILE không được mã hóa vì nó được lưu trữ bên ngoài CSDL Nếu tạo một bảng có cột BFILE trong không gian bảng được mã hóa, thì cột cụ thể này sẽ không được mã hóa
Tất cả dữ liệu trong một vùng bảng được mã hóa sẽ được lưu trữ ở định dạng mã hóa trên đĩa Dữ liệu được giải mã trong suốt cho người dùng được ủy quyền có các đặc quyền cần thiết để được xem hoặc sửa đổi dữ liệu Người dùng hoặc ứng dụng CSDL không cần biết liệu dữ liệu trong một bảng cụ thể có được mã hóa trên đĩa hay không Trong trường hợp các tệp dữ liệu trên đĩa hoặc phương tiện sao lưu bị đánh cắp, dữ liệu sẽ không bị xâm phạm
Mã hóa tablespace TDE sử dụng kiến trúc hai tầng, dựa trên khóa để mã hóa trong suốt và giải mã không gian bảng Khóa chính TDE cũng có chức năng và cách thức lưu trữ như mã hóa cột TDE Mã hóa tablespace TDE cũng cho phép phạm vi chỉ mục quét dữ liệu trong không gian bảng được mã hóa Điều này là không thể với mã hóa cột TDE
Lưu ý, dữ liệu mã hóa được bảo vệ trong các hoạt động như JOIN và SORT Điều này có nghĩa là dữ liệu được an toàn khi nó được di chuyển đến các vùng bảng tạm thời Dữ liệu trong nhật ký hoàn tác (undo) và làm lại (redo) cũng được bảo vệ
2.2.3 Các thuật toán mã hóa và toàn vẹn được hỗ trợ
Các khóa mật mã Tiêu chuẩn mã hóa nâng cao (Advanced Encryption
Standard cipher key) được hỗ trợ, bao gồm các khóa mã hóa tablespace và cơ sở dữ liệu, có thể dài 128, 192 hoặc 256 bit Mã hóa tablespace và cơ sở dữ liệu sử dụng khóa mật mã có độ dài 128 bit Đối với mã hóa cột TDE, theo mặc định, salt được thêm vào văn bản gốc trước khi mã hóa Không thể thêm salt vào các cột được lập chỉ mục mà muốn mã hóa Đối với các cột được lập chỉ mục, hãy chọn tham số NO SALT cho mệnh đề SQL
ENCRYPT Đối với mã hóa tablespace và mã hóa cơ sở dữ liệu TDE, mặc định là sử dụng Tiêu chuẩn mã hóa nâng cao với khóa mật mã có độ dài 128 bit (AES128) Theo
12 mặc định, mã hóa cột TDE sử dụng Tiêu chuẩn mã hóa nâng cao (AES) với khóa mật mã có độ dài 192 bit (AES192)
Cơ chế ủy quyền
Sau khi hệ thống đã xác thực danh tính hay đăng nhập của người dùng, một tập các điều khoản được đưa ra nhằm xác định xem đối tượng có được phép truy cập vào cơ sở dữ liệu hay không Ủy quyền (Authorization) trong hệ quản trị cơ sở dữ liệu (DBMS) là quá trình xác định và quản lý quyền truy cập của người dùng đối với các tài nguyên dữ liệu trong cơ sở dữ liệu Các quyền này thường dựa trên vai trò, thuộc tính của người dùng hoặc các tiêu chí khác do các chính sách bảo mật của tổ chức xác định Điều này đảm bảo rằng chỉ những người dùng hoặc hệ thống được phép mới có thể thực hiện các hành động như truy vấn, thêm, sửa đổi, hoặc xóa dữ liệu Nó đóng vai trò quan trọng trong việc bảo vệ dữ liệu nhạy cảm, duy trì tính toàn vẹn của hệ thống và đảm bảo trách nhiệm của người dùng
Cơ chế uỷ quyền trong Oracle 21c
❖ Tạo và quản lý tài khoản người dùng
• Tạo tài khoản người dùng Mỗi tài khoản người dùng có một tên duy nhất, một phương thức xác thực, một tablespace mặc định, một tablespace chứa dữ liệu tạm thời (temp), một profile, một nhóm người dùng khởi tạo (được quản lý bởi Resource Manager), và trạng thái tài khoản
Một schema gồm tập các đối tượng mà người dùng sở hữu, có tên trùng với tài khoản người dùng Trong Oracle Database, khi tạo tài khoản người dùng, sử dụng câu lệnh CREATE USER Theo mặc định, một người dùng mới được tạo không có bất kỳ quyền nào trong cơ sở dữ liệu
Ví dụ: tạo một tài khoản tên “username” với mật khẩu “password”:
CREATE USER username IDENTIFIED BY password;
• Loại bỏ tài khoản người dùng Để loại bỏ tài khoản người dùng trong Oracle Database 21c, có thể sử dụng câu lệnh
- Việc xóa tài khoản người dùng sẽ xóa tất cả các đối tượng được sở hữu bởi người dùng đó, bao gồm bảng, view, procedure, function, package,
- Nếu người dùng sở hữu các đối tượng được sử dụng bởi người dùng khác, cần phải chuyển quyền sở hữu cho người dùng khác trước khi xóa tài khoản
- Việc xóa tài khoản người dùng là thao tác không thể đảo ngược Phải đảm bảo đã sao lưu dữ liệu cần thiết trước khi thực hiện thao tác này
- Ngoài ra, có thể sử dụng tùy chọn CASCADE để tự động xóa các đối tượng được sở hữu bởi người dùng Tùy chọn CASCADE sẽ xóa tất cả các bảng, view, procedure, function, package, được sở hữu bởi người dùng mà không cần phải chuyển quyền sở hữu cho người dùng khác trước Để xóa tài khoản người dùng mà không xóa các đối tượng được sở hữu, sử dụng tùy chọn RESTRICT Tùy chọn RESTRICT sẽ ngăn chặn việc xóa tài khoản người dùng nếu người dùng sở hữu các đối tượng mà chưa được chuyển quyền sở hữu cho người dùng khác
Hệ thống ủy quyền trong Oracle Database 21c đóng vai trò quan trọng trong việc kiểm soát quyền truy cập dữ liệu và chức năng của người dùng Việc cấp quyền cho phép quản trị viên xác định ai có thể truy cập dữ liệu nào, thực hiện hành động nào và truy cập dữ liệu đó như thế nào Để cấp đặc quyền cho người dùng, có thể sử dụng câu lệnh GRANT Cú pháp cơ bản như sau:
GRANT privileges ON object TO [user | role];
14 privileges: Quyền được cấp, ví dụ như SELECT, INSERT, UPDATE,
DELETE, CREATE, DROP object: Đối tượng mà quyền được cấp, ví dụ như bảng, view, procedure, function user | role: Tên người dùng hoặc nhóm người dùng được cấp quyền
Có hai loại đặc quyền chính trong Oracle Database:
- Đặc quyền hệ thống: Cho phép người dùng thực hiện các hành động quản trị, chẳng hạn như tạo và xóa bảng, cấp quyền cho người dùng khác,
- Đặc quyền đối tượng: Cho phép người dùng truy cập và thao tác với các đối tượng cụ thể trong cơ sở dữ liệu, chẳng hạn như bảng, khung nhìn, thủ tục, hàm, gói tin,
Ngoài ra, có thể sử dụng các tùy chọn bổ sung để tinh chỉnh cách thức gán quyền:
- WITH GRANT OPTION: Cho phép người dùng nhận quyền cấp lại quyền cho người dùng khác
- WITHOUT GRANT OPTION: Loại bỏ quyền cấp lại khỏi quyền được cấp
- WITH ADMIN OPTION: Cho phép người dùng được cấp quyền này có thể thay đổi quyền của người dùng khác
- AS [user]: Cho phép người dùng thực hiện hành động với tư cách là người dùng khác
- TO PUBLIC: Gán quyền cho tất cả người dùng trong cơ sở dữ liệu
Trong Oracle Database 21c, để thu hồi các đặc quyền đã được cấp trước đó cho người dùng hoặc nhóm người dùng, sử dụng câu lệnh REVOKE Cấu trúc cơ bản của câu lệnh REVOKE:
REVOKE privileges ON object FROM [user | role];
Trong đó: privileges: Đặc quyền mà bạn muốn thu hồi object: Tên của đối tượng mà bạn muốn thu hồi quyền user | role: Tên của người dùng hoặc nhóm người dùng mà bạn muốn thu hồi quyền
15 Ví dụ: để thu hồi tất cả các quyền cho bảng “table” của nhóm “usergroup”:
REVOKE SELECT, INSERT, UPDATE, DELETE ON table FROM usergroup;
Ngoài ra, có thể sử dụng các tùy chọn bổ sung ở cuối câu lệnh để tinh chỉnh hành vi của câu lệnh REVOKE:
- CASCADE: Thu hồi quyền theo cấp số nhân cho các đối tượng con
- GRANT OPTION: Thu hồi quyền cấp lại cho các đối tượng con
- ALL: Thu hồi tất cả các đặc quyền đã được cấp cho đối tượng
- Cần có đặc quyền ADMIN hoặc có quyền thực hiện REVOKE để có thể thu hồi quyền từ người dùng khác
- Người dùng chỉ có thể thu hồi quyền mà họ được ủy quyền
- Việc thu hồi quyền có thể ảnh hưởng đến khả năng hoạt động của người dùng hoặc nhóm người dùng Nên cân nhắc kỹ lưỡng trước khi thu hồi quyền
- Nên sử dụng câu lệnh REVOKE một cách cẩn thận và chỉ thu hồi những quyền không cần thiết nữa
Ngoài câu lệnh REVOKE, có thể sử dụng DENY để ngăn người dùng thực hiện các hành động cụ thể trên đối tượng Phương pháp này không trực tiếp từ chối việc cấp quyền, nó không linh hoạt như các phương pháp khác và có thể dẫn đến các lỗi truy cập không mong muốn
Ví dụ: để từ chối cấp quyền cho “username” được chèn với đối tượng “bảng”:
DENY INSERT ON table TO username;
Oracle cung cấp công cụ cho phép quản lý một cách dễ dàng các quyền thông qua việc sử dụng vai trò (Roles)
• Các vai trò có thể được tạo ra bằng việc sử dụng câu lệnh theo cú pháp:
CREATE ROLE role_name [NOT IDENTIFIED | IDENTIFIED {BY password | EXTERNALLY }]
16 role_name: tên của vai trò NOT IDENTIFIED: chỉ định không cần kiểm tra vai trò khi enable vai trò BY password: mật khẩu người dùng cần cung cấp khi enable vai trò EXTERNALLY: chỉ định user phải được xác lập bởi dịch vụ bên ngoài (như hệ điều hành hay dịch vụ bên thứ ba) trước khi enable vai trò
• Để sửa lại vai trò đã tồn tại, sử dụng cú pháp:
ALTER ROLE role_name {NOT IDENTIFIED | IDENTIFIED {BY password | EXTERNALLY }};
• Khi đã có sẵn vai trò, có thể gán quyền cho người dùng qua các vai trò đó qua cú pháp:
GRANT role_name TO {user|role|PUBLIC} [WITH ADMIN OPTION]
Với: role_name: tên của chức danh gán user: tên của user được gán chức danh role: tên của chức danh được gán PUBLIC: chỉ định gán chức danh cho tất cả các user WITH ADMIN OPTION: cho phép user được gán chức danh có thể gán chức danh cho user khác User tạo chức danh được mặc định gán tuỳ chọn WITH ADMIN
Thông tin về các chức danh được lấy trong data dictionary Có rất nhiều tables và views chứa thông tin về các quyền được gán cho người dùng
DBA_ROLES Tất cả các chức danh trong database
DBA_ROLE_PRIVS Các chức danh đã được gán quyền cho user hay chức danh khác ROLE_PRIVS Các chức danh đã được gán quyền cho chức danh khác DBA_SYS_PRIVS Quyền hệ thống gán cho user hay chức danh
17 ROLE_SYS_PRIVS Quyền hệ thống gán cho chức danh ROLE_TAB_PRIVS Quyền trên table được gán cho chức danh
SESSION_ROLES Các chức danh được phép của user hiện thời
Bảng 2 2 Bảng các chức danh trong data dictionary
Cơ chế kiểm toán
Kiểm toán (auditing) được hiểu là toàn bộ các hoạt động giám sát và ghi lại những gì xảy ra đối với hệ thống công nghệ thông tin Các thông tin được ghi lại có thể là những thay đổi về trạng thái hoạt động của hệ thống hay các tương tác qua lại giữa hệ thống và người dùng
Dựa trên những bản ghi kiểm toán, quản trị viên cơ sở dữ liệu (DBA) sẽ phát hiện kịp thời những tấn công hay lỗ hổng ảnh hưởng đến cơ sở dữ liệu, từ đó ngăn chặn hành vi phá hoại hay xâm phạm của tin tặc, nhanh chóng sửa đổi những bất thường của hệ thống
Có 5 cơ chế kiểm toán cơ bản trong CSDL bao gồm:
• Kiểm toán bắt buộc (Mandatory Auditing): Là các hoạt động kiểm toán mặc định Dù CSDL kiểm toán có được kích hoạt hay không, thì hệ thống vẫn kiểm tra một số hoạt động liên quan đến CSDL và ghi chúng vào tập tin vận hành hệ thống kiểm toán
• Kiểm toán chuẩn (Standard Database Auditing): Đây là thiết lập kiểm toán ở cấp độ hệ thống bằng cách sử dụng những tham số AUDIT_TRAIL Sau khi kích hoạt tính năng này, cần lựa chọn các đối tượng và đặc quyền muốn kiểm toán
• Kiểm toán dựa trên giá trị (Value-based Auditing): Là cơ chế kiểm toán dựa trên kiểm toán chuẩn, tuy nhiên nó còn kiểm toán dựa trên giá trị thực tế đã được đưa vào, cập nhật, hoặc bị xóa
• Kiểm toán mịn (Fine-grained auditing- FGA): cơ chế này được mở rộng từ kiểm toán chuẩn, ghi lại các câu lệnh SQL đã được thực hiện thay vì chỉ những sự kiện đã xảy ra
• Kiểm toán DBA: là cơ chế thực hiện kiểm toán riêng cho các DBA
Các bản ghi kiểm toán (Audit record) bao gồm các thông tin như hoạt động đã được kiểm toán, người dùng thực hiện hoạt động và ngày giờ của hoạt động Các bản ghi kiểm toán có thể được lưu trữ trong một bảng từ điển dữ liệu, gọi là dấu vết kiểm toán cơ sở dữ liệu (Database audit trail), hoặc trong các tệp hệ điều hành, gọi là dấu vết kiểm toán hệ điều hành (Operating system audit trail)
Bảng SYS.AUD$ trong Oracle là một bảng được sử dụng để lưu trữ các bản ghi kiểm toán (audit records) trong cơ sở dữ liệu Để truy cập và xem thông tin từ bảng, ta có thể dùng các view được định nghĩa sẵn như là DBA_AUDIT_TRAIL
Tham số khởi tạo AUDIT_TRAIL trong Oracle Database được sử dụng để bật hoặc tắt tính năng ghi lại các hoạt động kiểm toán (audit) trong cơ sở dữ liệu
Các giá trị của tham số khởi tạo AUDIT_TRAIL trong init.ora:
Giá trị tham số Ý nghĩa
DB (default) Lưu trữ các bản ghi kiểm toán trong bảng từ điển dữ liệu
DB_EXTEND Giống DB và lưu thêm cột SQL Binding và SQL text vào
XML Lưu trữ các bản ghi kiểm toán dưới dạng tệp XML trên hệ điều hành
XML_EXTENDED Giống XML và lưu thêm SQL bind và cột SQL Text
OS Lưu trữ các bản ghi kiểm toán trong các tệp văn bản trên hệ điều hành
NONE Không lưu trữ bản ghi kiểm toán
Bảng 2 3 Các giá trị của tham số AUDIT_TRAIL
2.4.2 Các loại kiểm toán trong Oracle
❖ Statement Auditing (Kiểm toán câu lệnh)
Là kiểm toán những lệnh hoặc nhóm câu lệnh trên từng đối tượng Có thể kiểm toán trên mọi người dùng hoặc trên 1 nhóm người dùng cụ thể hoặc trên Role
19 Các câu lệnh chia thành 2 loại:
❖ DDL (Data Definition Language): ví dụ AUDIT TABLE sẽ kiểm toán mọi lệnh CREATE và DROP liên quan đến Table
❖ DML (Data Manipulation Language): AUDIT SELECT TABLE sẽ kiểm toán mọi lệnh SELECT … FROM Table/View
❖ Privilege auditing (Kiểm toán quyền)
Kiểm toán quyền là việc kiểm toán các câu lệnh sử dụng quyền hệ thống AUDIT SELECT ANY TABLE sẽ kiểm toán mọi lệnh được tạo ra từ người dùng sử dụng quyền SELECT ANY TABLE
Trường hợp cả statement và privilege cùng được kiểm toán thì chỉ một audit record được tạo ra Vì vậy, kiểm toán quyền không xảy ra nếu hành động đã được cho phép bởi các quyền sở hữu
Kiểm toán quyền có độ tập trung hơn kiểm toán câu lệnh vì mỗi tùy chọn kiểm toán quyền chỉ kiểm toán liên quan đến câu lệnh cụ thể, không phải là danh sách các câu lệnh liên quan:
• Statement auditing: AUDIT TABLE CREATE, ALTER, DROP (TABLE) đều được kiểm toán
• Privilege auditing: AUDIT CREATE TABLE Chỉ kiểm toán câu lệnh CREATE (TABLE)
❖ Schema Object Auditing (Kiểm toán đối tượng lược đồ)
Kiểm toán đối tượng lược đồ có thể kiểm toán toàn bộ các câu lệnh SELECT và DML được cho phép bởi quyền đối tượng lược đồ (schema object privileges) như câu lệnh SELECT hoặc DELETE trên một bảng cụ thể Các câu lệnh GRANT và REVOKE điều khiển các quyền này cũng được kiểm toán
Các đối tượng của Schema: Table, View, Procedure, Trigger, Function, Package Privilege auditing có độ ưu tiên thấp hơn Schema object auditing
2.4.3 Các công cụ kiểm toán trong Oracle
20 Dùng câu lệnh AUDIT có thể kiểm toán tất cả các quyền gán cho người dùng hoặc role trong CSDL Bao gồm: các truy cập đọc, ghi và xóa trên các bảng dữ liệu
AUDIT {statement_option | privilege_option} [by user] [by {session|access}]
Trong đó, statement_option và privilege_option là phần bắt buộc, và các phần khác thì không bắt buộc
Trigger được tự động thực thi khi có các sự kiện của hệ thống xảy ra:
• Khởi động hoặc tắt CSDL
• Đăng nhập hoặc đăng xuất
• Tạo, chỉnh sửa hoặc xóa các đối tượng của lược đồ Trigger CSDL:
• Trigger trên các câu lệnh Update, Delete, Insert
• Các trigger CSDL có thể ghi lại các thay đổi ở cấp hàng và cột của bảng dữ liệu
• Các truy cập đọc (SELECT) không thể được ghi lại bằng các trigger CSDL thông thường
❖ Kiểm toán bằng application server log
Virtual Private Database (VPD)
VPD (Oracle Virtual Private Database) là một tính năng mạnh mẽ trong cơ sở dữ liệu Oracle giúp tăng cường bảo mật dữ liệu bằng cách kiểm soát truy cập dữ liệu ở mức hàng và cột
Về cơ bản, khi người dùng gửi một câu lệnh SQL để truy cập một bảng, khung nhìn (view) hoặc từ đồng nghĩa (synonym) được bảo vệ bởi VPD, cơ sở dữ liệu Oracle sẽ tự động sửa đổi câu lệnh đó để thêm vào một mệnh đề WHERE động
Mệnh đề này được tạo ra bởi một hàm thực hiện chính sách bảo mật, gọi là predicate, và nó giới hạn dữ liệu mà người dùng có thể truy cập Việc này diễn ra một cách trong suốt với người dùng, nghĩa là họ không thấy được sự thay đổi của câu lệnh
Oracle Virtual Private Database thực thi bảo mật đến mức độ mịn cao, trực tiếp trên các bảng, khung nhìn, hoặc từ đồng nghĩa của cơ sở dữ liệu Vì khi người dùng đính kèm các chính sách bảo mật trực tiếp vào các đối tượng cơ sở dữ liệu, các chính sách sẽ được áp dụng tự động bất cứ khi nào người dùng truy cập dữ liệu
2.5.2 Các thành phần của VPD
Một chính sách VPD sử dụng một hàm để tạo ra mệnh đề WHERE động và một chính sách để gắn hàm này vào các đối tượng cần bảo vệ
❖ Hàm tạo mệnh đề WHERE động Để tạo ra mệnh đề WHERE động của Oracle Virtual Private Database (VPD),người dùng phải tạo ra một hàm (không phải thủ tục) để xác định các ràng buộc này Hàm này là một hàm với quyền của người định nghĩa (definer's rights)
Oracle Database sẽ tạo ra một predicate (hàm được tạo bởi chính sách bảo mật) được
22 ủy quyền bởi chủ sở hữu nhưng trong cùng phiên làm việc của người dùng hiện tại, sao cho các biến toàn cục PL/SQL được định nghĩa trong hàm sẽ được sử dụng
Hàm sẽ có các đặc điểm sau:
• Có các đối số là một tên schema và tên đối tượng (bảng, view, hoặc synonym) Tham số này giúp hàm xác định đối tượng dữ liệu mà nó cần áp dụng mệnh đề WHERE
• Phải cung cấp một giá trị trả về cho mệnh đề WHERE sẽ được tạo ra Giá trị trả về cho mệnh đề WHERE luôn là kiểu dữ liệu VARCHAR2
• Phải tạo ra một mệnh đề WHERE hợp lệ Mệnh đề WHERE này có thể áp dụng cho mọi người dùng hoặc tùy chỉnh cho từng người dùng, nhóm người dùng hoặc ứng dụng cụ thể
• Hàm có thể tích hợp ngữ cảnh ứng dụng để truy cập thông tin phiên làm việc của người dùng Sử dụng ngữ cảnh ứng dụng giúp tạo ra các chính sách bảo mật mạnh hơn, dựa trên các thuộc tính phiên làm việc như ID người dùng
• Hàm có thể nhúng các cuộc gọi C hoặc Java để truy cập thông tin hệ điều hành hoặc trả về mệnh đề WHERE từ nguồn khác Điều này cung cấp thêm tính linh hoạt và khả năng mở rộng cho hàm tạo mệnh đề WHERE
• Hàm không được phép thực hiện câu lệnh SELECT từ bảng mà chính sách đang áp dụng, điều này ngăn chặn xung đột và đảm bảo tính toàn vẹn của chính sách bảo mật
• Hàm phải là một hàm thuần túy, chỉ dựa vào ngữ cảnh ứng dụng và các đối số được truyền vào hàm
❖ Chính sách được gắn vào đối tượng
Chính sách Oracle Virtual Private Database (VPD) liên kết hàm VPD với bảng, view hoặc từ đồng nghĩa bằng cách sử dụng gói DBMS_RLS Chính sách này được tạo bằng cách sử dụng gói DBMS_RLS Nếu user không phải là người dùng SYS thì phải được cấp quyền EXECUTE để sử dụng gói DBMS_RLS Gói này chứa các thủ tục cho phép người dùng quản lý chính sách và thiết lập kiểm soát truy cập
23 chi tiết Trong quá trình thiết lập, người dùng xác định khi nào chính sách có hiệu lực (ví dụ: khi thực hiện câu lệnh SELECT hoặc UPDATE)
2.5.3 Cấu hình chính sách VPD
Chính sách Oracle Virtual Private Database liên kết hàm VPD với bảng, view hoặc từ đồng nghĩa trong cơ sở dữ liệu Để liên kết hàm này với bảng trong cơ sở dữ liệu, người dùng phải cấu hình một chính sách Oracle Virtual Private Database
TRIỂN KHAI THỰC NGHIỆM
Xác thực mức hệ điều hành
Đầu tiên, tạo một người dùng trên Windows 10
Hình 3 1 Tạo người dùng tại Computer Management Cho phép Oracle xác thực hệ điều hành bằng cách tạo một user trong Oracle, nhưng trước tiên phải kiểm tra giá trị của tham số khởi tạo Oracle
Hình 3 2 Giá trị của tham số os_authent_prefix Tiền tố xác thực hệ điều hành là “OPS$”, tạo người dùng cơ sở dữ liệu để cho phép kết nối được xác thực hệ điều hành Để thực hiện việc này, tiến hành tạo user Oracle theo cách thông thường, nhưng tên user phải là giá trị tiền tố được nối với tên user trong windows 10
Hình 3 3 Tạo user kết hợp với giá trị của tham số os_authent_prefix
27 Thêm dòng cấu hình SQLNET.AUTHENTICATION_SERVICES= (NTS) tại tệp "%ORACLE_HOME%\network\admin\sqlnet.ora" Nó đảm bảo rằng Oracle sử dụng cơ chế bảo mật của Windows để xác thực người dùng
Hình 3 4 Kết quả xác thực mức hệ điều hành
Mã hóa tablespace bằng TDE
• Tạo ví (wallet) Trước khi tạo bảng với với cột mã hóa, phải tạo khóa bí mật lưu trong ví Vào đường dẫn thư mục cài đặt Oracle (C:\Users\lemin\Downloads\app\oracle\admin\orcl21c) và tạo thư mục wallet:
Hình 3 5 Tạo thư mục wallet Mở tập tin sqlnet.ora bằng Notepad và thêm thông tin cấu hình cho thư mục wallet như sau:
28 Hình 3 6 Cấu hình cho thư mục wallet Tiếp theo, đăng nhập bằng sysdba và khởi tạo Master Key bằng lệnh:
ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "lmc";
Kiểm tra trạng thái wallet sau khi tạo
Hình 3 7 Kiểm tra trạng thái wallet
• Tạo tablespace Mã hóa Tablespace bằng mệnh đề ENCRYPTION với một tùy chọn USING để chỉ định thuật toán mã hóa Nếu mệnh đề USING bị bỏ qua, thuật toán mã hóa mặc định là 'AES128' Câu lệnh sau tạo một tablespace được mã hóa bằng cách đặt tên rõ ràng cho thuật toán mã hóa 'AES256' với mệnh đề USING
Hình 3 8 Tạo tablespace encrypted_ts Cột ENCRYPTED của DBA_TABLESPACES và USER_TABLESPACES cho biết tablespace có được mã hóa hay không
29 Hình 3 9 Kiểm tra trạng thái mã hóa của tablespace
• Tạo 1 user và 1 quota cho nó
Hình 3 10 Tạo user test và cấp quyền cho user test Kiểm tra việc mã hóa bằng cách tạo bảng và chèn các bản ghi vào bảng
Hình 3 11 Tạo bảng sinhvien thành công Dữ liệu sau khi chèn ở bảng sinhvien
30 Hình 3 12 Dữ liệu ở bảng sinhvien sau khi thêm Flush buffer cache để đảm bảo dữ liệu được ghi vào datafile
CONN sys/1234 AS SYSDBA ALTER SYSTEM FLUSH BUFFER_CACHE;
Mở file ENCRYPTED_TS01.DBF để kiểm tra thì thấy toàn bộ dữ liệu hiển thị ở dạng mã hóa
Hình 3 13 File encrypted_ts01.dbf sau khi mã hóa tablespace
Ủy quyền
• Kịch bản o Tạo 1 bảng Danhsachsinhvien bằng SYS o Tạo 2 người dùng: USER1 và USER2 o Thực hiện phân quyền bằng lệnh GRANT, REVOKE
31 Tạo một người dùng mới trong SQL Server:
Hình 3 14 Tạo user1 và gán quyền cho user1 Khi chạy câu lệnh SELECT* FROM sys.DanhSachSinhVien, sẽ trả về lỗi :
Hình 3 15 Thực hiện select bằng user1 khi chưa được cấp quyền Người dùng này do chưa được cấp quyền nên không thể thực hiện được câu lệnh select Quay trở lại người dùng SYS, cấp quyền select và update cho USER1:
GRANT SELECT, UPDATE ON DanhSachSinhVien TO user1;
Hình 3 16 Thực hiện select bằng user1 khi đã được cấp quyền Có thể thấy USER1 đã có thể select được thông tin từ bảng Tiếp tục tạo một người dùng mới USER2 tương tự USER1
32 Hình 3 17 Tạo user2 và cấp quyền cho user2 Từ USER1 , cấp quyền select cho người dùng USER2:
Hình 3 18 Cấp quyền select từ user1 cho user2 Có thể thấy do người dùng USER1 không có quyền GRANT nên không thể cấp quyền SELECT cho USER2 Quay trở lại người dùng SYS, cho phép USER1 được GRANT quyền cho user khác conn sys/1234 as sysdba GRANT SELECT, UPDATE ON DanhSachSinhVien TO user1 WITH GRANT OPTION;
Quay lại USER2 và gán lại quyền
Hình 3 19 Cấp quyền cho user2 sau khi được phân lại quyền Gán quyền thành công Như vậy từ USER2 đã có thể SELECT được thông tin từ bảng DanhSachSinhVien
33 Hình 3 20 Kết quả khi thực hiện select bằng user2 Tiếp theo, quay về user SYS, thu hồi quyền đối với USER1
Hình 3 21 Thu hồi quyền của user1 bằng quyền sysdba Người dùng USER1 đã không thể thực thi được câu lệnh select với bảng đã chọn, tương tự với người dùng USER2
34 Hình 3 22 Kết quả lệnh select sau khi thu hồi quyền của 2 user
Kiểm toán đăng nhập, đăng xuất
• Kịch bản o Tạo 2 người dùng: USER1 và USER2 o Thực hiện kiểm toán đăng nhập, đăng xuất với 2 người dùng vừa tạo
• Triển khai Tạo 2 user có tên user1, user2 và gán quyền cho 2 user này
Hình 3 23 USER1 và USER2 sau khi được gán quyền thành công Tạo bảng lưu kết quả kiểm toán
35 Hình 3 24 Bảng lưu kết quả kiểm toán Tạo trigger khi đăng nhập
Hình 3 25 Trigger kiểm toán đăng nhập tạo thành công Tạo trigger khi đăng xuất
36 Hình 3 26 Trigger kiểm toán đăng xuất tạo thành công Thực hiện đăng nhập đăng xuất với user vừa tạo ở trên
Hình 3 27 Thực hiện hành động đăng nhập, đăng xuất với 2 user Kiểm tra kết quả kiểm toán bằng câu lệnh sau: select * from user_login_audit;
Hình 3 28 Kết quả kiểm toán sau khi đăng nhập, đăng xuất
Virtual Private Database (VPD)
3.5.1 Chính sách VPD mức cột
○ Đăng nhập bằng người dùng SCOTT (người dùng này được tạo sẵn trong Oracle)
○ Chỉ cho phép nhân viên thuộc phòng có ID là 20 truy cập cột SAL và
• Triển khai Đăng nhập vào hệ thống với quyền SYSDBA và cấp quyền cho người dùng SCOTT
Hình 3 29 Cấp quyền cho người dùng scott Đăng nhập bằng người dùng SCOTT để tạo một policy hạn chế truy cập vào cột SAL và COMM nếu nhân viên thuộc phòng ban ID 20
Hình 3 30 Tạo policy hạn chế truy cập thành công Áp dụng policy này cho bảng EMP
38 Hình 3 31 Gán policy cho bảng emp thành công Sau khi áp dụng chính sách, chỉ những dòng dữ liệu trong bảng emp mà có giá trị deptno = 20 mới cho phép hiển thị các cột sal và comm Xem kết quả bằng câu truy vấn:
Hình 3 32 Dữ liệu bảng EMP trước khi áp dụng chính sách VPD mức cột
Hình 3 33 Dữ liệu bảng EMP sau khi áp dụng chính sách VPD mức cột
○ Đăng nhập bằng người dùng SCOTT (người dùng này được tạo sẵn trong Oracle)
○ Chỉ cho phép nhân viên thuộc phòng có ID là 20 truy cập cột SAL và
Tương tự như cách tạo chính sách VPD mức cột Khi tạo policy chỉ cần thêm dòng sec_relevant_cols_opt => DBMS_RLS.ALL_ROWS Nghĩa là chính sách sẽ áp dụng cho tất cả các hàng, nhưng các cột nhạy cảm được chỉ định trong sec_relevant_cols sẽ hiển thị giá trị NULL nếu điều kiện của hàm chính sách không thỏa mãn
Hình 3 34 Dữ liệu bảng EMP khi triển khai column masking Tất cả các row được trả về với SAL và COMM là NULL nhưng nếu deptno sẽ hiển thị giá trị cột SAL và COMM