Tải bản đầy đủ (.pdf) (23 trang)

phát triển ứng dụng bảo mật trên oracle

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (599.71 KB, 23 trang )

HỌC VIỆN KỸ THUẬT MẬT MÃ
KHOA CÔNG NGHỆ THÔNG TIN


BÀI TẬP LỚN MÔN AN TOÀN CƠ SỞ DỮ LIỆU
ĐỀ TÀI
PHÁT TRIỂN ỨNG DỤNG BẢO
MẬT TRÊN ORACLE
Giảng viên hướng dẫn : Trần Hồng Lượng
Sinh viên thực hiện :
- Hoàng Đình Vinh
- Ngô Việt Phương
- Cao Thuỳ Anh
- Dương Văn Thăng
Lớp : AT5B



HÀ NỘI 12/2011
HỌC VIỆN KỸ THUẬT MẬT MÃ
KHOA CÔNG NGHỆ THÔNG TIN



BÀI TẬP LỚN MÔN AN TOÀN CƠ SỞ DỮ LIỆU
ĐỀ TÀI
PHÁT TRIỂN ỨNG DỤNG BẢO
MẬT TRÊN ORACLE




MỤC LỤC

I. Xây dựng ứng dụng oracle 5
1. Mục đích sử dụng 5
2. Cách thức xây dựng 5
2.1. Giao diện lập trình ứng dụng 5
2.2. Các phương pháp xây dựng 6
3. Hiệu suất ứng dụng 9
II. Bảo mật ứng dụng và cơ sở dữ liệu 9
1. Những nguy cơ đối với cơ sở dữ liệu 9
2. Biện pháp bảo vệ 10
3. Mã hóa 11
4. Vài nét về cơ chế quản lý khóa 12
4.1. Vị trí lưu trữ khóa 13
4.2. Kiểm soát truy cập khóa 13
5. Sơ lược về kiến trúc của một hệ bảo mật CSDL 14
6. Các vấn đề bảo mật trong phát triển ứng dụng CSDL Oracle 14
6.1. Lựa chọn mô hình phát triển ứng dụng 16
6.2. Quản lý quyền hạn trong ứng dụng 17
III. Demo 18
KẾT LUẬN 23



Phát triển ứng dụng bảo mật trên oracle
4

LỜI NÓI ĐẦU
Thông tin luôn là một tài sản vô giá của doanh nghiệp và cần được bảo vệ
bằng mọi giá. Tuy nhiên, với những đòi hỏi ngày càng gắt gao của môi trường kinh

doanh yêu cầu doanh nghiệp phải năng động chia sẻ thông tin của mình cho nhiều
đối tượng khác nhau qua Internet hay Intranet (mạng “Internet” trong nội bộ doanh
nghiệp). Hầu hết các doanh nghiệp ngày nay đều sử dụng các hệ quản trị cơ sở dữ
liệu (CSDL) để lưu trữ tập trung tất cả các thông tin quý giá của mình. Hiển nhiên
hệ thống này sẽ là tiêu điểm tấn công của những kẻ xấu. Nhẹ thì hệ thống CSDL bị
hoạt động không ổn định, mất mát dữ liệu.Nặng thì các thông tin bí mật bị tiết lộ
và được đem bán cho các doanh nghiệp đối thủ. Tất cả điều đó là những thiệt hại
vô cùng lớn lao. Vì vậy việc bảo vệ thông tin trở nên ngày càng quan trọng và khó
khăn hơn bao giờ hết. Chính vì thế nênvấn đề bảo mật trong database là một trong
những ưu tiên hàng đầu của những người phát triển ứng dụng. Và trong bài tập lớn
này này chúng em sẽ tìm hiểu một số vấn đề căn bản về bảo mật Database trong
việc phát triển ứng dụng.








Phát triển ứng dụng bảo mật trên oracle
5

I. Xây dựng ứng dụng oracle
1. Mục đích sử dụng
Ứng dụng được sử dụng truy cập cơ sở dữ liệu oracle, nhằm xây dựng cho
các công ty, các cửa hàng, siêu thị lớn,… có nhu cầu truy xuất, lưu trữ dữ liệu.
Những ứng dụng này cần đáp ứng được sự an toàn, bảo mật tốt. Có thể sử
dụng cho các nhân viên trong công ty, nâng cao chất lượng phục vụ tới khách hàng
hay tăng tốc độ làm việc cho các nhân viên.

