Áp dụng RBAC cho hệ thống

Một phần của tài liệu Nghiên cứu phương pháp điều khiển truy cập dựa vai trò trong việc đảm bảo an toàn cho các ứng dụng dựa thành phần (Trang 46)

Như đã trình bày ở mục 1.2.2, vì những ưu điểm của điều khiển truy cập khai báo nên vấn đề an ninh cho hệ thống quản trị - báo cáo ta sử dụng phương pháp này.

Cũng đã trình bày ở trên, hệ thống sử dụng JBOSS làm máy chủ triển khai trình chứa EJB. Mô hình an ninh mà đặc tả J2EE đề cập đến là mô hình điều khiển truy cập khai báo. Là khai báo vì trong đó ta mô tả các vai trò an ninh và các quyền bằng cách sử dụng mô tả XML chuẩn hơn là nhúng cả phần an ninh vào trong các thành phần nghiệp vụ. Điều này tách riêng vấn đề an ninh khỏi các mã lệnh mức nghiệp vụ vì an ninh có xu hướng trở thành một chức năng độc lập hơn là một khía cạnh vốn có lô gic nghiệp vụ.

Vấn đề an ninh trong J2EE luôn yêu cầu một số cấu hình trong máy chủ ứng dụng [6]. Việc chứng thực lô gic quyết định đăng nhập thành công hay thất bại. Cơ chế chứng thực được điều khiển bởi security domain mà ứng dụng liên kết đến.

a. Cấu hình Security Domain

Vấn đề an ninh trong một ứng dụng J2EE dựa trên đặc tả yêu cầu thông qua

J2EE deployment descriptors. Ta bảo đảm an ninh truy cập tới các thành phần

các tệp ejb-jar.xmlweb.xml. Tuy nhiên, ta cần cấu hình an ninh JBoss đồng thời tại JBoss deployment descriptors. Ta sử dụng phần tử <security- domain> để thực hiện cấu hình.

Cấu hình Security Domain phía web được viết trong tệp jboss-web.xml như sau:

<jboss-web>

<security-domain>java:/jaas/BillAdmin</security-domain> ...

</jboss-web>

Cấu hình Security Domain phía tầng EJB được viết tương tự trong tệp

jboss.xml như dưới đây:

<jboss> <security-domain>java:/jaas/BIllAdmin</security-domain> <enterprise-beans> ... </enterprise-beans> </jboss>

Security Domain được cấu hình tương ứng với các chính sách trong tệp

conf/login-config.xml như trong danh mục 3.1.

Danh mục 3.1: Cấu hình login-config.xml

<application-policy name="BillAdmin"> <authentication> <login-modulecode="org.jboss.security.auth.spi. DatabaseServerLoginModule"flag="required"> <module-option name="dsJndiName">java:/DefaultDS </module-option> <module-option name="principalsQuery">

select passwd from Users where username=? </module-option>

<module-option name="rolesQuery">

select userRoles, 'Roles' from UserRoles where username=?

</module-option> </login-module> </authentication> </application-policy>

b. Các chính sách điều khiển truy cập dựa vai trò

Có 3 vai trò tương tác với hệ thống quản trị báo cáo thanh toán hóa đơn: Quản trị (Admin), Quản lý chi nhánh (Manager) và Giao dịch viên (Teller). Các chính sách điều khiển truy cập dựa vai trò được phân quyền theo bảng 3.1 (chỉ minh họa trên một bean UserController.java).

Bảng 3.1: Phân quyền truy cập bean UserController.java

Bean Admin Manager Teller

UserController.java newObject() x x updateObject() x x removeObject() x x getObject() x x x lockUser() x x unLockUser() x x updatePassword() x x x searchUsers() x x getAllUsers() x getUsersOfBranch() x x getUsersOfGroup() x x getUserByID() x x getUsersByUsername() x x removeObject() x

Khai báo Security Roles trong tệp ejb-jar.xml (danh mục 3.2).

Danh mục 3.2: Khai báo Security Roles

<ejb-jar> ...

<assembly-descriptor> <security-role> (adsbygoogle = window.adsbygoogle || []).push({});

<description> Quan tri hethong </description> <role-name> Admin </role-name>

</security-role> <security-role>

<description> Quan ly chi nhanh </description> <role-name> Manager </role-name>

</security-role> <security-role>

<description> Giao dich vien </description> <role-name> Teller </role-name>

</security-role> </assembly-descriptor> ...

Khai báo Method Permissions trong tệp ejb-jar.xml (danh mục 3.3).

Danh mục 3.3: Khai báo Method Permissions

<ejb-jar> ...

<assembly-descriptor> <method-permission>

<description>

Admin duoc truy cap tat ca cac phuong thuc trong UserController

</description>

<role-name> Admin </role-name> <method>

<ejb-name> UserController </ejb-name> <method-name> * </method-name>

