Dựa trên nền tảng của kỹ thuật phân tích tĩnh, luận án đề xuất một sốphương pháp kiểm chứng chính sách điều khiển truy cập của các hệ thống web.Cụ thể, các hệ thống web mà luận án hướng
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘITRƯỜNG ĐẠI HỌC CÔNG NGHỆ
LƯƠNG THANH NHẠN
MỘT SỐ PHƯƠNG PHÁP KIỂM CHỨNG CÁC CHÍNH SÁCH ĐIỀU KHIỂN TRUY CẬP
CHO HỆ THỐNG PHẦN MỀM
LUẬN ÁN TIẾN SĨ CÔNG NGHỆ THÔNG TIN
Hà Nội - 2021
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘITRƯỜNG ĐẠI HỌC CÔNG NGHỆ
LƯƠNG THANH NHẠN
MỘT SỐ PHƯƠNG PHÁP KIỂM CHỨNG CÁC CHÍNH SÁCH ĐIỀU KHIỂN TRUY CẬP
CHO HỆ THỐNG PHẦN MỀM
Chuyên ngành: Kỹ thuật phần mềm
Mã số: 9480103.01
LUẬN ÁN TIẾN SĨ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC:
PGS.TS Trương Ninh Thuận
Hà Nội - 2021
Trang 3Lời cam đoan
Tôi xin cam đoan luận án “Một số phương pháp kiểm chứng cácchính sách điều khiển truy cập cho hệ thống phần mềm” là công trìnhnghiên cứu của riêng tôi Các số liệu, kết quả được trình bày trong luận án làhoàn toàn trung thực và chưa từng được công bố trong bất kỳ một công trìnhnào khác
Tôi đã trích dẫn đầy đủ các tài liệu tham khảo, công trình nghiên cứu liênquan ở trong nước và quốc tế Ngoại trừ các tài liệu tham khảo này, luận
án hoàn toàn là công việc của riêng tôi
Trong các công trình khoa học được công bố trong luận án, tôi đã thể hiện
rõ ràng và chính xác đóng góp của các đồng tác giả và những gì do tôi đãđóng góp
Luận án được hoàn thành trong thời gian tôi làm Nghiên cứu sinh tại Bộmôn Công nghệ phần mềm, Khoa Công nghệ Thông tin, Trường Đại họcCông nghệ, Đại học Quốc gia Hà Nội
Tác giả:
Hà Nội:
Trang 4Lời cảm ơn
Trước hết, tôi muốn bày tỏ sự biết ơn đến PGS.TS Trương Ninh Thuận, cán
bộ hướng dẫn, người đã trực tiếp giảng dạy và định hướng tôi trong suốt thờigian học cao học, thực hiện luận văn thạc sĩ cũng như luận án này Thầy đãhướng dẫn cho tôi nhiều kiến thức trong học thuật và nghiên cứu Một vinh dựlớn cho tôi khi được học tập, nghiên cứu dưới sự hướng dẫn của Thầy
Tôi xin bày tỏ sự biết ơn sâu sắc đến các Thầy, Cô trong Bộ môn Công nghệphần mềm vì sự tận tâm, giúp đỡ của các Thầy Cô và các đóng góp rất hữu íchcho luận án
Tôi xin trân trọng cảm ơn Khoa Công nghệ thông tin, Phòng Đào tạo và BanGiám hiệu trường Đại học Công nghệ đã tạo điều kiện thuận lợi cho tôi trongsuốt quá trình học tập và nghiên cứu tại Trường
Tôi cũng bày tỏ sự biết ơn đến Ban Giám hiệu, các Phòng, Ban, Bộ môn liênquan trong Trường Đại học Y Dược Hải Phòng đã tạo điều kiện về thời gian vàtài chính cho tôi thực hiện luận án này Tôi muốn cảm ơn đến các đồng nghiệptrong Bộ môn Tin học, Trường Đại học Y Dược Hải Phòng đã giúp đỡ, độngviên và sát cánh bên tôi trong suốt quá trình nghiên cứu
Tôi muốn cảm ơn đến tất cả những người bạn của tôi, các anh/chị/em nghiêncứu sinh - những người luôn chia sẻ, động viên tôi bất cứ khi nào tôi cần và tôiluôn ghi nhớ những điều đó
Cuối cùng, tôi xin bày tỏ lòng biết ơn vô hạn đối với cha, mẹ, chồng, con đãluôn ủng hộ và yêu thương tôi vô điều kiện Nếu không có sự ủng hộ của giađình tôi không thể hoàn thành được luận án này
NCS Lương Thanh Nhạn
Trang 5Dựa trên nền tảng của kỹ thuật phân tích tĩnh, luận án đề xuất một sốphương pháp kiểm chứng chính sách điều khiển truy cập của các hệ thống web.
Cụ thể, các hệ thống web mà luận án hướng đến phân tích đều được xây dựngbởi ngôn ngữ lập trình Java theo kiến trúc MVC (Model-View-Controller) và cóchính sách điều khiển truy cập theo vai trò hoặc chính sách điều khiển truy cậptheo thuộc tính được triển khai theo phương pháp an ninh lập trình, an ninhkhai báo Các đóng góp chính của luận án bao gồm:
(i) Đề xuất phương pháp kiểm chứng chính sách điều khiển truy cập theo vaitrò triển khai theo phương pháp an ninh lập trình Chính sách điều khiểntruy cập theo vai trò của ứng dụng web được trích rút thông qua việc phântích các phương thức khai thác tài nguyên, xây dựng danh sách các quyền
và đồ thị khai thác tài nguyên Một ma trận kiểm soát truy cập tài nguyêntheo vai trò được giới thiệu để biểu diễn các quy tắc truy cập của hệ thốngweb Từ đó, luận án đề xuất thuật toán kiểm tra sự phù hợp giữa ma trậnkiểm soát truy cập theo vai trò và chính sách truy cập đã đặc tả Bên cạnh
đó, một công cụ tên là CheckingRBAC được xây dựng để hỗ trợ quá trìnhkiểm chứng theo phương pháp đã đề xuất
Trang 6(ii) Đề xuất phương pháp kiểm chứng chính sách điều khiển truy cập theo vaitrò kết hợp ràng buộc cấp quyền triển khai theo phương pháp an ninh khaibáo Chính sách điều khiển truy cập và các ràng buộc cấp quyền của các
hệ thống web được kiểm tra thông qua phép gán vai trò - người dùng vàphép gán vai trò - quyền Với phép gán thứ nhất, phương pháp được tiếnhành dựa trên việc phân tích cơ sở dữ liệu của hệ thống ứng dụng Ở phépgán thứ hai, các quy tắc truy cập của hệ thống web được phân tích và biểudiễn thành cây phân tích quy tắc truy cập tài nguyên theo vai trò Sau đó,các thuật toán được đề xuất để kiểm tra tính chính xác của các phép gán
đã triển khai trong các hệ thống web Phương pháp đề xuất đã được triểnkhai thành công cụ VeRA để kiểm chứng tự động các hệ thống web.(iii) Đề xuất phương pháp kiểm chứng chính sách điều khiển truy cập theo thuộctính Đầu tiên, tiến trình kiểm chứng được thực hiện bằng việc trích rút,phân tích các quy tắc truy cập được triển khai trong hệ thống web Tiếptheo, sự phù hợp giữa chính sách điều khiển truy cập của ứng dụng và đặc
tả được tiến hành thông qua các định nghĩa hình thức và các thuật toánkiểm tra tính bảo mật, tính toàn vẹn và tính sẵn sàng chính sách truy cậpcủa hệ thống Cuối cùng, công cụ kiểm chứng APVer đã được phát triển
từ phương pháp đề xuất để thực hiện quá trình kiểm chứng tự động.Ngoài ra, các công cụ phát triển từ các phương pháp đề xuất cũng đã đượctiến hành thực nghiệm với hệ thống quản lý hồ sơ y tế Bước đầu, phương pháp
và công cụ đề xuất đã cho các kết quả kiểm chứng chính xác như dự kiến
Từ khóa: kiểm chứng, điều khiển truy cập, RBAC, ABAC, an ninh phầnmềm, phân tích tĩnh
Trang 7Mục lục
Lời cam đoan i
Lời cảm ơn ii
Tóm tắt iii
Mục lục iv
Danh mục các từ viết tắt viii
Danh mục các hình vẽ ix
Danh mục các thuật toán xi
Danh mục các đặc tả xii
Chương 1 GIỚI THIỆU 1
1.1 Đặt vấn đề 1
1.2 Nội dung nghiên cứu 4
1.3 Đóng góp của luận án 5
1.4 Cấu trúc luận án 6
Chương 2 KIẾN THỨC CƠ SỞ 9
2.1 An ninh phần mềm 9
2.1.1 Một số tính chất an ninh của phần mềm 10
2.1.2 Chính sách điều khiển truy cập 13
2.2 Một số mô hình chính sách điều khiển truy cập 14
2.2.1 Điều khiển truy cập theo vai trò 14
2.2.2 Ngôn ngữ mô hình hóa chính sách an ninh thống nhất 17
2.2.3 Điều khiển truy cập theo thuộc tính 19
2.3 Triển khai chính sách điều khiển truy cập trong JavaEE 23
2.3.1 An ninh truy cập trong JavaEE 23
2.3.2 Một số kiến trúc thiết kế phần mềm trong JavaEE 24
2.4 Phân tích và biểu diễn chương trình 29
2.4.1 Phân tích chương trình 30
2.4.2 Một số phương pháp biểu diễn chương trình 34
2.5 Tóm tắt chương 38
Trang 8Chương 3 KIỂM CHỨNG CHÍNH SÁCH RBAC TRIỂN KHAI
THEO PHƯƠNG PHÁP AN NINH LẬP TRÌNH 39
3.1 Giới thiệu 39
3.2 Các nghiên cứu liên quan 41
3.3.Phương pháp kiểm chứng chính sách RBAC triển khai theo phương pháp an ninh lập trình 43
3.3.1 Tập quy tắc truy cập đặc tả 44
3.3.2 Danh sách các quyền 47
3.3.3 Đồ thị khai thác tài nguyên 48
3.3.4 Ma trận kiểm soát truy cập theo vai trò 49
3.3.5 Thuật toán kiểm tra sự phù hợp của ma trận kiểm soát truy cập theo vai trò và chính sách RBAC đã đặc tả 52
3.4 Công cụ kiểm chứng 55
3.4.1 Giao diện công cụ 55
3.4.2 Thực nghiệm 56
3.5 Thảo luận và đánh giá 60
3.6 Tóm tắt chương 62
Chương 4 KIỂM CHỨNG CHÍNH SÁCH RBAC KẾT HỢP RÀNG BUỘC CẤP QUYỀN TRIỂN KHAI THEO PHƯƠNG PHÁP AN NINH KHAI BÁO 63
4.1 Giới thiệu 63
4.2 Các nghiên cứu liên quan 65
4.3.Phương pháp kiểm chứng chính sách RBAC kết hợp ràng buộc cấp quyền triển khai theo phương pháp an ninh khai báo 67
4.3.1 Kiểm tra phép gán người dùng - vai trò 68
4.3.2 Kiểm tra phép gán vai trò - quyền 71
4.4 Công cụ kiểm chứng 76
4.4.1 Kiến trúc của công cụ 76
4.4.2 Giao diện đồ họa của công cụ 77
4.4.3 Thực nghiệm 78
4.5 Thảo luận và đánh giá 81
4.6 Tóm tắt chương 83
Trang 9Chương 5 KIỂM CHỨNG CHÍNH SÁCH ĐIỀU KHIỂN TRUY
CẬP THEO THUỘC TÍNH 85
5.1 Giới thiệu 85
5.2 Các nghiên cứu liên quan 87
5.3 Phương pháp kiểm chứng chính sách điều khiển truy cập theo thuộc tính 89
5.3.1 Chính sách ABAC đặc tả của hệ thống 90
5.3.2 Chính sách ABAC triển khai trong ứng dụng 91
5.3.3 Các thuật toán kiểm chứng chính sách ABAC 92
5.4 Công cụ kiểm chứng 97
5.4.1 Xây dựng công cụ 97
5.4.2 Thực nghiệm 98
5.5 Thảo luận và đánh giá 105
5.6 Tóm tắt chương 106
Chương 6 KẾT LUẬN 108
6.1 Kết luận 108
6.2 Hướng phát triển 111
Danh mục các công trình khoa học 113
Tài liệu tham khảo 114
Trang 10AST Abstract Syntax Tree Cây cú pháp trừu tượng
CFG Control Flow Graph Đồ thị luồng điều khiển
DAC Discretionary Access
Con-trol
Điều khiển truy cập tùy ý
FSA Finite State Automata Ôtômat hữu hạn trạng thái
HTML Hypertext Markup
Lan-guage
Ngôn ngữ đánh dấu siêu văn bản
IEC International
Electrotechni-cal Commission
Uỷ ban kỹ thuật điện quốc tế
ISO International Organization
for Standardization
Tổ chức tiêu chuẩn hoá quốc tế
MAC Mandatory Access Control Điều khiển truy cập bắt buộc
MVC Model-View-Controller Mô hình-Khung nhìn-Bộ điều khiểnNIST National Institute of Stan-
dards and Technology
Viện Tiêu chuẩn và Kĩ thuật Quốcgia Mỹ
PDA Push Down Automaton Ôtômat đẩy xuống
PDP Policy Decision Point Điểm quyết định chính sác
PEP Policy Enforcement Point Điểm thực thi chính sách
PDG Program Dependence Graph Đồ thị phụ thuộc chương trìnhPHP Hypertext Preprocessor Mộ xử lý siêu văn bản - một ngôn
ngữ lập trình kịch bảnRBAC Role-Based Access Control Điều khiển truy cập dựa trên vai tròOASIS Organization for the Ad-
vancement of Structured formation Standards
In-Tổ chức cải tiến các tiêu chuẩnthông tin có cấu trúc
Trang 11SDG System Dependence Graph Đồ thị phụ thuộc hệ thống
SoD Separation of Duties Phân chia nhiệm vụ
SpEL Spring Expression Language Ngôn ngữ biểu thức Spring
SQL Structured Query Language Ngôn ngữ truy vấn có cấu trúcSSL Secure Sockets Layer Lớp socket bảo mật
TLS Transport Layer Security Bảo mật tầng giao vận
UML Unified Modeling Language Ngôn ngữ mô hình hóa thống nhấtURL Uniform Resource Locator Định vị tài nguyên thống nhấtXACML eXtensible Access Control
Trang 12Danh mục các hình vẽ
1.1 Cấu trúc của luận án 7
2.1 Một số tính chất an ninh của phần mềm 11
2.2 Điều khiển truy cập và một số dịch vụ an ninh 13
2.3 Mô hình RBAC cơ bản 15
2.4 Siêu mô hình SecureUML 17
2.5 Chính sách điều khiển truy cập của hệ thống quản lý hồ sơ y tế bằng SecureUML 19
2.6 Cơ chế điều khiển truy cập theo thuộc tính 20
2.7 Kiến trúc MVC trong JavaEE 25
2.8 Kiến trúc tổng quát của Spring Security 27
2.9 Kiến trúc Spring triển khai ABAC trong JavaEE 27
2.10 Các hoạt động đảm bảo chính sách an ninh phần mềm 29
2.11 Cây cú pháp trừu tượng biểu diễn đoạn mã của giải thuật tìm ước số chung lớn nhất 35
2.12 Minh họa đồ thị gọi một chương trình phần mềm 37
2.13 Một số ví dụ đồ thị luồng điều khiển 37
2.14 Đồ thị luồng điều khiển mô tả mức độ chi tiết của chương trình con 38 3.1 Quy trình kiểm chứng chính sách RBAC triển khai theo phương pháp an ninh lập trình 44
3.2 Giao diện của công cụ kiểm chứng chính sách RBAC 55
3.3 Mô hình triển khai chính sách RBAC trong hệ thống quản lý hồ sơ y tế 58
3.4 Đồ thị khai thác tài nguyên của hệ thống quản lý hồ sơ y tế 59
3.5 Ma trận kiểm soát truy cập theo vai trò của hệ thống quản lý hồ sơ y tế 60
4.1 Quy trình kiểm chứng chính sách RBAC kết hợp ràng buộc cấp quyền triển khai theo phương pháp an ninh khai báo 68
4.2 Cấu trúc cây phân tích truy cập theo vai trò 71
4.3 Tiến trình xây dựng cây phân tích truy cập theo vai trò của các ứng dụng web 73
Trang 134.4 Kiến trúc của công cụ kiểm chứng chính sách RBAC kết hợp ràng
buộc cấp quyền 77
4.5 Giao diện của công cụ kiểm chứng chính sách RBAC kết hợp ràng
buộc cấp quyền 77
4.6 Cơ sở dữ liệu của phép gán vai trò - người dùng 79
4.7 Cây phân tích truy cập theo vai trò của hệ thống quản lý hồ sơ y tế 80
5.1 Quy trình kiểm chứng chính sách điều khiển truy cập theo thuộc tính.90
5.2 Giao diện đồ họa của công cụ APVer 98
5.3 Kết quả kiểm chứng tính bảo mật khi lễ tân có thêm quyền đọc
Trang 14Danh mục các thuật toán
3.1 Xây dựng ma trận kiểm soát truy cập theo vai trò 51
3.2 Kiểm tra ma trận kiểm soát truy cập theo vai trò và chính sách RBAC đã đặc tả 53
4.1 Kiểm tra phép gán người dùng - vai trò 69
4.2 Kiểm tra phép gán vai trò - quyền 75
5.1 Kiểm tra tính bảo mật chính sách truy cập 94
5.2 Kiểm tra tính toàn vẹn chính sách truy cập 96
5.3 Kiểm tra tính sẵn sàng chính sách truy cập 97
Trang 15Danh mục các đặc tả
2.1 Mã nguồn của hàm hasPermission 27
2.2 Mã nguồn của hàm checkPermission 28
3.1 Cấu trúc tệp đặc tả chính sách RBAC của hệ thống 45
3.2 Đặc tả chính sách RBAC của hệ thống quản lý hồ sơ y tế 56
4.1 Cấu trúc của một quy tắc truy cập đặc tả chính sách hệ thống 74
4.2 Truy vấn SQL lấy thông tin vai trò - người dùng trong cơ sở dữ liệu của hệ thống quản lý hồ sơ y tế 79
5.1 Cấu trúc tệp đặc tả chính sách ABAC của hệ thống 90
5.2 Đoạn mã biểu diễn chính sách ABAC đã đặc tả 99
5.3 Chính sách ABAC được triển khai 100
5.4 Lễ tân có thể đọc hồ sơ bệnh nhân 101
5.5 Y tá có thể cập nhật hồ sơ bệnh nhân 103
Trang 16hệ thống Lợi ích của việc sử dụng phần mềm trong thực tế là không thể phủnhận, nó giúp con người tiết kiệm thời gian, tiền bạc và công sức Tuy nhiên,phần mềm hiện nay không chỉ dừng lại ở việc sử dụng trên một máy tính cánhân mà còn chạy trên các hệ thống có kết nối mạng Do đó, các hệ thống phầnmềm, đặc biệt là các hệ thống web luôn tiềm ẩn các nguy cơ bị tấn công an ninh
và khai thác tài nguyên trái phép [99, 102]
Một số lượng lớn các biện pháp, kỹ thuật đã được nghiên cứu ở các giai đoạn
để chống lại các cuộc tấn công và bảo vệ các ứng dụng web [54] Dựa trên nguyêntắc thiết kế và các tính chất an ninh, các kỹ thuật hiện có được chia thành banhóm chính:
(i) Xây dựng các ứng dụng web an toàn để đảm bảo rằng không có lỗ hổngtiềm ẩn nào tồn tại trong các ứng dụng [11, 25, 51, 81, 82, 105] Do đó, tàinguyên của hệ thống được bảo vệ và không bị khai thác trái phép Nhữngnghiên cứu này thường xây dựng các ngôn ngữ lập trình hoặc khung làmviệc mới với cơ chế bảo mật, tự động thực thi các tính chất an ninh mongmuốn Các kỹ thuật này giải quyết các vấn đề bảo mật từ gốc và do đómạnh mẽ nhất Tuy nhiên, chúng phù hợp nhất để phát triển ứng dụngweb mới
(ii) Kiểm chứng các tính chất an ninh mong muốn của ứng dụng web có đượcđảm bảo hay không và xác định các lỗ hổng tiềm ẩn trong ứng dụng [2,
5, 22, 28, 32, 38, 47, 48, 49, 53, 62, 70, 76, 79, 84, 88, 98, 104] Với hướngnghiên cứu này, các kỹ thuật phân tích và kiểm tra chương trình thườngđược áp dụng Cụ thể, phân tích chương trình bao gồm phân tích tĩnh
Trang 17(kiểm tra/xem xét được thực hiện trên mã nguồn mà không thực thi) vàphân tích động (quan sát hành vi thời gian chạy thông qua thực thi) Tuynhiên, phân tích tĩnh có khả năng trong việc xác định tất cả các lỗ hổngtiềm ẩn nhưng có thể đưa ra các cảnh báo sai Mặt khác, phân tích độngđảm bảo tính đúng đắn của các lỗ hổng được xác định trong không gianđược khám phá, nhưng không thể đảm bảo tính đầy đủ Các kỹ thuật tronghướng này có thể được áp dụng cho cả ứng dụng web mới và cũ.
(iii) Bảo vệ một ứng dụng web có khả năng dễ bị tấn công khỏi bị khai thácbằng cách xây dựng một môi trường thực thi an toàn [16, 55, 71, 85] Cácnghiên cứu này thường hướng đến việc sắp đặt các biện pháp bảo vệ (proxy,v.v.) để tách ứng dụng web khỏi các thành phần khác trong hệ sinh tháiweb, hoặc thiết đặt các thành phần cơ sở hạ tầng (thời gian chạy, trìnhduyệt web, v.v.) để giám sát hành vi của nó và xác định/cô lập các khaithác tiềm năng Những kỹ thuật này có thể độc lập với ngôn ngữ lập trìnhhoặc nền tảng, do đó có thể mở rộng quy mô tốt Tuy nhiên, chi phí hiệusuất thời gian chạy cần được xem xét
Bên cạnh đó, theo ISO/IEC 27002:20131, để bảo vệ tài nguyên của các hệthống phần mềm trước các nguy cơ tấn công an ninh, các nhà phát triển thườngphải xây dựng các hệ thống chính sách an ninh cho các phần mềm của họ Một
số biện pháp được thực thi phổ biến gồm: mật mã để đảm bảo sự an toàn vàbảo mật thông tin; điều khiển truy cập để hạn chế các vi phạm truy cập đếncác tài nguyên của hệ thống; truyền thông an toàn để bảo vệ thông tin trướccác nguy cơ đánh chặn hoặc thay thế làm rò rỉ hoặc sai lệch thông tin trong quátrình gửi nhận Trong thực tế, điều khiển truy cập là một biện pháp cần đượcthực hiện để đảm bảo tính bảo mật, tính toàn vẹn và tính sẵn sàng của các hệthống phần mềm [101] Tuy nhiên, việc triển khai chính sách điều khiển truycập ở mỗi giai đoạn phát triển phần mềm luôn có khả năng tiềm ẩn các lỗ hổng
an ninh Một trong các nguyên nhân dẫn đến các lỗ hổng an ninh là việc khôngtuân thủ hoặc bỏ sót các yêu cầu an ninh Sự không tuân thủ đơn giản nhất
có thể là một lỗi hoặc thiếu sót trong lập trình Điều này rất dễ xảy ra, bởi vìtại giai đoạn lập trình, một hệ thống phần mềm thường có sự kết hợp phức tạp
từ nhiều thành phần và thư viện, do đó có thể phát sinh các lỗi tiềm ẩn ngoàimong đợi Thêm vào đó, người lập trình có thể không phải là người thiết kế vàtính biểu đạt cao của ngôn ngữ đặc tả trong bản thiết kế cũng có thể dẫn đến
1 https://www.iso.org/standard/54533.html
Trang 18việc người lập trình hiểu không đầy đủ các yêu cầu đã đặc tả Tất cả những vấn
đề này đều có thể là nguyên nhân dẫn đến việc các hệ thống ứng dụng sẽ khôngtuân thủ các đặc tả của chúng [56, 9] Thực tế cho thấy, phần mềm với quy môcàng lớn thì việc triển khai chính sách điều khiển truy cập càng phức tạp và khảnăng chứa lỗi càng cao
Bởi vậy, quá trình triển khai chính sách truy cập cần phải được tiến hành, ràsoát một cách thận trọng Do đó, việc kiểm chứng chính sách điều khiển truycập giữa triển khai và đặc tả của các hệ thống phần mềm là một nhiệm vụ quantrọng, giúp phát hiện sớm các sai sót, đảm bảo các tính chất an ninh của hệthống và góp phần gia tăng chất lượng của các sản phẩm phần mềm [3, 46].Các nghiên cứu nhằm giải quyết bài toán này được thực hiện rất đa dạng, phứctạp theo nhiều hướng tiếp cận khác nhau, từ việc xây dựng các mô hình, đặc
tả các tính chất an ninh [15, 29, 40] cho đến việc phân tích, thẩm định chínhsách điều khiển truy cập ở nhiều giai đoạn trong tiến trình phát triển phầnmềm [6, 19, 24, 26, 27, 28, 37, 62, 78, 88] Ngoài ra, một số phương pháp cũngxây dựng các công cụ phân tích để phát hiện tự động các lỗ hổng bảo mật từ
mã nguồn, giúp nhà phát triển hệ thống thực hiện các sửa đổi cần thiết trướckhi phần mềm được phát hành [23, 30, 31, 48, 106] Với bài toán kiểm chứngchính sách điều khiển truy cập theo vai trò, các nghiên cứu [6,24, 48, 62, 78, 88]chủ yếu tiến hành kiểm tra phép gán giữa các quyền và các vai trò trong hệthống ở giai đoạn thiết kế hoặc bằng cả kỹ thuật phân tích tĩnh và động từ mãnguồn Trong khi đó, với điều khiển truy cập theo thuộc tính, một số nghiêncứu [11, 28, 37, 51] đã tập trung đặc tả, triển khai, kiểm thử chính sách điềukhiển truy cập của các hệ thống ứng dụng trong thực tế với khung làm việcSpring Security Tuy nhiên, các nghiên cứu này chưa xác minh tính bảo mật,tính toàn vẹn và tính sẵn sàng của chính sách truy cập được triển khai trongứng dụng web chỉ bằng phân tích mã nguồn [75, 107]
Vì vậy, luận án “Một số phương pháp kiểm chứng các chính sáchđiều khiển truy cập cho hệ thống phần mềm” đề ra hai mục tiêu chung
để nghiên cứu: (i) Xây dựng các phương pháp phân tích, biểu diễn chính sáchđiều khiển truy cập từ mã nguồn của các hệ thống web và các thuật toán kiểm tra
sự phù hợp của mô hình biểu diễn chính sách so với đặc tả ; (ii) Phát triển cáccông cụ để hỗ trợ quá trình kiểm chứng tự động Trong khuôn khổ nghiên cứu,luận án tập trung giải quyết bài toán kiểm tra sự phù hợp giữa triển khai và đặc
tả theo hai kịch bản là (i) ứng dụng web có chứa các quy tắc truy cập không có
Trang 19trong đặc tả và (ii) một số quy tắc truy cập đã đặc tả nhưng không được triểnkhai trong ứng dụng web Trường hợp vi phạm thứ nhất được hiểu tương đương
là người dùng có thừa các chức năng trong hệ thống ứng dụng Điều này dẫnđến việc người dùng có thể thực hiện nhiều thao tác với tài nguyên hơn so vớiquy định của tổ chức Trường hợp vi phạm thứ hai xảy ra khi người dùng không
có đủ chức năng trong hệ thống ứng dụng để thực hiện các công việc được giao.Trong hai trường hợp vi phạm truy cập kể trên, trường hợp đầu có ảnh hưởngnghiêm trọng đến tài nguyên của hệ thống Bởi vì, khi đó tính bảo mật, tínhtoàn vẹn của hệ thống sẽ không được đảm bảo Ở trường hợp vi phạm thứ hai,tuy không dẫn đến nguy cơ rò rỉ hoặc làm sai lệch tài nguyên của hệ thống,nhưng khi đó người dùng không hoàn thành được các công việc được giao theoquy định Do đó, kiểu vi phạm này sẽ làm mất tính sẵn sàng của hệ thống
Để giải quyết bài toán này, luận án giả sử rằng chính sách điều khiển truycập của hệ thống đã được đặc tả nhất quán và đầy đủ với các yêu cầu của các
tổ chức Các phương pháp chính được sử dụng trong quá trình thực hiện luận
án là phân tích mã nguồn, mô hình hóa và so sánh Ngoài mục đích kiểm tra sựphù hợp của chính sách truy cập được triển khai và đặc tả, các phương pháp đềxuất của luận án còn cung cấp các thông tin về các quy tắc truy cập đã triểnkhai không chính xác (nếu có) để giúp các nhà lập trình có thể lần vết và thựchiện các điều chỉnh kịp thời
Đối tượng nghiên cứu của luận án là chính sách điều khiển truy cập của hệthống web Cụ thể là chính sách điều khiển truy cập theo vai trò và chính sáchđiều khiển truy cập theo thuộc tính Đồng thời, luận án quan tâm đến các môhình biểu diễn, đặc tả chính sách và các phương pháp triển khai chính sách trong
hệ thống ứng dụng Từ đó, mã nguồn của ứng dụng được phân tích, tổng hợp
và kiểm chứng
1.2 Nội dung nghiên cứu
Kiểm soát truy cập đã được chứng minh trong thực tiễn là một trong những
kỹ thuật hiệu quả để ngăn chặn các vi phạm truy cập nhằm đảm bảo các tínhbảo mật, tính toàn vẹn và tính sẵn sàng của các hệ thống phần mềm Trong thực
tế, có nhiều mô hình kiểm soát truy cập đã được đề xuất [50, 83, 101] nhưngđiều khiển truy cập theo vai trò (RBAC) và điều khiển truy cập theo thuộc tính(ABAC) là hai mô hình được triển khai phổ biến và hiệu quả trong các hệ thốngứng dụng [44] Tuy nhiên, việc đảm bảo tính chính xác của những chính sách
Trang 20điều khiển truy cập này được triển khai trong các hệ thống ứng dụng ở giai đoạnlập trình luôn là một thách thức lớn đối với các nhà phát triển phần mềm.Bên cạnh đó, với nhiều thư viện được tích hợp để hỗ trợ cho việc triển khaicác chính sách điều khiển truy cập được an toàn, ngôn ngữ lập trình Java cũngđược các nhà lập trình thường lựa chọn để phát triển các sản phẩm của họ Khi
đó, chính sách điều khiển truy cập của hệ thống có thể được triển khai theophương pháp an ninh lập trình và/hoặc an ninh khai báo theo kiến trúc MVC,khung làm việc Spring Security Vì thế, phạm vi nghiên cứu của luận án là các
hệ thống web được phát triển bởi JavaEE theo kiến trúc MVC, khung làm việcSpring Security Để hoàn thành các mục tiêu đã đề ra, luận án tập trung nghiêncứu các nội dung chính sau:
Nghiên cứu các mô hình biểu diễn các chính sách điều khiển truy cập của
hệ thống phần mềm: điều khiển truy cập theo vai trò, ngôn ngữ mô hìnhhóa chính sách an ninh thống nhất (SecureUML), điều khiển truy cập theothuộc tính
Nghiên cứu các phương pháp an ninh lập trình, an ninh khai báo để triểnkhai chính sách RBAC, ABAC của các hệ thống web theo mô hình kiếntrúc MVC, khung làm việc Spring Security
Đề xuất các phương pháp phân tích mã nguồn, biểu diễn chính sách điềukhiển truy cập của hệ thống web
Đề xuất các thuật toán kiểm tra sự phù hợp của mô hình chính sách điềukhiển truy cập của hệ thống web và đặc tả
Cài đặt các công cụ theo các phương pháp đã đề xuất để hỗ trợ quá trìnhkiểm chứng tự động
đó kết hợp với thành phần Controller và V iew để xây dựng đồ thị khai
Trang 21thác tài nguyên Các thông tin cốt lõi của chính sách điều khiển truy cập
có trong đồ thị sẽ được trích xuất thành ma trận kiểm soát truy cập theovai trò Một thuật toán được giới thiệu nhằm phát hiện những quy tắctruy cập được triển khai không chính xác trong ứng dụng web Công cụCheckingRBAC đã được xây dựng để hỗ trợ quá trình kiểm chứng theophương pháp đề xuất
(ii) Đề xuất phương pháp kiểm chứng chính sách RBAC kết hợp ràng buộc cấpquyền triển khai theo phương pháp an ninh khai báo Chính sách truy cậpcủa ứng dụng web được kiểm tra thông qua việc truy vấn cơ sở dữ liệu vàphân tích các tệp cấu hình chính sách điều khiển truy cập Một cây phântích truy cập theo vai trò được đề xuất để biểu diễn các quy tắc cấp quyềntheo vai trò và các ràng buộc cấp quyền của ứng dụng web Hai thuật toánđược đề xuất để phát hiện các phép gán đã triển khai không phù hợp vớiđặc tả Phương pháp đề xuất đã được triển khai thành công cụ tên là VeRA
Các kết quả nghiên cứu của luận án góp phần bổ sung và hoàn thiện cácphương pháp phân tích, biểu diễn và kiểm tra các chính sách điều khiển truycập của các hệ thống web Bên cạnh đó, các công cụ kiểm chứng tự động đượcphát triển từ các phương pháp đề xuất trong luận án cũng đã tiến hành một sốthực nghiệm với hệ thống quản lý hồ sơ y tế Bước đầu, các công cụ cho các kếtquả kiểm chứng theo đúng như dự kiến
1.4 Cấu trúc luận án
Luận án “Một số phương pháp kiểm chứng các chính sách điều khiển truy cậpcho hệ thống phần mềm” bao gồm 6 chương Trong đó, Chương 1 Giới thiệu
Trang 22trình bày về lý do thực hiện đề tài, đối tượng, phạm vi, nội dung nghiên cứu,các đóng góp và cấu trúc của luận án Các chương tiếp theo của luận án được
tổ chức như Hình 1.1 và có nội dung lần lượt như sau:
Chương 4:
- Chính sách RBAC + ràng buộc cấp quyền,
- Triển khai theo phương pháp an ninh khai báo,
- Kiến trúc Spring Security
Mục tiêu: Phát hiện các phép
gán người dùng – vai trò, vai trò – quyền được triển khai không chính xác
Chương 6:
Kết luận
Đề xuất các phương pháp kiểm chứng:
Hình 1.1: Cấu trúc của luận án
Chương 2Kiến thức cơ sở trình bày về các kiến thức nền tảng được sử dụngtrong các chương tiếp theo Mở đầu của chương là một số tính chất an ninh củaphần mềm, chính sách điều khiển truy cập Ở mục kế tiếp, luận án trình bày
về một số mô hình phổ biến được sử dụng để biểu diễn chính sách điều khiểntruy cập của các hệ thống phần mềm Các phương pháp triển khai mã an ninhtruy cập và một số kiến trúc thiết kế phần mềm trong JavaEE được mô tả trongMục2.3 Cuối cùng, Mục2.4 giới thiệu một số phương pháp phân tích mã nguồn
và biểu diễn chương trình phần mềm
Chương 3 Phương pháp kiểm chứng chính sách RBAC triển khai theo phươngpháp an ninh lập trình, đầu tiên của chương này sẽ trình bày các bước phântích mã nguồn để xây dựng danh sách các quyền, đồ thị khai thác tài nguyên và
ma trận kiểm soát truy cập theo vai trò của các ứng dụng web Tiếp theo, haithuật toán được đề xuất để xây dựng ma trận kiểm soát truy cập theo vai trò
từ đồ thị khai thác tài nguyên và kiểm tra sự phù hợp của chính sách điều khiểntruy cập trong ứng dụng web và đặc tả Cuối cùng, một công cụ kiểm chứng tên
Trang 23là CheckingRBAC được xây dựng theo phương pháp đề xuất và tiến hành thựcnghiệm với hệ thống quản lý hồ sơ y tế.
Chương 4 Phương pháp kiểm chứng chính sách RBAC kết hợp ràng buộc cấpquyền triển khai theo phương pháp an ninh khai báo tập trung đề xuất cácphương pháp phân tích cơ sở dữ liệu và mã nguồn của ứng dụng web để phục
vụ cho quá trình kiểm chứng phép gán vai trò - người dùng và phép gán vai trò
- quyền trong chính sách điều khiển truy cập của hệ thống Một cây phân tíchcác quy tắc truy cập theo vai trò được giới thiệu để biểu diễn chính sách cấpquyền theo vai trò trong ứng dụng web Sau đó, hai thuật toán được đề xuất đểphát hiện những phép gán không được triển khai chính xác như trong đặc tả.Công cụ VeRA được phát triển để hỗ trợ quá trình kiểm chứng tự động theophương pháp đề xuất Một số thực nghiệm của công cụ đã được tiến hành vớichính sách điều khiển truy cập của hệ thống quản lý hồ sơ y tế
Chương 5Phương pháp kiểm chứng chính sách điều khiển truy cập theo thuộctính, chương này đề xuất phương pháp phân tích và xây dựng tập quy tắc truycập từ mã nguồn của ứng dụng web Sự phù hợp của chính sách truy cập trongứng dụng web với đặc tả của nó được thực hiện thông qua các định nghĩa hìnhthức và thuật toán để kiểm tra tính bảo mật, tính toàn vẹn và tính sẵn sàng của
hệ thống Phương pháp đề xuất đã được triển khai thành công cụ kiểm chứngAPVer và thực nghiệm với các kịch bản vi phạm tính bảo mật, tính toàn vẹn
và tính sẵn sàng của hệ thống quản lý hồ sơ y tế
Cuối cùng là Chương 6 Kết luận Chương này tiến hành phân tích về các ưu,nhược điểm của từng phương pháp đã đề xuất và so sánh với một số phươngpháp nghiên cứu liên quan Từ đó, luận án thảo luận về các hướng nghiên cứutiếp theo trong tương lai
Trang 24có được sử dụng trong phân tích chương trình và một số phương pháp biểu diễnchương trình.
2.1 An ninh phần mềm
Phần mềm đang được sử dụng rộng rãi trong nhiều lĩnh vực của đời sống
xã hội, văn hóa, v.v Do đó, chất lượng của phần mềm có ảnh hưởng trực tiếphoặc/và gián tiếp đến người sử dụng Bên cạnh những lợi ích mà phần mềm manglại, thì cũng xuất hiện nhiều vấn đề vi phạm truy cập tài nguyên làm ảnh hưởngđến chất lượng phần mềm và người dùng trong hệ thống [39,60,91,99,100,102].Một số sự cố an ninh phổ biến hay được nhắc đến là thất thoát hoặc làm sailệch các thông tin riêng tư, quan trọng do hệ thống quản lý
Trong nghiên cứu [39], năm 2013, tập đoàn Target Corporation của Mỹ đãphát hiện ra thông tin thẻ ghi nợ và thẻ tín dụng cũng như thông tin địa chỉ,thư điện tử và số điện thoại của khoảng 70 triệu khách hàng đã bị xâm phạm.Chi phí khắc phục vụ vi phạm này ước tính là 300 triệu đô la Hay vi phạm dữliệu của công ty Sony Pictures Entertainment đã ảnh hưởng đến hơn 3.000 máytính khi bị phá hủy dữ liệu và phần mềm khởi động Việc tin tặc xâm phạmmạng PlayStation của Sony vào năm 2011 đã ảnh hưởng đến khoảng 100 triệutài khoản khách hàng và công ty phải đối mặt với chi phí khắc phục ít nhất là
Trang 25171 triệu đô la Thêm vào đó là vụ gian lận của Sony dẫn đến việc những bộphim chưa được phát hành đã bị chia sẻ Cũng trong nghiên cứu này, với một
số loại hình tổ chức cơ bản thì năm 2015 chứng kiến 24% vi phạm trong cáccông ty công nghệ, 19% trong các tổ chức y tế và 14% trong giải trí Tương tự,năm 2016, những vi phạm từ các tổ chức được báo cáo là công nghệ (21%), y
tế (17%), xã hội (8%) và chính phủ (8%) Theo Viện Tiêu chuẩn và Công nghệQuốc gia của Mỹ (National Institute of Standards and Technology - NIST) năm
2012, các cuộc tấn công an ninh mạng đang gia tăng về số lượng, tính đa dạng,mức độ thiệt hại Trong nghiên cứu của viện Ponemon1 năm 2017 với 419 công
ty trong 13 quốc gia thì trung bình chi phí cho một vi phạm dữ liệu là 3,62 triệu
đô la; 141 đô là là chi phí trung bình cho mỗi bản ghi bị mất hoặc bị đánh cắp;khả năng tái xảy ra vi phạm an ninh trong hai năm tiếp theo là 27,7%
Theo báo cáo về các mối đe dọa an ninh Internet năm 2019 của Symantec2,các kiểu tấn công và vi phạm an ninh ngày càng tinh vi Một số loại phổ biến làFormjacking (một loại mã độc cài vào trang web để lấy cắp thông tin của kháchhàng) hay Ransomware (ngăn chặn người dùng truy cập và sử dụng tài nguyêncủa họ) Trong đó, chiếm đến 56% là các vụ tấn công web Bên cạnh đó, cácnghiên cứu [60, 91] cũng cho thấy số các vi phạm dữ liệu cá nhân trong lĩnh vựcnhư y tế thống kê được là tăng thường xuyên
Thực tế cho thấy, an ninh phần mềm đã trở thành một tiêu chí quan trọngtrong việc đánh giá các hệ thống phần mềm trong giai đoạn hiện nay Để hạnchế các vi phạm an ninh, các nhà phát triển thường phải xây dựng, triển khai
và đảm bảo chính sách an ninh trong các sản phẩm phần mềm của họ nhằm đápứng các yêu cầu an ninh của khách hàng Khi đó, sự phù hợp của chính sách
an ninh được triển khai trong mỗi hệ thống ứng dụng với các yêu cầu của nó sẽđược thể hiện thông qua các tính chất an ninh của phần mềm
2.1.1 Một số tính chất an ninh của phần mềm
Các tính chất an ninh của phần mềm đã được nhiều tổ chức, nhà nghiên cứuxem xét ở nhiều khía cạnh theo từng quan điểm và thời điểm nghiên cứu khácnhau Tuy nhiên, các tính chất an ninh phổ biến nhất được nhắc đến là bộ baC-I-A (Confidentiality - Integrity - Availability) [20, 74] Ba tính chất này xuấthiện sớm nhất năm 1972 trong tài liệu của James P.Anderson’s và được thảo
1 https://www.ponemon.org/library/2017-cost-of-data-breach-study-united-states
2 https://www.symantec.com/security-center/threat-report
Trang 26luận nhiều trong các nghiên cứu sau đó Trong đó: tính bảo mật (confidentiality)đảm bảo thông tin chỉ có thể truy cập bởi người dùng có quyền; tính toàn vẹn(integrity) bảo vệ tính chính xác và đầy đủ của thông tin và chỉ được sửa đổibởi người có thẩm quyền; tính sẵn sàng (availability) đảm bảo rằng người dùnghợp pháp được truy cập thông tin và các tài sản liên quan khi cần Sau đó, ISO7498-2 đã bổ sung thêm hai tính chất để phù hợp cho mạng truyền thông là tínhxác thực (authentication - khả năng hệ thống xác nhận danh tính của ngườigửi) và tính chống chối bỏ/tính trách nhiệm (nonrepudiation/accountablility -người gửi không thể từ chối những gì họ đã thao tác trong hệ thống) Tiếp theo
đó, Bộ Quốc phòng Mỹ đã bổ sung tính có khả năng kiểm toán (auditability)
để theo dõi tất cả các hành động liên quan đến tài nguyên
Bên cạnh đó, theo nghiên cứu của Mead và các đồng tác giả [65], một số cáctính chất an ninh cốt lõi của phần mềm gồm tính bảo mật (confidentiality), tínhtoàn vẹn (integrity), tính sẵn sàng (availability), tính trách nhiệm (accountabil-ity) và tính chống chối bỏ (non-repudiation) Ngoài ra còn một số tính chất khác
có ảnh hưởng gián tiếp đến vấn đề an ninh phần mềm Tất cả các tính chất nàyđược mô tả như trong Hình 2.1
Hình 2.1: Một số tính chất an ninh của phần mềm
Tính bảo mật: phần mềm phải đảm bảo rằng, các tính năng của của phầnmềm, tài sản do phần mềm quản lý và/hoặc nội dung của tài sản sẽ đượcche giấu hoặc ẩn bởi các thực thể trái phép nhưng phải sẵn sàng cho cácthực thể hợp pháp Điều này còn phải thích hợp cả với các trường hợp phầnmềm nguồn mở
Tính toàn vẹn: Phần mềm và các tài sản mà nó quản lý phải có tính bền
và phục hồi đối với các tấn công an ninh nhằm sửa đổi trái phép mã nguồn,
Trang 27tài sản nó quản lý, cấu hình của các thực thể hợp pháp, hoặc bất cứ sửa đổinào khác từ những thực thể bất hợp pháp Những sửa đổi có thể gồm việcghi đè, làm hỏng, giả mạo, phá hoại, chèn (gồm cả mã độc) hoặc xóa Tínhtoàn vẹn phải bảo toàn cả trong khi thực thi và phát triển phần mềm.
Tính sẵn sàng: Phần mềm phải hoạt động và có thể truy cập được như
dự định bởi những người dùng hợp pháp (con người hoặc tiến trình) bất cứkhi nào nhưng không được thực hiện bởi người dùng trái phép
Tính trách nhiệm: Tất cả các hành động liên quan đến an ninh của ngườidùng phần mềm phải được ghi lại và theo dõi Việc theo dõi này có thểtrong và sau khi các hành động xảy ra Do đó, trong chính sách an ninh cho
hệ thống phần mềm nên chỉ ra những hành động được coi là liên quan đến
Một số chuẩn an ninh thường được áp dụng trong quá trình xây dựng chínhsách an ninh của hệ thống phần mềm là ISO/IEC 27002:20133 (cung cấp nhữngkhuyến cáo thực tiễn tốt nhất trong quản lý, an toàn thông tin về cách sử dụngcho những người có trách nhiệm trong việc khởi xướng, thực hiện hay bảo trì các
hệ thống quản lý, an toàn thông tin), ISO/IEC 27034:2011+4 (cung cấp hướngdẫn về an ninh thông tin cho những nhà đặc tả, thiết kế và lập trình, triển khaihoặc sử dụng các hệ thống ứng dụng tránh được các rủi ro an ninh) Trong cácchuẩn này, điều khiển truy cập là một trong các biện pháp cần được tiến hành
3 https://www.iso.org/standard/54533.html
4 https://www.iso27001security.com/html/27034.html
Trang 28trong quá trình phát triển phần mềm để góp phần đảm bảo chính sách an ninhcủa các hệ thống phần mềm.
2.1.2 Chính sách điều khiển truy cập
Theo nghiên cứu của Ravi S Sandhu, Pierangela Samarati năm 1994 và báocáo liên ngành 7316 của NIST [43], điều khiển truy cập có liên quan đến việcxác định các hoạt động được phép của người dùng hợp pháp, làm trung giangiữa người dùng và tài nguyên của hệ thống Trong đó, điều khiển truy cập phụthuộc và cùng tồn tại với các dịch vụ bảo mật khác trong hệ thống máy tính(Hình 2.2) Điều khiển truy cập được thi hành bởi một bộ giám sát tham chiếutrung gian Do đó, nó liên quan đến việc xác định các hoạt động được phép củangười dùng hợp pháp, làm trung gian khi người dùng có các yêu cầu truy cậptới tài nguyên của hệ thống Bộ giám sát tham chiếu sẽ tham khảo cơ sở dữ liệu
ủy quyền để xác định xem liệu người dùng đang cố gắng thực hiện thao tác vớitài nguyên hệ thống có được ủy quyền thực sự hay không Cơ sở dữ liệu nàyđược quản trị bởi nhân viên an ninh của tổ chức Thêm vào đó, hoạt động kiểmtoán có nhiệm vụ lưu giữ hồ sơ về các hoạt động truy cập của người dùng trong
Security
Administrator
Auditing
Hình 2.2: Điều khiển truy cập và một số dịch vụ an ninh
Chính sách điều khiển truy cập bao gồm một số quy tắc điều khiển truy cậpnhằm xác định các điều kiện theo đó quyền truy cập có thể diễn ra [43] Mỗiquy tắc là một biểu thức lôgic của các yếu tố điều khiển truy cập cơ bản nhưchủ thể, hoạt động và đối tượng Các quy tắc điều khiển truy cập có thể được
Trang 29soạn thảo thông qua giao diện người dùng, được cung cấp bởi một cơ chế như
là ngôn ngữ điều khiển truy cập hoặc các công cụ đồ họa có sự tương tác Cácgiao diện đồ họa có hiệu quả trong việc mô tả một số loại chính sách điều khiểntruy cập nhất định nhưng có hạn chế khi số lượng quan hệ cần thiết để tạo quytắc điều khiển truy cập Ví dụ, một số cơ chế cho phép kế thừa các quyền truycập: nếu người dùng x được gán cho nhóm người dùng A, kế thừa quyền truycập từ nhóm B, thì x tự động thừa hưởng tất cả các quyền của B Mối quan
hệ bắt buộc duy nhất cho việc này là quan hệ được gán của x và A Các cơ chếkhác không có ngữ nghĩa thừa kế từ A đến B có thể được yêu cầu để xác địnhmối quan hệ bổ sung của x và B
Điều khiển truy cập là một biện pháp hiệu quả để đạt được tính bảo mật,tính toàn vẹn và tính sẵn sàng cho các hệ thống phần mềm Có nhiều loại môhình đã được nghiên cứu, đề xuất cho việc thực thi các chính sách điều khiểntruy cập tài nguyên của hệ thống như MAC, DAC, RBAC, ABAC, v.v Mỗi
mô hình đều có những ưu nhược điểm riêng [50, 101, 83] Tuy nhiên, với các tổchức doanh nghiệp vừa và nhỏ thì mô hình RBAC là mô hình linh hoạt, phùhợp được sử dụng phổ biến nhất hiện nay Trong khi đó, với các hệ thống web
có quy mô lớn và có chính sách truy cập phức tạp, mô hình ABAC sẽ đáp ứngtốt hơn các mô hình khác Vì thế, trong mục tiếp theo, luận án sẽ trình bày chitiết về mô hình điều khiển truy cập theo vai trò, ngôn ngữ mô hình hóa chínhsách an ninh thống nhất và mô hình điều khiển truy cập theo thuộc tính Đây
là những mô hình biểu diễn phổ biến, hiệu quả các chính sách điều khiển truycập của các hệ thống web được sử dụng trong các đề xuất của luận án
2.2 Một số mô hình chính sách điều khiển truy cập
2.2.1 Điều khiển truy cập theo vai trò
Điều khiển truy cập theo vai trò (Role-Based Access Control - RBAC) [33, 34]
là mô hình điều khiển truy cập được sử dụng phổ biến, hiệu quả trong các ứngdụng doanh nghiệp Mô hình RBAC cơ bản được mô tả như Hình2.3, gồm nămphần tử là Users, Roles, Permissions, Objects và Operations Trong đó, Usersđược hiểu đơn giản là những người tham gia vào hệ thống Roles đại diện chocác vị trí công việc trong tổ chức nhằm phản ánh trách nhiệm, bổn phận củangười dùng Permissions mô tả các quyền tương ứng của các vai trò trong hệthống Mỗi Permission chỉ ra hành động (Operation) được thực hiện trên tàinguyên cần bảo vệ (Object )
Trang 30Permission Assignment
User Assignment
Permissions Operations Objects
Role Hierarchy
Hình 2.3: Mô hình RBAC cơ bản
Khái niệm trọng tâm của mô hình RBAC là vai trò Các mối quan hệ cơ bảncủa mô hình là Permission Assignment, User Assignment và Role Hierarchy.Trong mô hình này, một người dùng có thể được gán với nhiều vai trò và mộtvai trò có thể có một số người dùng Mỗi vai trò được gán với một số quyền, vàđược định nghĩa phụ thuộc vào các chính sách của tổ chức Hai nguyên tắc cơbản của RBAC là cấp quyền tối thiểu và phân chia nhiệm vụ Những nguyêntắc này giúp người dùng trong mô hình RBAC chỉ có vừa đủ các vai trò và cácquyền để thực hiện chức trách của họ Sự thừa kế giữa các vai trò được mô tảtrong Role Hierarchy Vai tròr1 thừa kế vai tròr2 nếu vai tròr1 chứa tất cả cácquyền của r2 Trong mô hình RBAC cơ bản, các thành phần và các mối liên hệgiữa chúng được mô tả hình thức như Định nghĩa 2.1 [34]
Định nghĩa 2.1 Mô hình RBAC cơ bản là một bộ có tám thành phần được
ký hiệu là MRBAC = <Users, Roles, Permissions, Operations, Objects, UserAssignment, Permission Assignment, Role Hierarchy> Trong đó:
Users, Roles, P ermissions, Operations, vàObjectslần lượt là tập những ngườidùng, vai trò, quyền, phép toán, và đối tượng có trong hệ thống
UserAssignment (UA) ⊆ Users × Roles là phép gán nhiều - nhiều giữa ngườidùng và vai trò
assigned_users(r) = {u ∈ U sers | (u, r) ∈ U A)} là ánh xạ từ một vai trò
r ∈ Roles đến những người dùng của vai trò đó
P ermissions = 2 Operations×Objects là tập các quyền
P ermissionAssignment (P A) ⊆ Roles × P ermissions là phép gán nhiều nhiều giữa quyền và vai trò
-assigned_permissions(r) = {p ∈ P ermissions | (r, p) ∈ P A} là ánh xạ từ
một vai trò r ∈ Roles đến các quyền của vai trò đó
Trang 31 RoleHierarchy (RH) ⊆ Roles × Roles định nghĩa một mối quan hệ thừa kếgiữa các vai trò Vai trò r1 thừa kế (được ký hiệu bởi ) vai trò r2 nếu vaitrò r1 có tất cả các quyền của r2.
r1 r2 → authorized_permissions(r2) ⊆ authorized_permissions(r1) authorized_permissions(r) = {p ∈ P ermissions | (r0 r, (p, r0) ∈ P A} làánh xạ từ vai trò r đến tập quyền của vai trò đó trong phân cấp vai trò.Trong mô hình RBAC, người dùng không được thực hiện các hành động mộtcách trực tiếp đến các tài nguyên của hệ thống mà phải gián tiếp thông qua cácvai trò, để được cấp quyền thực hiện Vì thế một vị trí công việc của người dùnghoặc các quy định của tổ chức có sự thay đổi thì người quản trị hệ thống có thể
dễ dàng thay đổi các vai trò, quyền bằng cách bổ sung hoặc loại bỏ chúng Điềunày làm tăng tính linh hoạt trong việc quản lý chính sách điều khiển truy cậpcủa hệ thống [33, 34]
Ví dụ: Giả sử một hệ thống quản lý hồ sơ y tế (hệ thống này sẽ được sửdụng trong phần thực nghiệm của Chương 3) có ba người dùng là Ann, Tom
và Bob Mỗi người dùng trong hệ thống có thể có các vai trò Bác sĩ (Doctor),
Lễ tân (Receptionist) hoặc Y tá (Nurse) Theo phân công nhiệm vụ của bệnhviện, Tom là y tá, Bob là bác sĩ và Ann là lễ tân Trong hệ thống, Bác sĩ có cácquyền đọc (Read) và cập nhật (Update) các hồ sơ y tế (MedicalRecord), Y tá cóquyền đọc (Read) các hồ sơ y tế và Lễ tân có quyền tạo (Create) các hồ sơ y tế.Khi đó, mô hình RBAC của hệ thống bệnh viện này được định nghĩa hình thức:
MRBAC = <U, R, Prm, Op, Ob, UA, PA, RH>, trong đó:
U = {Bob, Tom, Ann}
R = {Doctor, Receptionist, Nurse}
Op ={Read, Update, Create}
Ob = {MedicalRecord }
P rm ={(Read, MedicalRecord ), (Update, MedicalRecord ), (Create, Record )}
Medical- UA = {(Tom, Nurse), (Bob, Doctor ), (Ann, Receptionist )}
P A = {(Nurse, (Read, MedicalRecord )),(Doctor, (Read, MedicalRecord )),(Doctor, (Update, MedicalRecord )), (Receptionist, (Create, MedicalRecord ))}
RH ={∅}
Trang 32Tuy nhiên, khi bài toán cấp quyền không chỉ phụ thuộc vào vai trò của ngườidùng trong hệ thống mà việc cấp quyền cho người dùng còn phải được thỏa mãnbởi một số ràng buộc khác như thời gian thực hiện, quyền sở hữu tài nguyên thìviệc biểu diễn ràng buộc trong chính sách truy cập của hệ thống với mô hìnhRBAC gặp khó khăn vì mô hình chưa có thành phần để biểu diễn ràng buộccấp quyền Khi đó, chính sách truy cập của hệ thống biểu diễn bằng ngôn ngữ
mô hình hóa chính sách an ninh thống nhất sẽ đầy đủ và hiệu quả
2.2.2 Ngôn ngữ mô hình hóa chính sách an ninh thống nhất
Siêu mô hình SecureUML được mô tả như Hình 2.4, là một ngôn ngữ mô hìnhhóa được kết hợp từ siêu mô hình UML (Unified Modeling Language) và môhình điều khiển truy cập theo vai trò (RBAC) [14, 57,63] Đặc biệt, SecureUMLcung cấp các định nghĩa từ vựng hỗ trợ cho việc đặc tả các ràng buộc cấp quyềntheo các khía cạnh khác nhau của điều khiển truy cập theo vai trò Trong đó,các kiểu siêu mô hình mới U ser, Role, P ermission và các mối liên hệ giữa chúngđược hiểu tương tự như trong mô hình RBAC Các siêu khái niệm khác trong
mô hình được mô tả như sau:
RoleAssignment PermissionAssignment ProtectedObject
0 *
0 1 Containment
0 *
1
1 Inheritance
Hình 2.4: Siêu mô hình SecureUML
ResourceSetđại diện cho một tập người dùng đã định nghĩa của các phần tử
mô hình được dùng để định nghĩa các quyền và các ràng buộc cấp quyền Bêncạnh đó, các tài nguyên cần bảo vệ được tổng quát hóa thànhM odelElement
MộtP ermissionkết nối một vai trò và mộtM odelElementhoặcResourceSet
ActionT ype được sử dụng để phân loại các quyền Mỗi ActionT ype đại diện
Trang 33cho một lớp các phép toán liên quan đến an ninh trên một kiểu tài nguyên
cụ thể cần bảo vệ Ví dụ như một phương thức với các hành động liên quanđến an ninh Execute hay một thuộc tính với hành động Change và Read.Các kiểu hành động cũng có thể đại diện cho các lớp phép toán mang tínhkhái niệm ở một mức trừu tượng cao hơn Một lớp có thể chứa các phươngthức và các thuộc tính ActionT ype được sử dụng để mô tả ngữ nghĩa vàphân loại P ermission
Một ResourceT ype định nghĩa tất cả các kiểu hành động sẵn có cho mộtkiểu siêu mô hình cụ thể Tập các kiểu tài nguyên, các kiểu hành động và
sự định nghĩa ngữ nghĩa của chúng trên một nền tảng cụ thể xác định môhình kiểu tài nguyên cho nền tảng
Một AuthorizationConstraint là một phần của chính sách điều khiển truycập của một ứng dụng Nó diễn tả một tiền điều điện cần được thỏa mãntrước khi gọi đến phép toán cho một tài nguyên cụ thể Nó thường phụthuộc vào trạng thái động của tài nguyên, lời gọi hiện tại hoặc môi trường
AuthorizationConstraint xuất phát từ kiểu nòng cốt Constraint của UML.Một ràng buộc được đính kèm trực tiếp hoặc gián tiếp thông qua một quyềnđến một phần tử mô hình cụ thể đại diện cho một tài nguyên được bảo vệ
Ví dụ: Giả sử trong một hệ thống quản lý hồ sơ y tế của một bệnh viện (hệthống này sẽ được sử dụng trong phần thực nghiệm của Chương4), có ba vai tròtrong hệ thống là Doctor, P atient và Receptionist Người dùng trong hệ thốngthao tác với tài nguyên (PatientRecord) thông qua vai trò của họ theo quy tắc:Bệnh nhân chỉ đọc hồ sơ y tế của họ, Bác sĩ có quyền đọc và cập nhật hồ sơbệnh nhân của những bệnh nhân được họ điều trị (một bác sĩ có thể điều trị chonhiều bệnh nhân), Nhân viên lễ tân có quyền tạo hồ sơ y tế Chính sách truycập theo vai trò và các ràng buộc cấp quyền của hệ thống này được mô tả trựcquan như trong Hình 2.5
Dễ thấy rằng, với SecureUML chính sách điều khiển truy cập theo vai trò đãđược mở rộng hơn khi được bổ sung các ràng buộc cấp quyền Tuy nhiên, vớicác hệ thống phần mềm, khi mà tiêu chí cấp quyền cho người dùng không chỉphụ thuộc vào vai trò của họ mà còn phụ thuộc vào các thông tin khác như trình
độ chuyên môn hay địa chỉ vật lý mạng của người dùng, thì việc biểu diễn chínhsách truy cập của hệ thống với SecureUML rất cồng kềnh và phức tạp Hoặc vớinhững hệ thống lớn, có sự liên kết giữa nhiều tổ chức, thì mô hình RBAC khôngthể diễn tả được chính sách điều khiển truy cập của hệ thống Bởi vì, những
Trang 34- mrID: String
- pID: String
- dID: String
- contents: String
+ getMrID() + getPID() + getDID() + getContents() + setContents()
người dùng của tổ chức liên kết sẽ không truy cập được tới tài nguyên hệ thống
vì họ không có vai trò trong tổ chức đó Trong những trường hợp này, mô hìnhđiều khiển truy cập theo thuộc tính sẽ biểu diễn chính sách điều khiển truy cậpcủa hệ thống hiệu quả và linh hoạt hơn
2.2.3 Điều khiển truy cập theo thuộc tính
Điều khiển truy cập theo thuộc tính (ABAC) [41, 42, 45] là mô hình điềukhiển truy cập rất linh hoạt và hiệu quả Trong đó, quyết định truy cập đốivới tài nguyên của hệ thống được thực hiện dựa trên các thuộc tính của ngườidùng, thuộc tính của đối tượng và thuộc tính của môi trường được yêu cầu.NIST (National Institute of Standards and Technology) định nghĩa ABAC làmột phương thức điều khiển truy cập, trong đó chủ thể yêu cầu thực hiện cácthao tác trên các đối tượng được cấp quyền hoặc từ chối dựa trên các thuộc tínhđược gán của chủ thể, các thuộc tính được gán của đối tượng, các điều kiện môitrường và một bộ chính sách được xác định đối với các thuộc tính và điều kiệnđó
Các thuộc tính là các thông tin về các đặc điểm của chủ thể, đối tượng hoặcđiều kiện môi trường Chúng được cung cấp bởi một cặp tên - giá trị
Trang 35 Chủ thể là người dùng hoặc thực thể không phải là người (ví dụ như mộtthiết bị) đưa ra các yêu cầu truy cập để thực hiện các thao tác trên các đốitượng Các chủ thể được gán một hoặc nhiều thuộc tính Đối với nghiêncứu này này, chủ thể và người dùng được hiểu đồng nghĩa.
Đối tượng được hiểu là các tài nguyên của hệ thống Ví dụ như thiết bị, tệp,bản ghi, bảng, quy trình, chương trình, mạng hoặc miền chứa/nhận thôngtin Nó có thể là thực thể được yêu cầu, cũng như mọi thứ mà một hoạtđộng có thể được thực hiện bởi một chủ thể bao gồm dữ liệu, ứng dụng,dịch vụ, thiết bị và mạng
Một phép toán là việc thực hiện một hoạt động nào đó theo yêu cầu củamột chủ thể trên một đối tượng Các hoạt động thường bao gồm đọc, viết,chỉnh sửa, xóa, sao chép, thực hiện và sửa đổi
Chính sách là sự thể hiện của các quy tắc hoặc các mối quan hệ giúp xácđịnh một yêu cầu truy cập có nên được phép hay không, với các giá trị củacác thuộc tính của chủ thể, đối tượng và có thể cả các điều kiện môi trường
Điều kiện môi trường là bối cảnh hoạt động hoặc tình huống, trong đó yêucầu truy cập xảy ra Điều kiện môi trường là đặc điểm môi trường độc lậpvới chủ thể, đối tượng và có thể bao gồm thời gian hiện tại, ngày trongtuần, vị trí của người dùng hoặc mức độ đe dọa hiện tại
Cơ chế ABAC được mô tả trong Hình 2.6 Trong đó: điểm thực thi chính sách(Policy Enforcement Point - PEP ) là nơi thực thi quyết định ủy quyền để đáp
(PDP)
Subject Attribute
Object Attribute Object
Hình 2.6: Cơ chế điều khiển truy cập theo thuộc tính
Trang 36ứng các yêu cầu từ các chủ thể; điểm quyết định chính sách (Policy DecisionPoint - PDP ) chịu trách nhiệm đánh giá các yêu cầu của các chủ thể theo cácthuộc tính của chủ thể, các thuộc tính của đối tượng và điều kiện môi trườngcùng chính sách hiện hành để đưa ra quyết định cấp phép hoặc từ chối yêu cầucủa chủ thể Các thành phần và chính sách cấp quyền trong mô hình ABACđược mô tả hình thức như Định nghĩa 2.2.
Định nghĩa 2.2 Mô hình ABAC là một bộ có tám thành phần MABAC =
hS,RS,E,As,Ars,Ae,OP,Pi Trong đó:
1 S, RS và E là tập các chủ thể, tài nguyên và môi trường
2 OP là tập các phép toán có thể được thực hiện trên tài nguyên bởi các chủthể như: create, read, modif y, delete
3 As, Ars, Ae là tập các thuộc tính của chủ thể s, tài nguyên rs và môi trườnge
4 Một quy tắc truy cập R là một hàm Boolean trên tập các thuộc tính của chủthểs ∈ S, phép toánop ∈OP, và tài nguyên rs ∈RS trong môi trườnge ∈E
Lễ tân có quyền tạo hồ sơ y tế cho những bệnh nhân trong bệnh viện của họ
Mỗi bệnh viện thường có nhiều chuyên khoa để điều trị cho nhiều đối tượngbệnh nhân khác nhau như khoa tim mạch, khoa thần kinh, khoa tai mũi họng,v.v Các bác sĩ thường làm việc cho một bệnh viện và chịu trách nhiệm điều trịcho một số bệnh nhân trong khoa họ làm việc Bên cạnh đó, giữa một số bệnh
Trang 37viện thường có sự kết hợp trong khám và điều trị y khoa bằng các thỏa thuậntrong việc chia sẻ hồ sơ y tế.
Giả sử rằng, mỗi bệnh nhân trong hệ thống chăm sóc sức khỏe này chỉ có một
mã định danh và có thể khám nhiều lần tại cùng hoặc khác bệnh viện trong hệthống liên kết ở các thời điểm khác nhau Tuy nhiên tại một thời điểm, một bệnhnhân chỉ có một hồ sơ bệnh án và được điều trị tại một bệnh viện Các thôngtin liên quan đến bệnh nhân được mô tả trong hồ sơ bệnh nhân (tài nguyên của
hệ thống) Mỗi bác sĩ chỉ làm việc cho một khoa trong một bệnh viện và mộtbác sĩ có thể điều trị cho nhiều bệnh nhân Tất cả người dùng tham gia vào hệthống ứng dụng trong các cơ sở y tế phải tuân thủ chính sách truy cập này Bêncạnh đó, hệ thống ứng dụng minh họa cho bài toán này có sự kết hợp của haibệnh viện A và B Họ có một thỏa thuận hợp tác trong việc chia sẻ thông tin y
tế là “Các bác sĩ có thể đọc các hồ sơ y tế của bệnh nhân mà họ đang điều trị ởcác bệnh viện liên kết (nếu có)”
Áp dụng Định nghĩa2.2, mô hình chính sách ABAC của hệ thống quản lý hồ
sơ y tế M = hS,RS,E,As ,Ars ,Ae ,OP,Pi được trình bày như sau:
S= {P atients, Doctors, N urses, Receptionists}
RS= {P atientRecords};
E= {∅};
OP= {Create, Read, U pdate, Delete}.
As = {id, role, department, hospital}
Ars = {mrId, pId, dId, department, hospital}.
Trang 38R 5 = (s.role = 0N urse0) ∧ (op = 0Read0) ∧ (rs = 0P atientRecords0) ∧ (s.department = rs.department) ∧ (s.hospital = rs.hospital),
R6 = (s.role = 0Receptionist0) ∧ (op =0Create0) ∧ (rs =0P atientRecords0) ∧ (s.hospital = rs.hospital)
Điều khiển truy cập theo thuộc tính (ABAC) là một thế hệ kỹ thuật điềukhiển truy cập mới, được ra đời trong những năm gần đây Mô hình này chophép điều khiển truy cập tài nguyên một cách chi tiết hơn bằng cách sử dụngcác thuộc tính khác nhau của các phần tử ủy quyền, tạo thuận lợi cho sự hợptác chính sách trong một doanh nghiệp lớn hoặc giữa nhiều tổ chức, đồng thờicũng cho phép tách rời các chính sách điều khiển truy cập khỏi lôgic ứng dụng
Do đó, mô hình ABAC đặc biệt hiệu quả và phù hợp với các hệ thống ứng dụnglớn, phức tạp
2.3 Triển khai chính sách điều khiển truy cập trong JavaEEPhương pháp và kiến trúc được sử dụng để triển khai chính sách điều khiểntruy cập đã đặc tả vào các ứng dụng web đóng vai trò quan trọng trong việc
rà soát mã nguồn để phát hiện các sai sót Bởi vì, chúng quyết định vị trí vàngữ nghĩa của các mã an ninh truy cập Bên cạnh đó, có rất nhiều ngôn ngữ lậptrình, kiến trúc thiết kế và thư viện hỗ trợ để lập trình các hệ thống web Tuynhiên, với ưu thế đa nền tảng (multi platform), Java được sử dụng phổ biến đểtạo các ứng dụng desktop, mobile và web Java có khối lượng thư viện hỗ trợlớn giúp việc lập trình trở nên dễ dàng hơn Trong một số thống kê, ngôn ngữlập trình Java là một trong những ngôn ngữ phổ biến nhất để phát triển cácsản phẩm phần mềm [21] Do đó, mục này sẽ trình bày về phương pháp an ninhlập trình và an ninh khai báo, kiến trúc MVC và Spring Security được sử dụngtrong các đề xuất của luận án
2.3.1 An ninh truy cập trong JavaEE
Các tài nguyên cần được bảo vệ của các hệ thống phần mềm thường đượclưu trữ trong các hệ thống cơ sở dữ liệu Vì thế, có ba yếu tố đe dọa đến sự antoàn của hệ thống cơ sở dữ liệu là sự không an toàn của nơi đặt cơ sở dữ liệu,
sử dụng trái phép các chức năng của ứng dụng để thực hiện các thao tác với cơ
sở dữ liệu nhằm sao chép, thay đổi các tài nguyên trong cơ sở dữ liệu và điểmyếu của hệ quản trị cơ sở dữ liệu [59] Để bảo vệ hệ thống cơ sở dữ liệu khỏi cácmối đe dọa trên, các nhà phát triển có thể sử dụng các phương pháp như chọn
Trang 39nơi an toàn để đặt hệ thống cơ sở dữ liệu, dùng mã (code) để điều khiển truycập đến cơ sở dữ liệu, hoặc mã hóa dữ liệu để tránh rò rỉ thông tin.
An ninh với mã truy cập (code access security) là một giải pháp quan trọngtrong các hệ thống cơ sở dữ liệu Bởi vì, một số vấn đề có thể xảy ra khi ngườidùng ở máy khách đăng nhập hệ thống bằng cách sử dụng mã được ủy quyền
là mã nguồn phía máy khách có thể không đáng tin cậy, có lỗi hoặc bao gồm
mã độc Với giải pháp này, chính sách an ninh của các ứng dụng JavaEE có thểđược triển khai theo hai phương pháp là An ninh khai báo, An ninh lập trìnhhoặc cả hai
An ninh khai báo (Declarative Security): thể hiện các yêu cầu an ninhcủa một thành phần ứng dụng bằng các chú thích (annotation) hoặc mãtriển khai (deployment descriptor ) Mã triển khai có thể được biểu diễntrong tệp *.xml ở bên ngoài ứng dụng để đại diện cho cấu trúc an ninh củaứng dụng Cấu trúc này bao gồm các thông tin an ninh như vai trò, điềukhiển truy cập và các yêu cầu xác thực Các chú thích được sử dụng để xácđịnh thông tin an ninh trong một tệp tin chứa lớp (file class) Chúng có thểđược sử dụng hoặc ghi đè (overwritten) bởi các mã triển khai Để triển khaitheo cách này, người lập trình thường sử dụng các khung làm việc được tíchhợp thêm trong các ngôn ngữ lập trình Các khung làm việc này đã đượcxác minh về tính chính xác, đúng đắn và dễ sử dụng Tuy nhiên nó khônggiải quyết được tất cả mọi nhu cầu về an ninh thực tế Với nền tảng Java,Spring Security là một trong những khung làm việc cung cấp các tính năngxác thực, ủy quyền và các tính năng an ninh khác cho các ứng dụng doanhnghiệp
An ninh lập trình (Programmatic Security): được nhúng trong một ứngdụng và được sử dụng để đưa ra quyết định an ninh trong trường hợp anninh khai báo không đủ để mô tả các mô hình chính sách an ninh của hệthống Phương pháp này được sử dụng thông qua ngữ nghĩa của ngôn ngữlập trình Tuy nhiên, cách triển khai này thường phức tạp hơn việc sử dụngcác chú thích như trong an ninh khai báo nhưng nó đáp ứng được mọi yêucầu về an ninh
2.3.2 Một số kiến trúc thiết kế phần mềm trong JavaEE
Hiện có nhiều ngôn ngữ lập trình khác nhau được sử dụng để triển khai cácứng dụng web cho các tổ chức như Java, PHP, HTML, v.v Trong thực tế, Java
Trang 40là một ngôn ngữ mang lại nhiều lợi ích cho các nhà phát triển Một trong nhữngtính năng quan trọng là tính độc lập nền tảng giúp tiết kiệm nhiều thời gian
và công sức Các ứng dụng được viết bởi Java có thể chạy tự động và linh hoạttrên nhiều hệ điều hành hoặc các thiết bị Ngoài ra, ngôn ngữ Java còn có mức
độ bảo mật cao và được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau [12].Thêm vào đó là có nhiều thư viện bên thứ ba cung cấp các dịch vụ hữu hiệutrong quá trình xây dựng, phát triển và phân tích phần mềm
2.3.2.1 Kiến trúc Model-View-Controller
Model-View-Controller (MVC) được giới thiệu lần đầu tiên trong Smalltalk’80bởi Krasner và Pope Kiến trúc MVC [77, 90] là một mẫu thiết kế phần mềmđược sử dụng phổ biến khi phát triển các ứng dụng web với nhiều ngôn ngữ khácnhau (Hình 2.7 mô tả kiến trúc MVC với JavaEE) Những ứng dụng được thiết
kế theo kiến trúc MVC có khả năng tái sử dụng mã và phát triển song song mộtcách hiệu quả Mục đích của mẫu thiết kế phần mềm này là đạt được sự phântách giữa ba thành phần Model, View và Controller của một ứng dụng bất kỳ
Hình 2.7: Kiến trúc MVC trong JavaEE
Model mô tả các bản ghi cơ sở dữ liệu, quản lý dữ liệu ứng dụng Về cơ bản
nó chứa dữ liệu ứng dụng, định nghĩa lôgic, đặc tả chức năng Model có thể
là một đối tượng đơn lẻ hoặc là một số thành phần của các đối tượng quản
lý dữ liệu và cho phép giao tiếp cơ sở dữ liệu Trong các ứng dụng, Model
là các lớp ∗.java chứa các phương thức kết nối với cơ sở dữ liệu và tươngtác với nguồn dữ liệu
View gồm các mã như là ∗.jsp chịu trách nhiệm hiển thị các kết quả của dữliệu được chứa trong Model dưới dạng giao diện đồ họa của người dùng Nóquy định dạng thức dữ liệu được hiển thị và giao tiếp với Controller Thêmvào đó, nó cũng cung cấp cách thức để tập hợp dữ liệu từ đầu vào