2. Cách thức xây dựng
2.1. Giao diện lập trình ứng dụng
Giao diện lập trình ứng dụng (Application Programming Interface - API) là
sự mô tả cách thức để phần mềm yêu cầu một chương trình khác thực hiện một
dịch vụ nào đó. Dịch vụ này có thể là cấp quyền truy cập dữ liệu hay thực hiện một
chức năng đặc biệt nào đó. API tồn tại trong hầu hết các phần mềm xí nghiệp và là
thành phần quan trọng của hệ điều hành.
Hầu như tất cả các phần mềm đều phải yêu cầu phần mềm khác làm một số
công việc cho chúng. Để làm như vậy, chương trình yêu cầu dùng một tập các lời
yêu cầu đã được chuẩn hoá, được gọi là giao diện lập trình ứng dụng (API). Hầu
như mọi ứng dụng đều dựa vào các API của hệ điều hành để thực hiện những công
việc căn bản như truy cập hệ thống tập tin.
Về bản chất, API của chương trình định ra phương thức thích hợp để nhà
phát triển yêu cầu các dịch vụ của chương trình đó. Các nhà phát triển sẽ đưa ra
yêu cầu bằng cách đưa các lời gọi vào mã chương trình ứng dụng của họ. Cú pháp
của những lời gọi này được mô tả trong các tài liệu của chương trình được gọi.
Phát triển ứng dụng bảo mật trên oracle
6

Bằng cách cung cấp phương tiện để yêu cầu dịch vụ chương trình, API được
gọi là cấp quyền truy cập hay “mở cửa” ứng dụng. Xây dựng ứng dụng không có
API về căn bản cũng như xây nhà không có cửa; API trong mọi mục đích tính toán
là để mở ra cánh cửa và thực hiện việc trao đổi thông tin.
2.2. Các phương pháp xây dựng
2.2.1. Xây dựng dựa trên kết nối qua ODBC

Hình 1 : ODBC API
Những đặc tính: Giao diện này sử dụng một công nghệ chuyển tiếp cung cấp
ODBC truy cập thông qua trình điều khiển ODBC. Là giao diện chuẩn của
Mycrosoft. OBDC API lần lượt thực hiện để có thể tiếp cận với cơ sở dữ liệu thông

qua các trình điều khiển ODBC chuẩn. Máy khách cần phải cài đặt các thư viện
ODBC gốc, trình điều khiển, và các tập tin hỗ trợ cần thiết, và trong hầu hết các
trường hợp, cơ sở dữ liệu của khách hàng là những đoạn mã. Đây sẽ là trình điều
khiển thích hợp cho một mạng doanh nghiệp và khách hàng cài đặt ở đâu không
phải là vấn đề lớn.
Ưu điểm: Giao diện này được viết cho phép truy cập và các cơ sở dữ liệu
khác nhau thông qua việc thực hiện trình điều khiển ODBC. Trong một số trường
Phát triển ứng dụng bảo mật trên oracle
7

hợp, sự lựa chọn duy nhất của khách hàng sẽ là MS Access hoặc Mircosoft SQL
Server cho việc gọi tới ODBC, oracle rất ít sử dụng tới ODBC này.
Nhược điểm: Trình điều khiển loại 1 không hỗ trợ hoàn toàn các ứng dụng
được cài đặt trên máy khách hàng. Các thư viện ODBC và các đoạn mã cơ sở dữ
liệu phải nằm trên máy chủ, do đó nó làm giảm hiệu suất.
2.2.2. Xây dưng dựa trên kết nối qua server proxy


Hình 2 : Giao diện server proxy
Những đặc tính:Đây là một cách thức chuyển đổi từ lời gọi từ giao diện ứng
dụng vào một hệ quản trị cơ sở dữ liệu với một giao thức mạng độc lập, là một lần
nữa chuyển dịch lời gọi tới cơ sở dữ liệu cụ thể bơi một máy chủ ở tầng trung gian.
Cách thức này không yêu cầu bất kỳ cơ sở dữ liệu, thư viện có nguồn gốc cụ thể sẽ
được cài đặt trên máy khách. Trình điều khiển loại 3 hộ trợ các ứng dụng Web, có
thể triển khai tốt trên Internet mà không cần phải cài đặt trên máy client.
Ưu điểm:Loại giao diện này có tính linh hoạt cao, nhất là nó không yêu cầu
bất kỳ phần mềm hoặc dịch vụ có nguồn gốc được cài đặt trên máy khách hàng. Nó
có một sự thích ứng cao để thay đổi và kiểm soát cơ sở dữ liệu mà không cần phải
sửa đổi trình điều khiển ở máy khách hàng.
Phát triển ứng dụng bảo mật trên oracle