</method> </method-permission>

<method-permission> <description>

Manager truy cap mot so method trong UserController </description>

<role-name> Manager </role-name> <method>

<ejb-name> UserController </ejb-name> <method-name> newObject </method-name> </method>

<method>

<ejb-name> UserController </ejb-name> <method-name> updateObject </method-name> </method>

<method>

<ejb-name> UserController </ejb-name> <method-name> removeObject </method-name> </method>

<method>

<ejb-name> UserController </ejb-name> <method-name> getObject </method-name> </method>

<method>

<ejb-name> UserController </ejb-name> <method-name> lockUser </method-name> </method>

<method>

<ejb-name> UserController </ejb-name> <method-name> unLockUser </method-name> </method> (adsbygoogle = window.adsbygoogle || []).push({});

<method>

<ejb-name> UserController </ejb-name>

<method-name> updatePassword </method-name> </method>

<method>

<ejb-name> UserController </ejb-name> <method-name> searchUsers </method-name> </method>

<method>

<ejb-name> UserController </ejb-name>

<method-name> getUsersOfBranch </method-name> </method>

<method>

<ejb-name> UserController </ejb-name>

<method-name> getUsersOfGroup </method-name> </method>

<method>

<ejb-name> UserController </ejb-name> <method-name> getUserByID </method-name> </method>

<method>

<ejb-name> UserController </ejb-name>

<method-name> getUsersByUsername </method-name> </method>

</method-permission>

<method-permission> <description>

Teller truy cap mot so method trong UserController </description>

<role-name> Teller </role-name> <method>

<ejb-name> UserController </ejb-name>

<method-name> updatePassword </method-name> </method>

<method>

<ejb-name> UserController </ejb-name> <method-name> getObject </method-name> </method>

</method-permission> </assembly-descriptor> ...

</ejb-jar>

Việc áp dụng phương pháp điều khiển truy cập khai báo cho hệ thống quản trị - báo cáo đã khắc phục được các hạn chế về mặt an ninh của hệ thống. Việc tách riêng vấn đề an ninh khỏi các chức nghiệp vụ tạo thuận lợi cho cả người phát triển và người quản trị hệ thống. Người phát triển chỉ cần tập trung viết các

chức năng nghiệp vụ, còn người quản trị hệ thống dễ dàng hơn trong việc bảo trì các chính sách điều khiển truy cập. Hơn nữa, phương pháp này cũng tạo điều kiện cho việc phát triển mở rộng hệ thống.

KẾT LUẬN

Công nghệ thành phần phần mềm hiện nay đang được sử dụng rộng rãi và có nhiều lợi ích không thể phủ nhận như giảm độ phức tạp, tiết kiệm thời gian và chi phí phát triển ứng dụng. Tuy nhiên, việc sử dụng các thành phần trong việc phát triển các hệ thống thông tin cũng gặp nhiều khó khăn, đặc biệt là các vấn đề về an ninh. (adsbygoogle = window.adsbygoogle || []).push({});

Có nhiều công nghệ điều khiển truy cập, trong luận văn này chúng tôi nghiên cứu về điều khiển truy cập dựa vai trò. RBAC là một công nghệ mở và rất phong phú, có phạm vi từ rất đơn giản đến phức tạp, tinh vi. RBAC là một phương pháp quan trọng cho việc quản lý định danh người dùng và đang được

chấp nhận rộng rãi. RBAC cho phép thực hiện một loạt các hoạt động cấp quyền một cách linh hoạt trong phạm vi toàn bộ ứng dụng. Quản trị hệ thống có thể điều khiển truy cập ở mức độ trừu tượng, điều này là tự nhiên như cách các xí nghiệp vẫn tiến hành. RBAC điều khiển truy cập bằng cách điều chỉnh các hoạt động người dùng được phép thực hiện thông qua việc thiết lập, định nghĩa các vai trò, các phân cấp vai trò, các quan hệ và các ràng buộc. Do đó, trong một khung làm việc RBAC được thiết lập cho một tổ chức, hoạt động chủ yếu là gán và thu hồi người dùng vào vai trò hoặc ra khỏi vai trò.

Sau thời gian tìm hiểu, nghiên cứu, luận văn đã đạt được một số kết quả như sau:

Thứ nhất, tìm hiểu về công nghệ thành phần phần mềm, đặc biệt đi sâu vào nghiên cứu mô hình thành phần Enterprise JavaBeans (EJB). Kiến trúc EJB là kiến trúc thành phần dành cho việc phát triển và triển khai các ứng dụng phân tán hướng thành phần được sử dụng rộng rãi ngày nay. Các thành phần EJB có khả năng sử dụng lại cao, hỗ trợ việc viết một lần chạy mọi nơi (Write Once Run Anywhere - WORA), có tính khả chuyển, tính linh hoạt và thành phần đã được biên dịch có thể được triển khai trên bất kỳ máy chủ EJB nào như J2EE, JBoss hay môi trường WebLogic Enterprise.

