Tải bản đầy đủ (.docx) (57 trang)

Mở rộng công cụ activiti cho đặc tả và cài đặt chính sách an ninh

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 (1.97 MB, 57 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

ĐỖ ANH VIỆT

MỞ RỘNG CÔNG CỤ ACTIVITI CHO
ĐẶC TẢ VÀ CÀI ĐẶT CHÍNH SÁCH AN NINH
Ngành: Cơng nghệ Thơng tin
Chun ngành: Kỹ thuật phần mềm
Mã số: 60480103

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. ĐẶNG ĐỨC HẠNH

Hà Nội – 2018
L


LỜI CAM ĐOAN
Tôi xin cam đoan luận văn thạc sĩ “Mở rộng công cụ Activiti cho đặc tả và cài
đặt chính sách an ninh” là cơng trình nghiên cứu của riêng tôi và được sự hướng dẫn
của TS. Đặng Đức Hạnh. Các nội dung nghiên cứu và kết quả trong đề tài là trung thực
và chưa từng được ai công bố trong bất kỳ cơng trình nào khác.
Những phân tích, đánh giá được tác giả thu thập từ các nguồn khác nhau có ghi rõ
trong tài liệu tham khảo.

Học viên thực hiện

Đỗ Anh Việt


LỜI CẢM ƠN
2


Để hoàn thành được luận văn thạc sĩ, bên cạnh sự nỗ lực của bản thân cịn có sự
hướng dẫn nhiệt tình của q Thầy Cơ, cũng như sự động viên ủng hộ của gia đình và
bạn bè trong suốt q trình nghiên cứu và thực hiện luận văn.
Tơi xin chân thành bày tỏ lòng biết ơn sâu sắc đến Thầy TS. Đặng Đức Hạnh,
người đã tận tình hướng dẫn và tạo mọi điều kiện tốt nhất cho tơi hồn thành luận văn
này. Xin chân thành cảm ơn các thầy cô khoa Công nghệ thông tin, Trường đại học
Công Nghệ đã truyền đạt những kiến thức quý báu cũng như giúp đỡ tơi trong q
trình học tập nghiên cứu tại trường.
Xin chân thành cảm ơn Trung tâm Tư vấn Thiết kế Mobifone đã cho phép và
tạo điều kiện để triển khai kết quả nghiên cứu của luận văn.
Cuối cùng, xin gửi lời cảm ơn đến gia đình, bạn bè, đồng nghiệp, những người
đã hỗ trợ tơi trong suốt q trình học tập, nghiên cứu và thực hiện luận văn.
Học viên thực hiện

Đỗ Anh Việt

MỤC LỤC
3


Trang

DANH SÁCH CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
Từ viết
tắt
API


Ý nghĩa

Thuật ngữ
Application Programming Interface

BoD

Binding Of Duty

BPM

Business Process Management

BPMN

Business Process Model and Notation

DSM

Domain-Specific Modeling

DSML

Domain-Specific Modeling Language

EMF

Eclipse Model Framework
4


Giao diện lập trình ứng dụng
Ràng buộc các nhiệm vụ được
thực hiện bởi một người
Quản lý quy trình nghiệp vụ
Tiêu chuẩn và mơ hình quy trình
nghiệp vụ
Mơ hình hóa chun biệt miền
Ngơn ngữ mơ hình hóa chun
biệt miền
Nền tảng mơ hình hóa Eclipse


PEP
SoA
SLA
SoD

Policy Enforcement Point
Service Oriented Architecture
Service-level agreement
Separation Of Duty

Điểm thực thi chính sách
Kiến trúc hướng dịch vụ
Cam kết chất lượng dịch vụ
Tách biệt nhiệm vụ
Điều khiển truy cập dựa theo vai
trò


RBAC

Role-Based Access Control

REST

REpresentational State Transfer
Web Services Business Process Ngôn ngữ thực thi quy trình
Execution Language
nghiệp vụ bằng Web services
eXtensible Access Control Markup
Language

WSBPEL
XACML

DANH SÁCH CÁC HÌNH VẼ
Hình 1.1: Thu hẹp khoảng cách trừu tượng giữa ý tưởng miền và cài đặt của chúng
Hình 1.2: Kiến trúc cơ bản của DSM
Hình 1.3: Core RBAC
Hình 1.4: MetaModel của RBAC
Hình 1.5: MetaModel 2 của RBAC
Hình 1.6: Quy trình nghiệp vụ
Hình 1.7: Vịng đời BPM
Hình 1.8: Metamodel của BPMN
Hình 1.9: Các thành phần của Activiti
Hình 1.10: Các thành phần của Activiti Engine
Hình 2.1: Yêu cầu an ninh kết hợp với ký hiệu
Hình 2.2: Metamodel của BPMN tích hợp với một số chính sách an ninh
Hình 2.3: Ecore Diagram của RBAC trong Eclipse

Hình 2.4: Mơ hình Ecore của RBAC thu được từ EcoreDiagram
Hình 2.5: Lớp JAVA được sinh ra từ mơ hình
5


Hình 2.6: Tab Security trong Patelle
Hình 2.7: Tab Security trong Properties
Hình 3.1: Cơ cấu tổ chức trung tâm Tư vấn Thiết kế
Hình 3.2: Màn hình đăng nhập Activiti Designer
Hình 3.3: Màn hình quản lý Task trên Activiti Designer
Hình 3.4: Màn hình quản lý Process trên Activiti Designer
Hình 3.5: Màn hình quản lý cấu hình trên Activiti Designer
Hình 3.6: Tạo dự án Activti BPM trên Eclipse
Hình 3.7: Tạo sơ đồ Activiti Diagram trên Eclipse
Hình 3.8: Visual Editor của Activiti
Hình 3.9: Quy trình điều xe trên Activiti Designer
Hình 3.10: Khai báo các data objects của quy trình điều xe
Hình 3.11: Cấu hình rẽ nhánh cho Gateway
Hình 3.12: Cấu hình kết quả phê duyệt của Manager Approval
Hình 3.13: Cấu hình Security cho Manager Approval
Hình 3.14: Cấu hình SeparationOfDuty
Hình 3.15: Cấu hình Form thơng tin của CarSupervisor Approval
Hình 3.16: Cấu hình MailTask
Hình 3.17: Tạo nhóm người dùng trên Activiti Explorer
Hình 3.18: Tạo người dùng trên Activiti Explorer
Hình 3.19: Triển khai quy trình trên Activit Explorer
Hình 3.20: Biểu mẫu thơng tin u cầu
Hình 3.21: Màn hình Task Manager Approval
Hình 3.22: Thơng báo vi phạm chính sách RBAC
Hình 3.23: Chọn người thực hiện Task

Hình 3.24: Thực hiện phê duyệt u cầu
Hình 3.25: Mail thơng báo kết quả phê duyệt
Hình 3.26: Thống kê số lần quy trình được thực hiện theo tháng

6


MỞ ĐẦU
Quy trình nghiệp vụ đóng một vai trị then chốt để doanh nghiệp có thể quản lý
và vận hành một cách nhịp nhàng, đạt hiệu quả cao. Có thể khẳng định, một doanh
nghiệp xây dựng được quy trình tốt sẽ phát triển bền vững và có tính cạnh tranh cao
hơn Để có thể triển khai thì trước tiên quy trình nghiệp vụ phải được mơ hình hóa. Mơ
hình hóa quy trình nghiệp vụ khơng những được sử dụng trong việc trao đổi các yêu
cầu giữa chuyên gia nghiệp vụ và chuyên gia hệ thống mà còn được sử dụng để cài đặt
hệ thống thực tế. Các quy trình nghiệp vụ hiện đại thường kết hợp các tác vụ của con
người với các tác vụ tự động (ví dụ, được cài đặt bởi webservice), nên ngơn ngữ mơ
hình hóa quy trình nghiệp vụ cần phải thu hẹp khoảng cách giữa giữa chuyên gia
nghiệp vụ và chuyên gia hệ thống [2].
Mô hình hóa quy trình nghiệp vụ thường tập trung vào mơ hình hóa chính xác
chức năng của quy trình mà bỏ qua các yêu cầu về an ninh. Nguyên nhân chủ yếu là do
thực tế rằng các chuyên gia trong lĩnh vực quy trình nghiệp vụ khơng phải là chun
gia về an ninh. Các yêu cầu về an ninh thường xuyên được xem xét sau khi định nghĩa
hệ thống. Cách tiếp cận này dẫn đến các lỗ hổng an ninh và rõ ràng cần thiết phải tăng
cường nỗ lực an ninh trong các giai đoạn trước phát triển do việc sửa lỗi sẽ hiệu quả và
tiết kiệm chi phí hơn. Các nghiên cứu thực nghiệm cho thấy tại mức thiết kế quy trình
nghiệp vụ thì khách hàng và người dùng cuối có thể biểu diễn các yêu cầu an ninh của
họ và sau đó có thể thể hiện tại mức cao, các yêu cầu an ninh dễ dàng xác định bởi
người mơ hình hóa quy trình nghiệp vụ [2].
Các u cầu an ninh có thể được mơ hình hóa trong quy trình nghiệp vụ và cần
thiết phải xem xét các yêu cầu an ninh này trong bất kì ứng dụng nào tại mức độ trừu

tượng cao nhất. Một trong các yêu cầu an ninh là điều khiển truy nhập tức là kiểm soát
việc truy cập và thực hiện các hành động trên các nguồn tài nguyên hệ thống được
được bảo vệ. RBAC (Role-Based Access Control) điều khiển truy cập theo vai trò là
một phương pháp điều khiển truy cập hiệu quả nhất hiện nay [3,4]. Tuy nhiên, các nền
tảng cho phép mơ hình hóa quy trình nghiệp vụ hiện nay như Oracle BPM, Acitivi
BPM đều chưa tích hợp đầy đủ điều khiển truy cập theo vai trị RBAC [5]. Chính vì
vậy, tơi xin chọn đề tài “Mở rộng cơng cụ Activiti cho đặc tả và cài đặt chính sách
an ninh”.
Trong luận văn, tơi đã trình bày một phương pháp tích hợp chính sách an ninh
RBAC vào quy trình nghiệp vụ BPM bằng cách mở rộng tiêu chuẩn BPMN cho đặc tả
các chính sách an ninh [2], đồng thời ứng dụng của phương pháp này vào việc mở
rộng công cụ Activiti BPM cho đặc tả và cài đặt RBAC dựa vào [5]. Kết quả cụ thể đạt
được: thứ nhất, tích hợp các chính sách RBAC vào pha mơ hình hóa để các yêu cầu an
ninh có thể được xem xét ngay từ đầu. Thứ hai, đã kiểm tra các chính sách đó tại pha
thực thi để đảm bảo an tồn an ninh cho hệ thống.
7


Về phần bố cục, luận văn được chia thành 3 chương chính như sau:
Chương 1. Kiến thức nền tảng : Trình bày cơ sở lý thuyết và các cơng nghệ
chính được sử dụng trong luận văn. Bao gồm: Mơ hình hóa chun biệt miền, mơ hình
hóa đặc tả chính sách truy cập RBAC, mơ hình hóa quy trình nghiệp vụ và cuối cùng,
giới thiệu về công cụ mã nguồn mở Activiti BPM
Chương 2. Tích hợp mơ đun chính sách truy cập RBAC với Activiti : Trình
bày phương pháp tích hợp chính sách an ninh vào quy trình nghiệp vụ và ứng dụng của
phương pháp vào việc tích hợp chính sách truy cập RBAC vào Activiti BPM
Chương 3. Cài đặt và thực nghiệm : Trình bày bài tốn vận tải hiện đang được
triển khai tại Trung tâm Tư vấn Thiết kế Mobifone, ứng dụng kết quả của luận văn để
giải quyết bài toán và cài đặt trên Activiti BPM. Cuối cùng là các kết quả đạt được.


8


CHƯƠNG 1. KIẾN THỨC NỀN TẢNG
1.1.

Giới thiệu chương

Chương này sẽ trình bày cơ sở lý thuyết và các cơng nghệ chính được sử dụng
trong luận văn. Bao gồm ba nội dung chính là:


Mơ hình hóa chun biệt miền: các khái niệm và kiến trúc của DSM; cú pháp và
ngữ nghĩa của một ngơn ngữ mơ hình hóa chun biệt miền DMSL.



Mơ hình hóa và đặc tả chính sách truy cập RBAC: các khái niệm cơ bản về Core
RBAC và ràng buộc phân quyền. Từ đó, xây dựng mơ hình metamodel cho RBAC.



Mơ hình hóa và thực thi quy trình nghiệp vụ với Activiti BPM: khái niệm, thành
phần, vòng đời và tiêu chuẩn ký hiệu BPMN của quy trình nghiệp vụ. Cuối cùng,
giới thiệu công cụ mã nguồn mở Activti BPM cho việc mơ hình hóa và thực thi quy
trình nghiệp vụ một cách tự động.

1.2. Mơ hình hóa chun biệt miền
Các hệ thống phần mềm hiện nay ngày càng trở nên phức tạp, muốn cải thiện
hiệu suất phát triển phần mềm khơng chỉ tốc độ mà cịn chất lượng hệ thống được tạo

ra, các nhà nghiên cứu đã cố gắng tìm ra một phương pháp tự động chuyển từ mơ hình
sang code. Do đó, mơ hình hóa chun biệt miền (DSM) đã ra đời. DSM sử dụng một
ngôn ngữ mô hình hóa chun biệt miền (DSML) để sinh code đầy đủ từ mơ hình và
code được sinh ra có ít lỗi hơn là code viết bằng tay [6].

1.2.1. Khái niệm
DSM chủ yếu tập trung vào hai vấn đề. Đầu tiên, nâng cao mức độ trừu tượng
trên cả lập trình bằng cách xác định một ngôn ngữ trực tiếp sử dụng các khái niệm và
các luật từ miền vấn đề cụ thể. Thứ hai, tạo ra sản phẩm cuối cùng trong một ngơn ngữ
lập trình đã chọn hoặc một hình thức khác từ các đặc tả mức cao đó. Thơng thường, bộ
sinh code tiếp tục được hỗ trợ bởi một số nền tảng (framework). Tự động hóa phát
triển phần mềm có thể trở nên phổ biến bởi vì ngơn ngữ mơ hình hóa, bộ sinh code và
code của framework đã phù hợp với các yêu cầu của miền ứng dụng. Nói cách khác
chúng là chuyên biệt miền và chúng hoàn toàn được kiểm soát bởi người dùng.
Các mức độ trừu tượng cao
Sự trừu tượng rất quan trọng trong phát triển phần mềm. Trong suốt lịch sử phát
triển phần mềm, nâng cao mức độ trừu tượng là nguyên nhân của các bước nhảy vọt
trong hiệu suất của nhà phát triển. Nếu nâng cao mức độ trừu tượng làm giảm tính
phức tạp thì làm sao để tiếp tục nâng cao nó. Hình 1.1 thể hiện, các nhà phát triển tại
9


các thời điểm khác nhau đã thu hẹp khoảng cách trừu tượng giữa ý tưởng trong miền
và cài đặt của chúng.

Hình 1.1: Thu hẹp khoảng cách trừu tượng giữa ý tưởng miền và cài đặt của chúng
Bước đầu tiên trong phát triển bất kỳ phần mềm nào luôn là nghĩ về giải pháp liên
quan đến miền vấn đề - một giải pháp ở mức độ trừu tượng cao nhất (bước 1). Ví dụ,
quyết định nên hỏi tên người trước hay hỏi phương thức thanh toán trước trong khi
đăng ký một hội thảo. Sau khi tìm ra giải pháp sẽ ánh xạ sang đặc tả của một số ngôn

ngữ (bước 2). Trong lập trình truyền thống, bước này các nhà phát triển ánh xạ các
khái niệm miền vào việc code các khái niệm. Trong UML hoặc các ngơn ngữ mơ hình
hóa mục đích chung khác, các nhà phát triển ánh xạ giải pháp miền vấn đề vào đặc tả
trong ngôn ngữ mơ hình hóa. Bước 3, cài đặt đầy đủ giải pháp: đưa ra các điều kiện
đúng và nội dung code cho các vòng lặp. Tuy nhiên, nếu sử dụng các ngơn ngữ mơ
hình hóa mục đích chung, thì cần ánh xạ bổ sung từ mơ hình sang code. Điều đáng chú
nhất ở đây là các nhà phát triển vẫn phải thực hiện từ bước 1 mà khơng có bất kì công
cụ nào hỗ trợ, đặc biệt để giải quyết các lỗi phát sinh trong giai đoạn phát triển thường
tốn nhiều chi phí nhất.
Tự động sinh code
Trong bước 3, việc sinh code tự động từ thiết kế UML là không thể. Thay vì yêu
cầu nhà phát triển nắm vững cả miền vấn đề và lập trình, một giải pháp tốt hơn cho
phép các nhà phát triển đặc tả ứng dụng dưới dạng đã từng biết và sử dụng, sau đó có
các bộ sinh code sử dụng các đặc tả đó và tạo ra cùng loại code giống như họ viết bằng
tay. Điều này sẽ làm tăng mức độ trừu tượng đáng kể; từ việc lập trình với byte/bit,
thuộc tính và kết quả trả về; lên đến các khái niệm và luật lệ của miền vấn đề mà các
nhà phát triển đang làm việc với. Sau đó, ngơn ngữ lập trình mới này hợp nhất với
bước 1 và bước 2 và tự động hóa hồn tồn ở bước 3. Mức độ trừu tượng được nâng
lên gắn liền với code được sinh tự động là mục đích của DSM.
10


DSM khơng kỳ vọng rằng tất cả code có thể được sinh ra từ các mơ hình nhưng bất cứ
gì mơ hình hóa được từ quan điểm của người mơ hình hóa thì đều sinh ra code hồn
chỉnh. Trong DSM, code được sinh ra dễ đọc và hiệu quả - lý tưởng là giống như code
được viết bởi những nhà phát triển giàu kinh nghiệm, những người định nghĩa ra bộ
sinh code. Code được sinh ra thường được hỗ trợ bởi framework với mục đích nhất
định cũng như bởi các nền tảng, thư viện, thành phần và các code kế thừa khác. Bộ
sinh code khơng chỉ giới hạn bất kì ngơn ngữ hay kiểu lập trình nào. Ví dụ kết quả của
bộ sinh code có thể là ngơn ngữ lập trình hướng đối tượng hoặc ngơn ngữ lập trình cấu

trúc hay chức năng, nó có thể là ngơn ngữ lập trình truyền thống, một ngơn ngữ kịch
bản, các định nghĩa dữ liệu hoặc một file cấu hình.
Tóm lại, DSM về cơ bản nâng cao mức độ trừu tượng trong khi thu hẹp không
gian thiết kế (thường là các sản phẩm trong một cơng ty). Cùng với ngơn ngữ mơ hình
hóa chuyên biệt miền DSML, vấn đề sẽ được giải quyết khi việc mơ hình hóa trực
quan giải pháp mà chỉ sử dụng các khái niệm miền quen thuộc. Sản phẩm cuối cùng
được sinh tự động bởi các bộ sinh code chuyên biệt miền. Với DSM, không cần ánh xạ
từ khái niệm miền sang khái niệm thiết kế và cuối cùng sang khái niệm ngơn ngữ lập
trình. DSM tn theo cơng thức: cung cấp mức độ trừu tượng cao hơn và thực hiện ánh
xạ tự động từ các khái niệm mức cao hơn sang các khái niệm mức thấp hơn đã biết và
sử dụng trước đó.
Kiến trúc của DSM gồm 3 thành phần chính là ngơn ngữ, bộ sinh code và
framework miền như hình 1.2 :

Hình 1.2: Kiến trúc cơ bản của DSM
Ngôn ngữ chuyên biệt miền : cung cấp cơ chế trừu tượng để giải quyết sự phức tạp của
miền cho trước. Điều này được thực hiện bằng cách cung cấp các khái niệm và các
luật trong một ngôn ngữ biểu diễn miền ứng dụng hơn là các khái niệm của một ngôn
11


ngữ lập trình nhất định. Nhìn chung, các khái niệm miền chính ánh xạ lên các đối
tượng của ngơn ngữ mơ hình hóa, trong khi các khái niệm miền khác sẽ được coi như
thuộc tính đối tượng, các kết nối, các mơ hình con hoặc các đường dẫn đến mơ hình.
Bởi vậy, ngơn ngữ này cho phép nhà phát triển làm việc trực tiếp với các khái niệm
miền. Ngôn ngữ này được định nghĩa như một metamodel với các ký hiệu và công cụ
hỗ trợ.
Bộ sinh code xác định làm sao thơng tin được lấy ra từ mơ hình và chuyển đổi sang
code. Trong trường hợp đơn giản nhất, mỗi symbol (ký tự) mơ hình hóa tạo ra code
nhất định, bao gồm các giá trị được nhập vào trong symbol là các tham số. Bộ sinh

code cũng có thể tạo ra các code khác nhau phụ thuộc vào các giá trị trong symbol, các
mối quan hệ nó có với các symbol khác, hoặc thơng tin khác trong mơ hình. Code này
sẽ được liên kết với framework và được biên dịch thành mã thực thi hoàn chỉnh. Trong
giải pháp DSM, mục tiêu chính là sau khi sinh code khơng cần bổ sung code bằng tay
để thay đổi và mở rộng code đã sinh. Bởi vậy, code đã sinh chỉ đơn giản là một sản
phẩm trung gian trên con đường đưa ra sản phẩm cuối cùng.
Framework miền: cung cấp giao diện giữa code được sinh ra và các nền tảng phía
dưới. Trong một số trường hợp, không cần thêm code của framework: code sinh ra có
thể trực tiếp gọi các thành phần nền tảng nếu nó có đủ các dịch vụ. Mặc dù vậy, việc
định nghĩa code hoặc thành phần tiện ích bổ sung giúp code sinh ra dễ dàng hơn.
Code sinh ra khơng được thực hiện một mình mà cịn cùng với code thêm vào trong
một số mơi trường đích. Điều này được sử dụng bất kể việc cài đặt được thực hiện như
thế nào, bằng tay hay sử dụng các bộ sinh. Sản phẩm đã phát triển có thể sử dụng một
phần của một nền tảng lớn (như J2EE), toàn bộ nền tảng (như Tomcat server) hay một
số nền tảng khác.

1.2.2. Ngơn ngữ mơ hình hóa chun biệt miền
Ngơn ngữ chun biệt miền (DSL) là một ngơn ngữ lập trình hoặc một ngôn ngữ
đặc tả thực thi, thông qua các ký hiệu thích hợp và trừu tượng, tập trung vào biểu diễn;
và thường được giới hạn trong một miền cụ thể. DSL làm tăng mức độ trừu tượng
bằng cách sử dụng các khái niệm quen thuộc với chuyên gia miền. Trong mơ hình hóa
chun biệt miền, DSL được gọi là DSML được sử dụng cho việc xây dựng mơ hình
đồ họa cho một hệ thống phần mềm.
DSML thường gồm cú pháp (syntax) và ngữ nghĩa (semantics). Cú pháp bao gồm cú
pháp trừu tượng (abstract syntax) và cú pháp cụ thể (concrete syntax). Cú pháp trừu
tượng biểu thị cấu trúc và các quy tắc ngữ pháp của một ngôn ngữ. Trong khi cú pháp
cụ thể giải quyết các symbol ký hiệu và các biểu mẫu hiển thị mà ngôn ngữ sử dụng.
Còn ngữ nghĩa biểu diễn ý nghĩa của các cụm từ và câu mà chuyên gia miền muốn
diễn đạt. Để tăng sự trừu tượng thiết kế, cần mở rộng cả cú pháp và ngữ nghĩa.
12





×