8

Nhược điểm: Cơ sở dữ liệu phải được thực hiện ở tầng máy chủ cụ thể. Vì
nó thực hiện các ứng dụng dựa trên Web, nó thực hiện các biện pháp an toàn giống
như việc truy xuất qua tường lửa.
2.2.3. Xây dựng dựa trên nền tảng TCP/IP

Hình 3 : sử dụng giao thức TCP/IP
Những đặc tính: Cách thức này là sự chuyển đổi lời gọi từ giao diện API vào
giao thức mạng để liên lạc trực tiếp với cơ sở dữ liệu thông qua giao thức TCP/IP.
Đây là liên kết giữa khách hàng gọi trực tiếp tới máy chủ hệ quản trị cơ sở dữ liệu
và cung cấp một giải pháp thiết thực cho việc truy xuất mạng nội bộ. Trong hầu
các trường hợp, các trình điều khiển cung cấp bởi nhà cung cấp cơ sở dữ liệu. Giao
thức này cũng không cần một thư viện cụ thể cho cơ sở dữ liệu có nguồn gốc cụ
thể để cấu hình trên máy của khách hàng và có thể triển khai trên Web mà không
cần khách hàng cài đặt, theo yêu cầu cho các trình điều khiển loại 3.
Ưu điểm: Có thể giao tiếp trực tiếp với cơ sở dữ liệu bằng cách sử dụng
TCP/IP, chứ không cần phải thông qua một tầng trung gian hay thư viện gốc nào.
Đây chính là lý do các trình điều khiển JDBC hoạt động nhanh nhất. Nó không cần
phải bổ xung thư viện gốc là cần thiết để cài đặt trên máy khách hàng.
Phát triển ứng dụng bảo mật trên oracle
9

Nhược điểm: Hạn chế duy nhất là client được cơ sở dữ liệu cụ thể. Do đó,
nếu trong trường hợp, các thay đổi về sau với cơ sở dữ liệu, thì các nhà phát triển
ứng dụng có thể phải mua và triển khai một ứng dụng cụ thể mới cho các cơ sở dữ
liệu mới.
3. Hiệu suất ứng dụng
Ứng dụng áp dụng cho các cửa hàng, siêu thị lớn, các cơ quan công ty,…
nên cần tốc độ truy xuất tốt. Chúng ta có thể đáp ứng được mức thời gian thực với

mức ứng dụng, và hiệu suất phần mềm được đạt mức tối ưu khi sử dụng giao thức
TCP/IP.
Mặt khác, ở đây chưa kể đến mức độ authentication của database oracle. Khi
oracle không mã hoá dữ liệu, đây là trường hợp ứng dụng tối ưu nhất. Còn khi
database server đã cài đặt cơ chế mã hoá, tốc độ xử lý của ứng dụng sẽ bị giảm đi ít
nhất 5%.
II. Bảo mật ứng dụng và cơ sở dữ liệu
1. Những nguy cơ đối với cơ sở dữ liệu
Hiển nhiên là các đe dọa đối với hệ thống CSDL trước tiên sẽ đến từ các tin
tặc. Chúng sẽ tấn công hệ thống của doanh nghiệp từ bên ngoài thông qua Internet
từ những trang Web công cộng hay từ các ứng dụng chia sẻ thông tin của doanh
nghiệp đối với khách hàng. Các kiểu tấn công này có thể bị loại bỏ phần lớn bằng
cách sử dụng hệ thống tường lửa. Tuy nhiên, hệ thống tường lửa lại thường giới
hạn khả năng truy xuất thông tin của những khách hàng hay người dùng chân chính
những đối tượng mà bản thân doanh nghiệp luôn luôn mời chào đến với mình. Một
điểm nữa là tường lửa không thể giúp doanh nghiệp bảo vệ mình khỏi những lỗ
hổng bảo mật xuất hiện ngày càng nhiều khi hệ thống CSDL của họ ngày càng trở
nên tinh vi và phức tạp.
Phát triển ứng dụng bảo mật trên oracle
10