Thứ hai, tìm hiểu phương pháp điều khiển truy cập dựa vai trò (RBAC). So sánh RBAC với các phương pháp điều khiển truy cập truyền thống như DAC và MAC. Nghiên cứu các phương pháp điều khiển truy cập dựa vai trò trong công nghệ EJB, sau đó phân tích ưu điểm cũng như hạn chế của các phương pháp này.

Thứ ba, phân tích hệ thống quản trị - báo cáo thanh toán hóa đơn, từ đó đưa ra những hạn chế về an ninh của hệ thống hiện tại. Từ đó, áp dụng phương pháp

điều khiển truy cập dựa vai trò khắc phục các hạn chế về an ninh của hệ thống quản trị - báo cáo thanh toán hóa đơn.

Trong công nghệ EJB, có hai phương pháp để thiết lập chính sách điều khiển truy cập dựa vai trò: điều khiển truy cập chương trình và điều khiển truy cập khai báo (dựa phương thức). Các phương thức bean trong một ứng dụng EJB thường tương tác với nhau để thực hiện một số chức năng. Nếu ta cho phép một vai trò thực hiện một phương thức thì chúng ta phải cho phép vai trò này thực hiện bất kỳ phương thức nào được gọi bởi phương thức đó. Dùng phương pháp điều khiển truy cập dựa phương thức để xác định các chính sách điều khiển truy cập chỉ tốt khi hệ thống ứng dụng có số lượng bean nhỏ và không có nhiều tương tác giữa các bean (do số các phần tử <method-permission> và số các phần tử <method> sẽ tăng nhanh theo số lượng các thành phần EJB và số lượng vai trò trong hệ thống). Do đó, trong các hệ thống quy mô lớn, phương pháp dựa phương thức dễ bị lỗi và rất khó cho việc bảo trì chính sách an ninh. Hướng nghiên cứu tiếp theo của đề tài là khắc phục hạn chế trên.

TÀI LIỆU THAM KHẢO

Tiếng Việt

[1]. Học viện công nghệ bưu chính viễn thông, Tài liệu dành cho môn phân tích thiết kế.

[2]. NHNo&PTNT Việt Nam, Đề án Thanh toán hóa đơn.

Tiếng Anh

[3]. DOD (1985), Trusted Computer System Evaluation Criteria (TCSEC). Department of Defense Standard 5200.28-STD (OrangeBook).

[4]. David F. Ferraiolo and R. Kuhn (1992), “Role-Based Access Control”, In

Proceedings of 15th NIST-NCSC National Computer Security Conference,

pp. 554-563.

[5]. David F. Ferraiolo, Ravi Sandhu, Serban Gavrila, D. Richard Kuhn, and Ramaswamy Chandramouli (2001), “Proposed NIST Standard for Role- Based Access Control”, ACM Transactions on Information and System

Security, Vol. 4, No. 3, pp. 224–274.

[6]. JBOSS, Inc (2005), Getting Started with JBoss 4.0, Release 4.

[7]. U. Lindqvist and E. Jonsson (1998), “A Map of Security Risks Associated with Using COTS”, Computer, vol. 31, no. 6, pp. 60–66. IEEE Computer Society.

[8]. N. R. Mead (2004), “Who Is Liable for Insecure Systems”, Computer,

vol.37, no.7, pp.27-34, IEEE Computer Society.

[9]. R. Otte, P. Patrick and M. Roy (1996), Understanding CORBA (Common

Object Request Broker Architecture), Prentice-Hall.

[10].M. Pistoia, N. Nagaratnam, L. Koved, and A. Nadalin (2004), Enterprise

Java 2 Security: Building Secure and Robust J2EE Applications, Addison

Wesley Longman Publishing Co., Inc.

[11].R. Sessions (1998), COM and DCOM: Microsoft’s Vision for Distributed

Objects, JohnWiley&Sons. (adsbygoogle = window.adsbygoogle || []).push({});

[12].Ravi S. Sandhu, Edward J. Coynek, Hal L. Feinsteink and Charles E. Youmank (1996), “Role-Based Access Control Models”, IEEE Computer, vol.29, no.2, pp.38-47.

[13].Sun Microsystems (2007), Enterprise Java Beans Specification Version 3.0. Available from: http://java.sun.com/products/ejb/docs.html.

[14].C. Szyperski (1998), Component Software: Beyond Object-Oriented

Programming, ACM Press/Addison-Wesley Publishing Co.

[15].Hieu Dinh Vo (2009), An Architecture for Securing Component-Based

Một phần của tài liệu Nghiên cứu phương pháp điều khiển truy cập dựa vai trò trong việc đảm bảo an toàn cho các ứng dụng dựa thành phần (Trang 46)