Tin tặc không phải là mối lo ngại duy nhất. Các đe dọa còn đến từ bên trong,
từ chính các nhân viên của doanh nghiệp - những người mặc nhiên được truy cập
vào hệ thống CSDL và được mặc nhiên tin tưởng. Điều đặc biệt là hệ thống tường
lửa hoàn toàn vô hiệu trước đối tượng này. Đáng nói hơn nữa là các biện pháp bảo
vệ thông tin từ bên trong không ít thì nhiều bị các doanh nghiệp đầu tư chưa đúng
mức hoặc hoàn toàn bị “quên”.
2. Biện pháp bảo vệ
Dĩ nhiên là các hệ CSDL ngày nay đều có sẵn các công cụ bảo vệ tiêu chuẩn
như hệ thống định danh (authentication - yêu cầu người dùng phải xác nhận danh

tính của mình bằng tên và mật khẩu) và kiểm soát truy xuất (access control - giới
hạn các thao tác của người dùng trên một tập dữ liệu xác định). Tuy nhiên, các biện
pháp bảo vệ này hầu như không có tác dụng trước các tấn công từ bên trong.
Chẳng hạn, làm sao doanh nghiệp có thể cấm không cho nhân viên phụ trách việc
sao lưu dữ liệu (Backup Operator) đọc dữ liệu trong CSDL ? (vì nhiệm vụ của anh
ta yêu cầu anh ta phải được đọc dữ liệu để có thể sao chép nó sang nơi khác). Một
ví dụ nữa là nếu máy chủ (hoặc ổ cứng) của doanh nghiệp bị mất cắp, làm sao bảo
vệ thông tin trong đó không bị nhìn thấy?
Để bảo vệ thông tin khỏi mối đe dọa này, người ta cần phải thực hiện hai
biện pháp cơ bản là: mã hóa các thông tin quan trọng trong CSDL và quản lý thật
chặt chẽ các khóa giải mã (key management). Mã hóa thông tin mà không để ý tới
quản lý khóa giải mã thì cũng giống như bạn khóa cửa nhà mà lại để lại chìa khóa
ngay trước cửa vậy. Đáng ngạc nhiên là tác vụ quản lý khóa là tác vụ được quan
tâm nhiều hơn hiện nay vì các thuật toán mã hóa thông dụng ngày nay đã đủ an
toàn.
Bên cạnh đó, để thắt chặt hơn nữa, doanh nghiệp có thể còn phải cài đặt
thêm các cơ chế giám sát (security audit) để kịp thời phản ứng trước những kiểu
Phát triển ứng dụng bảo mật trên oracle
11

truy xuất hệ thống bất thường hoặc log (ghi nhận toàn bộ thao tác đang diễn ra trên
CSDL).
3. Mã hóa
Mã hóa đảm bảo thông tin được mã hóa không thể sử dụng được nếu không
có khóa giải mã. Để đảm bảo an toàn, các khóa dùng để mã hóa (và cũng để giải
mã) thường được phát sinh một cách ngẫu nhiên trước khi thông tin được mã hóa.
Trong số các thuật toán mã hóa, 3DES và AES là hai thuật toán mã hóa thông dụng
nhất (AES được đánh giá là nhanh hơn nhiều so với 3DES). Vì các thuật toán mã
hóa đã trở thành tiêu chuẩn, chúng ta sẽ không bàn nhiều đến điều này ở đây.
Điểm đáng bàn nhất là việc mã hóa sẽ ảnh hưởng đến tính chất của dữ liệu.

Đầu tiên là ảnh hưởng đến kích thước dữ liệu. Các thuật toán mã hóa đều ít nhiều
làm tăng kích thước của dữ liệu gốc. Thứ hai là làm biến đổi kiểu của dữ liệu. Dữ
liệu khi được mã hóa sẽ trở thành một “đống” bit vô nghĩa (kiểu binary) nên
thường không thể được lưu trữ như ban đầu.
Đối với kiểu dữ liệu dạng text (như char, varchar hay text), ta có thể không
cần phải thay đổi kiểu dữ liệu vì ta có thể biểu diễn kiểu binary theo định dạng
Base64.
Điểm cần quan tâm kế tiếp là việc mã hóa các trường (field) có chỉ mục có
thể sẽ ảnh hưởng trầm trọng đến tốc độ của CSDL. Đáng tiếc là các trường này đôi
lúc lại cần phải được mã hóa (như số an sinh xã hội - một dạng giống như số
Chứng Minh Nhân Dân hay số thẻ tín dụng). Đa số các hệ bảo mật CSDL đều
không cho phép mã hóa các trường có chỉ mục hoặc cho phép nhưng luôn luôn
cảnh báo về các hiệu ứng lề.
Như vậy, mã hóa thông tin trong CSDL (hay nói gọn là mã hóa CSDL) ít
nhiều làm biến đổi cấu trúc của CSDL và ảnh hưởng đến hiệu suất của CSDL đó.
Thay đổi cấu trúc CSDL sẽ ảnh hưởng đến các ứng dụng sử dụng CSDL đó. Một ví
dụ là chẳng hạn ta mã hóa một trường có kiểu ngày tháng, khi ứng dụng truy xuất
Phát triển ứng dụng bảo mật trên oracle
12

mà không có khóa giải mã thì sẽ nhận được kiểu dữ liệu binary. Kết quả là ứng
dụng sẽ bị treo hoặc hoạt động không ổn định.
Để giảm thiểu ảnh hưởng đối với ứng dụng của CSDL người ta có các giải
pháp sau:
 Giải quyết vấn đề mã hóa CSDL ngay khi đang phát triển ứng dụng: điều này
thường hiếm xảy ra đối với đa số hệ thống hiện nay.
 Điều chỉnh lại ứng dụng đang có để áp dụng mã hóa CSDL: chi phí cho giải
pháp này thường rất cao.
 Sử dụng các hệ bảo mật CSDL loại “trong suốt” (transparency): các hệ thống
này sẽ mã hóa CSDL (đồng thời cung cấp cơ chế quản lý khóa) đằng sau hậu

trường. Các ứng dụng vẫn “thấy” CSDL của mình không thay đổi tí gì về mặt
cấu trúc nên vẫn làm việc một cách bình thường. Đây là giải pháp thường gặp
nhất.
Để tiến hành mã hóa, các hệ thống bảo mật CSDL phải chọn lựa giữa hai
khả năng sau: (1) dùng chính máy tính của hệ quản trị CSDL để tiến hành mã
hóa/giải mã, (2) sử dụng một máy tính khác. Cả hai cách này đều có những ưu
nhược điểm riêng. Khuyết điểm dễ thấy của cách (1) là sẽ làm giảm hiệu năng
chung của hệ quản trị CSDL trong trường hợp hệ thống phải phục vụ nhiều kết nối
cùng lúc (điều này là rất đáng kể đối với các hệ CSDL của các doanh nghiệp lớn).
Cách (2) tuy không giảm hiệu năng chung nhưng lại phụ thuộc vào tốc độ mạng (vì
phải truyền dữ liệu cần được mã hóa/giải mã qua lại giữa các máy tính) và phải mã
hóa các thông tin truyền trên mạng giữa máy tính của hệ CSDL và máy tính dùng
để mã hóa/giải mã để tránh bị kiểu tấn công “nghe lén”.
4. Vài nét về cơ chế quản lý khóa
Cơ chế quản lý khóa trong các hệ bảo mật CSDL cần phải giải quyết hai vấn
đề cơ bản là: vị trí lưu trữ các khóa giải mã và kiểm soát các truy cập đến các khóa
này.
Phát triển ứng dụng bảo mật trên oracle
13

4.1. Vị trí lưu trữ khóa
Có hai tùy chọn cơ bản trong lưu trữ khóa. Một là lưu trữ khóa bên trong
một bảng (table) riêng ngay bên trong hệ thống CSDL của doanh nghiệp. Giải pháp
này tuy đơn giản nhưng lại không đủ an toàn đối với các tác nhân bên trong. Ví dụ
là các quản trị viên CSDL (Database Administrators) sẽ dễ dàng truy xuất được nội
dung của khóa vì họ có khá nhiều “quyền lực” trên hệ thống CSDL của doanh
nghiệp.
Giải pháp thứ hai tuy có tốn kém hơn đáng kể nhưng độ an toàn khá cao là
lưu trữ khóa trong các phần cứng chuyên dụng – như trong một máy chủ khác.
Như vậy sẽ đảm bảo được là tất cả các quản trị viên CSDL đều không thể “tự

nhiên” truy xuất được khóa giải mã.
4.2. Kiểm soát truy cập khóa
Để kiểm soát truy cập khóa khi khóa được lưu trữ trên một server riêng ta
phải giải quyết được vấn đề cơ bản nhất là: xác định danh tính của người dùng truy
cập vào khóa. Đơn giản nhất là sử dụng tên người dùng và mật khẩu. Cách này khá
đơn giản nhưng vẫn có nhược điểm cố hữu là dễ bị tấn công nếu người dùng sử
dụng các mật khẩu dễ đoán. Cách thứ hai mạnh hơn là sử dụng smart-card. Smart-
card hoạt động giống như các thẻ ATM của ngân hàng. Smart-card an toàn hơn vì
nó xác định danh tánh của người dùng thông qua hai yếu tố: (1) một vật mà người
dùng sở hữu (cái thẻ) và (2) một thông tin mà người dùng đó biết.
Để một “kẻ xấu” có được cả hai điều trên là cực khó. Nguyên tắc hoạt động
của smart-card cũng khá đơn giản: mật khẩu để truy cập của người dùng được lưu
trữ bên trong bộ nhớ của smart-card và được mã hóa. Khóa để giải mã ra mật khẩu
chính là số PIN của smart-card (hoặc là một mậu khẩu khác mà chỉ có người dùng
đó biết).
Cách thứ ba mạnh nhất là sử dụng các thông tin sinh học (như vân tay, mắt
hoặc giọng nói) kết hợp với mật khẩu hoặc smart-card.
Phát triển ứng dụng bảo mật trên oracle
14

5. Sơ lược về kiến trúc của một hệ bảo mật CSDL
Triggers: các trigger được sử dụng để lấy dữ liệu đến từ các câu lệnh
INSERT, UPDATE (để mã hóa).
Views: các view được sử dụng để lấy dữ liệu đến từ các câu lệnh SELECT
(để giải mã)
Extended Stored Procedures: được gọi từ các Triggers hoặc Views dùng để
kích hoạt các dịch vụ được cung cấp bởi module DBPEM từ trong môi trường của
hệ quản tri CSDL.
DBPEM (Database Policy Enforcing Module): cung cấp các dịch vụ mã
hóa/giải mã dữ liệu gửi đến từ các Extended Stored Procedures và thực hiện việc

kiểm tra quyền truy xuất của người dùng (dựa trên các chính sách bảo mật được
lưu trữ trong CSDL về quyền bảo mật).
Security Database: lưu trữ các chính sách bảo mật (policy) (quy định người
dùng nào trong hoàn cảnh nào (thời gian, sử dụng chương trình gì, sử dụng máy
tính nào, …) có thể “thấy” được trường (field) nào trong CSDL) và các khóa giải
mã. Xu hướng ngày nay thường là lưu trữ CSDL về bảo mật này trong Active
Directory (một CSDL dạng thư mục để lưu trữ tất cả thông tin về hệ thống mạng)
để tiện tích hợp vào cơ sở hạ tầng của các doanh nghiệp.
Security Services: chủ yếu thực hiện việc bảo vệ các khóa giải mã được lưu
trong CSDL bảo mật.
Management Console : dùng để cập nhật thông tin lưu trong CSDL bảo mật
(chủ yếu là soạn thảo các chính sách bảo mật) và thực hiện thao tác bảo vệ một
trường (field) nào đó trong CSDL của doanh nghiệp.
Chúng ta cũng thấy rằng để đảm bảo tối đa tính bảo mật, thông tin được trao
đổi giữa các module trong hệ thống đều được mã hóa bằng nghi thức SSL hoặc
Kerberos.
6. Các vấn đề bảo mật trong phát triển ứng dụng CSDL Oracle
Phát triển ứng dụng bảo mật trên oracle
15

Bảo mật là một trong những vấn đề mà bất kỳ người nào sử dụng Database
đều quan tâm, vấn đề bảo mật trong database là một trong những ưu tiên hàng đầu
của những người phát triển ứng dụng, nhưng đa số các chương trình ứng dụng hiện
hay lại ít quan tâm đến vấn đề này. Trong loạt chuyên đề này tôi sẽ giới thiệu cho
các bạn một số vấn đề căn bản về bảo mật Database trong việc phát triển ứng dụng.
Khi phát triển một ứng dụng lúc nào người phát triển ứng dụng cũng luôn
quan tâm đến vấn đề bảo mật hệ thống, để làm một hệ thống bảo mật thì yêu cầu
tối thiểu là quản lý user và các quyền hạn trên chức năng cũng như các đối tượng
trong ứng dụng. Hiện nay đa số mọi người phát triển ứng dụng chủ yếu quản lý
user theo 2 cách sau:

Cách 1. Dùng Database User làm user cho ứng dụng


Hình 4 : mô hình quản lý user mức ứng dụng
Cách 2. Dùng Application User làm user cho ứng dụng
Hiện tại thì đa số chọn phương án thứ 2, khi sử dụng phương án này người
phát triển phải làm thêm một chương trình để quản lý thông tin về User, cũng như
quyền hạn trên đó, về mặt kết nối database thì dùng 1 user để kết nối và user này
thường có quyền rất cao trong Database (nhiều người cho luôn nó là user quản thị
hệ thống để khỏi phải mất công phân quyền), Oracle gọi đó là mô hình “One Big
Application User”. Đối với mô hình “One Big Application User” nó có một số
giới hạn, ví dụ như một nguyên tắc căn bản của bảo mật là ghi nhận lại thông tin về
Phát triển ứng dụng bảo mật trên oracle
16

việc thay đổi dữ liệu trong database (auditing). Nếu sử dụng trong mô hình “One
Big Application User”, thì việc auditing không thể xác định được chính xác là user
nào đã thao tác trên dữ liệu đã thay đổi đó. Ứng dụng phải thực hiện một cơ chế
auditing riêng, bắt lại các sự kiện thao tác của user. Mô hình “One Big Application
User” bạn không thể tận dụng được cơ chế bảo mật của Oracle Security, bạn phải
xây dựng mọi thứ trong khi Oracle đã làm cho bạn đầy đủ.

Hình 5 : mô hình quản lý user mức ứng dụng
6.1. Lựa chọn mô hình phát triển ứng dụng
Những ứng dụng mà user cũng là user trong cơ sở dữ liệu cũng là user ứng
dụng có thể tận dụng được nhiều cơ chế mà cơ sở dữ liệu mang lại như quyền hạn
trên các đối tượng, hay việc chia nhỏ quyền hạn theo từng hàng(row) hay
cột(column) trong table, ngoài ra còn có thể sử dụng role và các quyền hạn trên
store procedure cũng như sử dụng auditing do database cung cấp. Oracle khuyên
bạn nên sử dụng user trong database làm user cho ứng dụng, khi đó ứng dụng có

thể lợi dụng những cơ chế bảo mật và quyền hạn của database cung cấp. Khi sử
dụng mô hình này thì user không thể dùng bất cứ hình thúc nào có thể truy cập vào
database mà không được kiểm soát quyền.
Khi ứng dụng sử dụng mô hình “One Big Application User” thì ứng dụng đó
phải có riêng chức năng quản lý quyền hạn trên từng user và nó còn phải đảm nhận
luôn việc kiểm tra việc truy cập dữ liệu từ user mà nó quản lý. Với cách tiếp cận
Phát triển ứng dụng bảo mật trên oracle
17

này thì mỗi ứng dụng khi truy cập vào database phải thực hiện lại việc bảo mật.
Việc bảo mật trở nên tốn quá nhiều chi phí(không phải tiền bạc mà là sự nặng nề
cho hệ thống) bởi vì nó phải thực hiện cùng 1 cơ chế bảo mật cho nhiều ứng dụng.
6.2. Quản lý quyền hạn trong ứng dụng
Hầu hết ứng dụng database đều đòi hỏi những quyền khác nhau trên các đối
tượng của database, vì thế khi muốn các user có thể thao tác trên ứng dụng thì phải
được phân quyền trên các đối tượng đó. Đối với những ứng dụng lớn thì đối tượng
có thể lên đến vài trăm là ít và user cũng nhiều, nên việc phân quyền là khá phức
tạp.
Để đơn giản cho việc quản lý quyền hạn bạn có thể tạo ra những role (được
hiểu như là 1 nhóm những vai trò trung gian giữ lấy những quyền hạn) cho ứng
dụng, những role này sẽ được gán cho tập hợp những quyền hạn, sau đó bạn có thể
gán những role này cho user.
Việc gán quyền thông qua role cũng có nhiều điểm lợi:
- Role được gán nhiều quyền, user được gán đến role. Khi user thay đổi công
việc thì bạn có thể chỉ gán hay hủy bỏ quyền cho user với role.
- Bạn có thể thay đổi quyền liên quan đến ứng dụng bằng cách thay đổi quyền
đến role mà không quan tâm đến những user trong ứng dụng.
Tạo Role cho ứng dụng (Secure Application Roles)
Phân quyền theo role là một phương pháp rất hữu dụng trong việc quản lý
quyền hạn của Oracle Database. Role có thể được gán cho các user hay những role

khác. Mỗi khi gán role cho user, thì mặc định role sẽ được thiết lập là default role
(role có hiệu lực không cần kích hoạt), vì thế mà các quyền hạn liên kết với nó sẽ
có hiệu lực và user được xác minh các quyền hạn đó khi truy cập database. Nếu
bạn thiết đặt lại cho nó không là default, lúc đó muốn role có hiệu lực thì user phải
ra lệnh “set_role”.
Để tạo role trong oracle thì có 2 phương pháp để tạo :
Phát triển ứng dụng bảo mật trên oracle
18

- Tạo role không có chỉ định cách xác minh
- Tạo role có xác minh khi sử dụng

Hình 6 : mô hình tạo role
Khi tạo role có xác minh, muốn sử dụng nó bạn có 4 phương pháp chọn lựa tùy
theo câu lệnh lúc tạo role :
- Sử dụng mật khẩu để xác minh
- Sử dụng thủ tục hay package để xác minh
- Sử dụng dịch vụ bên ngoài để xác minh (như hệ điều hành chẳng hạn)
- Sử dụng dịch vụ Directory
Trong phần này chúng tôi muốn giới thiệu với các bạn về cách bảo vệ role bằng
cách sử dụng “Secure Application Roles”, tức là dùng thủ tục hay package để xác
minh và làm cho role có hiệu lực tại lúc runtime.
CREATE ROLE role IDENTIFIED USING schema.package
Khi sử dụng câu lệnh trên để tạo role tức là bạn đang sử dụng phương pháp kích
hoạt role bằng thủ tục hay package. Thủ tục hay Package này phải được gán quyền
execute cho user, để user này kích hoạt role(user không thể tự kích hoạt role bằng
lệnh SET ROLE trong trường hợp này). Trong thủ tục hay Package bạn có thể
kiểm tra tùy theo tình huống hay ngữ cảnh mà bạn kích hoạt role, đây là một lợi ích
rất lớn khi mà quyền hạn truy cập của user động theo từng trường hợp cụ thể.
III. Demo

Phát triển ứng dụng bảo mật trên oracle
19


Hình 7: Mô hình quan hệ database qlCuocHen
Chương trình sử dụng giao thức TCP/IP, sử dụng giao diện CallableStatement với lời gọi
các thủ tục lưu trữ trong oracle 10g và giao diện Statement để thực hiện truy vấn dữ liệu.

Hình 8 : Màn hình chính

Phát triển ứng dụng bảo mật trên oracle
20


Hình 9 : Menu chức năng

Hình 10: Chức năng truy vấn
Phát triển ứng dụng bảo mật trên oracle
21

Ấn nút kiểm tra để hiện lên danh sách phân nhóm và tìm kiếm. Sau khi đã chọn
phân nhóm phù hợp rồi bấm ok, ta sẽ được bảng như sau :

Hình 11 : Bảng danh sách bạn bè
Chức năng nhập :

Hình 12 : Chức năng nhập
Nhập vào với các giá trị theo thứ tự : NB,NhaBao,6
Phát triển ứng dụng bảo mật trên oracle
22



Hình 13 : Bảng danh sách các phân nhóm


Phát triển ứng dụng bảo mật trên oracle
23

KẾT LUẬN

Oracle hiện nay là cơ sở dữ liệu hàng đầu, mức độ bảo mật, hỗ trợ người
dùng tốt. Và khi xây dựng ứng dụng cơ sở dữ liệu, chúng ta phải đặt vấn đề bảo
mật là trên hết. Qua những tìm hiểu ở trên, chúng em đã hiểu được phần nào của
việc xây dựng ứng dụng bảo mật trong cơ sở dữ liệu nói chúng cũng như trong cơ
sở dữ liệu oracle nói riêng. Trong thời gian tới, chúng em sẽ tiếp tục tìm tòi nhiều
hơn nữa, để trau dồi thêm kiến thức cũng như kinh nghiệm cho bản thân sau
này.Chúng em xin cảm ơn cô giáo Trần Hồng Lượng đã hết sức giúp đỡ, chỉ bảo
tận tình chúng em hoàn thành đề tài.

×