Đăng ký Đăng nhập
Trang chủ Nghiên cứu về điều khiển truy cập sử dụng mô hình rbac mở rộng...

Tài liệu Nghiên cứu về điều khiển truy cập sử dụng mô hình rbac mở rộng

.PDF
61
9
119

Mô tả:

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN ÁNH NGUYỆT NGHIÊN CỨU VỀ ĐIỀU KHIỂN TRUY CẬP SỬ DỤNG MÔ HÌNH RBAC MỞ RỘNG LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà Nội, 2013 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN ÁNH NGUYỆT NGHIÊN CỨU VỀ ĐIỀU KHIỂN TRUY CẬP SỬ DỤNG MÔ HÌNH RBAC MỞ RỘNG Ngành: Công nghệ thông tin Chuyên ngành: Hệ thống thông tin Mã số: 60.48.05 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS. NGUYỄN VIỆT HÀ Hà Nội, 2013 MỤC LỤC MỤC LỤC .............................................................................................................1 Danh mục hình vẽ .................................................................................................3 Danh mục bảng......................................................................................................4 Danh mục ký hiệu, từ viết tắt ................................................................................5 MỞ ĐẦU ...............................................................................................................6 Chương 1. 1.1 ĐIỀU KHIỂN TRUY CẬP THEO VAI TRÒ ................................8 Điều khiển truy cập............................................................................... 8 1.1.1 Điều khiển truy cập bắt buộc............................................................. 8 1.1.2 Điều khiển truy cập tuỳ quyền .......................................................... 9 1.1.3 Điều khiển truy cập theo vai trò ........................................................ 9 1.1.4 Điều khiển truy cập theo luật ............................................................ 9 1.2 Các mô hình tham chiếu RBAC ......................................................... 10 1.2.1 Mô hình RBAC cơ sở ...................................................................... 10 1.2.2 RBAC phân cấp ............................................................................... 12 1.2.3 RBAC ràng buộc ............................................................................. 14 1.2.4 Ưu nhược điểm của RBAC ............................................................. 16 1.3 Định danh dựa trên tuyên bố (Claims-based identity) ....................... 17 1.3.1 Tuyên bố (Claim) ............................................................................ 17 1.3.2 Định danh (Identiy) ......................................................................... 17 1.3.3 Principal ........................................................................................... 17 1.4 RBAC TRONG .NET FRAMEWORK.............................................. 17 1.4.1 Kiểm tra vai trò dựa trên khai báo................................................... 18 1.4.2 Kiểm tra vai trò trong mã nguồn ..................................................... 18 1.4.3 RBAC với ứng dụng ASP.NET....................................................... 18 1.4.4 RBAC với ứng dụng ASP.NET MVC ............................................ 19 1.4.5 Các hạn chế của RBAC trong .Net Framework .............................. 20 Chương 2. MỞ RỘNG ĐIỀU KHIỂN TRUY CẬP RBAC VỚI LUẬT .......21 1 2.1 Đặc tả điều khiển truy cập RBAC ...................................................... 21 2.2 Điều khiển truy cập theo luật.............................................................. 22 2.3 Mở rộng điều khiển truy cập RBAC với luật ..................................... 25 2.4 Khiển khai RBAC mở rộng với luật ................................................... 27 2.4.1 Kiến trúc tổng quát ......................................................................... 27 2.4.2 Biểu đồ thành phần .......................................................................... 29 2.4.3 Biểu đồ lớp ...................................................................................... 30 2.4.4 Biểu diễn và lượng giá luật với cây biểu thức................................. 36 2.4.5 Authorization API ........................................................................... 38 Chương 3. ỨNG DỤNG .................................................................................41 3.1 Bài toán chia sẻ tệp ............................................................................. 41 3.2 Phân tích, thiết kế hệ thống ................................................................ 42 3.2.1 Hiện trạng hệ thống ......................................................................... 42 3.2.2 Phân tích hoạt động hệ thống .......................................................... 42 3.2.3 Lựa chọn nền tảng, công nghệ......................................................... 43 3.2.4 Kiến trúc ứng dụng .......................................................................... 43 3.2.5 Biểu đồ lớp ...................................................................................... 45 3.2.6 Biểu đồ trình tự ................................................................................ 46 3.2.7 Điều khiển truy cập trong trong ứng dụng chia sẻ tệp .................... 51 KẾT LUẬN .........................................................................................................57 TÀI LIỆU THAM KHẢO ...................................................................................59 2 Danh mục hình vẽ Hình 1.1: Mô hình RBAC [4] .............................................................................11 Hình 1.2: Mô hình RBAC [4] .............................................................................13 Hình 1.3: Mô hình SSD với RBAC phân cấp [4] ...............................................15 Hình 1.4 : Mô hình DSD [4] ...............................................................................15 Hình 2.1: Kiến trúc tổng quát..............................................................................28 Hình 2.2: Biểu đồ thành phần .............................................................................29 Hình 2.3: Biểu đồ lớp ClaimMembershipProvider .............................................31 Hình 2.4: Biểu đồ lớp Authentication .................................................................32 Hình 2.5: Biểu đồ lớp Authorization...................................................................35 Hình 2.6: Logic điều khiển truy cập ...................................................................39 Hình 3.1: Biểu đồ use case ..................................................................................43 Hình 3.2: Kiến trúc ứng dụng chia sẻ tệp ...........................................................44 Hình 3.3: Biểu đồ lớp ..........................................................................................45 Hình 3.4: Biểu đồ trình tự Hiển thị nội dung thư mục ........................................46 Hình 3.5: Biểu đồ trình tự Tạo thư mục ..............................................................47 Hình 3.6: Biểu đồ trình tự Upload file ................................................................47 Hình 3.7: Biểu đồ trình tự Download file ...........................................................48 Hình 3.8: Biểu đồ trình tự Xóa thư mục, tệp ......................................................48 Hình 3.9: Biểu đồ trình tự Hiển thị danh sách người dùng .................................48 Hình 3.10: Biểu đồ trình tự Tạo người dùng ......................................................49 Hình 3.11: Biểu đồ trình tự Cập nhật thông tin người dùng ...............................50 Hình 3.12: Biểu đồ trình tự Xóa người dùng ......................................................50 3 Danh mục bảng Bảng 2.1: Ý nghĩa các thẻ trong đặc tả truy cập RBAC .....................................22 Bảng 2.2: Ý nghĩa các thẻ trong đặc tả truy cập theo luật ..................................25 Bảng 2.3: Ý nghĩa các giao diện, module ...........................................................30 Bảng 2.4: Ý nghĩa các giao diện, lớp trong trong module ClaimMembership ...31 Bảng 2.5: Ý nghĩa các giao diện, lớp trong module Authentication...................32 Bảng 2.6: Ý nghĩa các giao diện, lớp trong module Authorization ....................35 Bảng 3.1: Ý nghĩa các lớp trong ứng dụng chia sẻ tệp .......................................46 4 Danh mục ký hiệu, từ viết tắt Từ viết tắt Thuật ngữ ACL Access Control List MAC Mandatory Access Control DAC Discretionary Access Control SoD Separation of Duty SSD Static Separation of Duty DSD Dynamic Separation of Duty RBAC Role-Based Access Control RBAC Rule-Based Access Control CSDL Cơ sở dữ liệu URL Uniform Resource Locator XML eXtensibleMarkup Language MVC Model View Controller EJB Enterprise JavaBeans 5 MỞ ĐẦU Các hệ thống phần mềm thường có nhiều người sử dụng, mỗi người sử dụng lại có các vai trò khác nhau, hay nói cách khác họ có tập các đặc quyền khác nhau. Vì thế cần đảm bảo rằng mỗi người sử dụng chỉ có thể thực hiện được các tác vụ mà họ có đặc quyền.Do đó, vấn đề đảm bảo an ninh trong các ứng dụng là một trong các yêu cầu quan trọng, cần quan tâm xem xét. Truy cập là khái niệm để nói đến khả năng thực hiện một tác vụ nào đó (sử dụng, đọc, thay đổi…) của một chủ thể (subject/user) với một tài nguyên máy tính (resource).Điều khiển truy cập (access control) là khái niệm để chỉ sự cho phép hay hạn chế sự truy cập của chủ thể với tài nguyên máy tính dưới một cách thức nào đó[6]. Kiểm soát truy cập là thuật ngữ dễ gây hiểu nhầm, trong một số trường hợp nó được hiểu như sự kiểm soát quyền truy cập vào hệ thống từ bên ngoài (ví dụ như kiểm soát quá trình đăng nhập, qua đó người dùng được truy cập vào vào máy chủ hay máy cá nhân).Trong thực tế, kiểm soát truy cập như vậy được gọi là xác thực (authenticate) người dùng.Trong khi, kiểm soát truy cập đề cập đến việc kiểm soát quyền truy cập vào tài nguyên hệ thống sau khi thông tin tài khoản của người dùng đã được xác thực. Ví dụ, một người dùng cụ thể, hoặc một nhóm người sử dụng, chỉ có thể được phép truy cập vào các tập tin nhất định sau khi đã đăng nhập hệ thống, trong khi đồng thời bị từ chối quyền truy cập vào tất cả các tài nguyên khác. Với điều khiển truy cập theovai trò (Role Based Access Control – RBAC)[4], mỗi người sử dụng sẽ được gán một hoặc nhiều vai trò, mỗi vai trò có một tập các quyền truy xuất. Quyền truy cập của mỗi người dùng là hợp các tập quyền truy xuất của tất cả các vai trò mà người sử dụng hiện đang thuộc về. RBAC là một phương pháp đơn giản, trực quan và hiệu quả, song nó vẫn còn những hạn chế, chẳng hạn như khi có hai người sử dụng có cùng một vai trò, nhưng quyền truy xuất khác nhau, do có các thông tin ngữ cảnh khác nhau. Vì thế ta cần bổ sung thêm thông tin ngữ cảnh khi ra quyết định cho phép hay từ chối truy cập.Trên các Framework như EJB hay .Net Framework đều hỗ trợ RBAC, tuy nhiên khi cần điều khiển truy cập theo vai trò kết hợp với các thông tin ngữ cảnh khác của người dùng thì mỗi ứng dụng phải tự xây dựng module điều khiển truy cập, việc này nghĩa là ngoài việc cài đặt nghiệp vụ của 6 ứng dụng, họ còn phải lo phần bảo mật của ứng dụng. Việc tự cài đặt module điều khiển truy cập có thể bị sai sót, dẫn đến các kết quả đáng tiếc.Do vậy, tác giả đã đề xuất phương pháp mở rộng RBAC theo ngữ cảnh bằng phương sử dụng luật và triển khai đề xuất trên .Net Framework. Theo đó, các ứng dụng sẽ không cần phải xây dựng module điều khiển truy cập riêng, mà chỉ cần mô tả tài nguyên cần bảo vệ trong chương trình và định nghĩa các vai trò, các luật trong file điều khiển truy cập. Bố cục của luận văn như sau: Chương 1, luận văn nghiên cứu phương pháp điều khiển truy cập theovai trò, các mô hình điều khiển truy cập RBAC. Phân tích ưu, nhược điểm của RBAC. Chương 2, luận văn giới thiệu về điều khiển truy cập trong .Net Framework, các hạn chế của điều khiển truy cập trong .Net Framework. Chương 3, luận văn đề xuất một đặc tả truy cập dựa trên tệpmô tả, đặc tả truy cập dựa trên luật, đề xuất đặc tả cho phép mở rộng RBAC theo ngữ cảnh bằng cách kết hợp giữa đặc tả truy cập RBAC với luật.Cũng trong chương này luận văn đề xuất giải pháp triển khai đặc tả RBAC mở rộng với luật. Chương 4, luận văn đề xuất một ứng dụng thực tế sử dụng RBAC mở rộng như một demo cho phần triển khai RBAC mở rộng. 7 Chương 1. ĐIỀU KHIỂN TRUY CẬP THEO VAI TRÒ 1.1 Điều khiển truy cập Điều khiển truy cập là một phương thức dùng để hạn chế hoặc cho phép người dùng thực hiện thao tác nào đó trên tài nguyên[4]. Các tài nguyên ở đây được hiểu theo nghĩa rộng, nó có thể là các mục dữ liệu trong CSDL, tệp, máy in v.v. Các thao tác có thể là đọc, ghi, cập nhật v.v. Điều khiển quyền truy cập bao gồm các bước cơ bản:  Định danh người dùng (Identification): bước này xác định người dùng hệ thống là ai thông qua việc đưa ra thông tin định danh như username, số chứng minh thư nhân dân…  Xác thực người dùng (Authentication): bước này xác định xem người dùng có thực sự có định danh như bước trước hay không thông qua việc đưa ra thông tin xác thực như mật khẩu, vân tay mà chỉ người dùng đó biết hoặc sở hữu.  Kiểm soát quyền truy cập (Authorization): bước này xác định xem người dùng được làm gì trong hệ thống. Có nhiều phương pháp điều khiển truy cập khác nhau, song chúng được chia thành hai loại cơ bản: điều khiển truy cập bắt buộc (Mandatory Access Control - MAC) vàđiều khiển truy cập tuỳ quyền (Discretionary Access Control - DAC)[4]. 1.1.1 Điều khiển truy cập bắt buộc Điều khiển truy cập bắt buộc là khắt khe nhất trong tất cả các cấp kiểm soát[6]. Ban đầu MAC được thiết kế để sử dụng bởi chính phủ. MAC có một cách tiếp cận phân cấp để kiểm soát truy cập vào các nguồn tài nguyên. Với MAC, việc điều khiển truy cập tới tất cả các tài nguyên hệ thống được thiết lập bởi người quản trị hệ thống, hay nói cách khác người dùng không có khả năng thay đổi quyền truy cập trên các tài nguyên hệ thống. Trong MAC, mỗi đối tượng trong hệ thống được gán một mức nhạy cảm. Mức nhạy cảm của một chủ thể xác định khả năng truy cập của chủ thể.Để truy cập một đối tượng nào đấy, chủ thể phải có một mức độ nhạy cảm tương đồng hoặc cao hơn mức độ của đối tượng yêu cầu. 8 1.1.2 Điều khiển truy cập tuỳ quyền Với MAC, điều khiển truy cập được thiết lập bởi quản trị viên hệ thống (system administrator), thì vớiDAC, điều khiển truy cập trên một tài nguyên được thiết lập bởi người chủ của tài nguyênđó. DAC là cơ chế kiểm soát truy cập mặc định cho hầu hết các hệ điều hành máy tính cá nhân[6]. Trong DAC, mỗi tài nguyên hệ thống có một danh sách truy cập (Access Control List-ACL). ACL chứa danh sách người dùng, nhóm và quyền truy xuất cho mỗi người dùng, nhóm đó. Ví dụ, người dùngA có quyền read-only, người dùng có quyền read và write, nhóm quản trị có toàn quyền. Cơ chế của DAC linh hoạt hơn nhiều so với MAC, nhưng cũng làm tăng nguy cơ mất an toàn do không được quản lý tập trung bởi quản trị viên hệ thống. 1.1.3 Điều khiển truy cập theo vai trò Với điều khiển truy cậptheo vai trò, các quyết định truy cập dựa trên vai trò (role) mà người dùng thuộc về.Ví dụ, một kế toán trong một công ty sẽ được giao cho vai trò kế toán, được phép thực hiện các công việc liên quan đến kế toán.Tương tự như vậy, một kỹ sư phần mềm có thể được giao cho các vai trò nhà phát triển[6]. Khái niệm vai trò ở đây có điểm tương đồng với khái niệm nhóm.Nhóm người dùng thường được xem như như một tập hợp người dùng chứ không phải là một tập hợp các quyền hạn, trong khi một vai trò một mặt vừa là một tập hợp người dùng mặt khác lại là một tập hợp các quyền hạn. Trong RBAC mỗi người dùng được gắn với các vai trò, các vai trò được gán một tập quyền. Dongười dùng không được cấp phép quyền một cách trực tiếp, chỉ nhận được những quyền hạn thông qua vai trò (hoặc các vai trò) của họ, việc quản lý quyền hạn của người dùng trở thành một việc đơn giản, và người ta chỉ cần chỉ định những vai trò thích hợp cho người dùng mà thôi. 1.1.4 Điều khiển truy cập theo luật Điều khiển truy cập theo luật (Rule Based Access Control), quyết định cho phép hay từ chối truy cập được xác định bởi một tập các luật (rules) được định nghĩa bởi quản trị hệ thống. Tương tự như DAC, mỗi tài nguyên hệ thống sẽ có một danh sách các luật, khi người dùng truy cập đến tài nguyên, 9 hệ thống sẽ kiểm tra tất cả các luật trên tài nguyên đó để quyết định cho phép hay từ chối truy cập. Tương tự như MAC, người dùng không thể thay đổi được luật (quyền truy cập), chỉ có quản trị hệ thống mới có thể thay đổi được tập luật trên mỗi tài nguyên[6]. 1.2 Các mô hình tham chiếu RBAC Các mô hình tham chiếu RBAC bao gồm các phần tử cơ bản: - User (người dùng) - Role (vai trò) - Objects (các đối tượng): Là những đối tượng mà người dùng muốn truy xuất, ta còn gọi Object là những tài nguyên hệ thống (system resource). Ví dụ, như tệp, máy in, bản ghi trong cơ sở dữ liệu… - Operations (thao tác): Là các thao tác mà người dùng thực hiện trên Object. Ví dụ như read, write, print… - Permissions (quyền hạn): Quyền thực thi Operation của chủ thể trên Object. Có bốn mô hình tham chiếu RBAC: - RBAC cơ sở (Core RBAC), RBAC phân cấp (Hierarchical RBAC), RBAC ràng buộc tĩnh (Static Separation of Duty Relations) RBAC ràng buộc động (Dynamic Separation of Duty Relations). 1.2.1 Mô hình RBAC cơ sở Mô hình này (Hình 1.1) bao gồm các phần tử cơ bản: người dùng (USERS), vai trò (ROLES), các đối tượng (OBS), các thao tác (OPS), các quyền hạn (PRMS) và mỗi quan hệ giữa chúng.Ngoài ra, mô hình RBAC cơ sở còn bao gồm một tập các phiên làm việc (SESSIONS), mỗi phiên làm việc là một ánh xạ giữa một người dùng và một tập con các vai trò được phân công cho người dùng[4]. 10 (UA) User Assignment USERS ROLES (PA) Permission Assignment OPS OBS Us Ro le PRMS on ssi Se Se ssi on - er SESSIONS Hình 1.1:Mô hình RBAC[4] Một user được hiểu là một người dùng. Tuy nhiên khái niệm người dùng cần được hiểu theo nghĩa rộng, vì nó có thể là máy tính, tác nhân (agent) hay một hệ thống khác. Để đơn giản ta gọi chung là người dùng. Một role là một chức năng công việc trong ngữ cảnh của một tổ chức với một số ngữ nghĩa có liên quan về quyền hạn và trách nhiệm. Một permission là một quyền hạn được phê duyệt để thực hiện một hoạt động trên một hoặc nhiều đối tượng được bảo vệ. Một operationlà hành động của người dùng trên tài nguyên.Các operation có thể có phụ thuộc vào mỗi hệ thống cụ thể, mỗi loại tài nguyên cụ thể. Ví dụ, trong một hệ thống tập tin, các hoạt động có thể là read, write và execute; trong một hệ quản trị cơ sở dữ liệu, các hoạt động có thể là insert, update, và delete. Mục đích của bất kỳ cơ chế điều khiển truy cập nào là để bảo vệ tài nguyên hệ thống. Tuy nhiên, trong RBAC chúng ta sử dụng thuật ngữ đối tượng được bảo vệ để nói đến các đối tượng chứa thông tin cần được bảo vệ như tệp, thư mục, hệ điều hành, bản ghi trong cơ sở dữ liệu hoặc cũng có thể là máy in, ổ cứng, CPU. Mỗi phiên là một ánh xạ của một người dùng tới các vai trò có thể, một người dùng thiết lập một phiên trong đó người dùng kích hoạt một số tập con của vai trò mà họ được phân công.Mỗi phiên được liên kết với một người dùng duy nhất và mỗi người dùng kết hợp với một hoặc nhiều phiên. Đặc tả RBAC cơ sở[4]: 11 - - - - - USERS, ROLES, OPS, vàOBS (users, roles, operations, và objects). UA ⊆ USERS × ROLES, là quan hệ nhiều-nhiều giữa tập người dùng với tập vai trò, một người dùng có thể có nhiều vai trò, một vai trò có thể có nhiều người dùng. assigned_users(r:ROLES)→2USERS, ánh xạ của vai trò r trên một tập người dùng: assigned_users(r) = {u∈USERS | (u, r )∈ UA}. PRMS = 2(OPS × OBS), tập các quyền hạn. PA ⊆ PRMS × ROLES, là quan hệ nhiều-nhiều giữa tập quyền với tập vai trò, một vai trò có thể được cấp nhiều quyền, một quyền có thể được cấp cho nhiều vai trò. assigned_permissions(r: ROLES)→2PRMS, ánh xạ của vai trò r lên một tập các quyền hạn: assigned_permissions(r) = {p∈ PRMS | (p,r) ∈ PA}. Ob(p:PRMS) →{op ⊆ OPS}, ánh xạ quyền hạn tới hoạt động, một tập các hoạt động liên kết với quyền p. Ob(p: PRMS) →{ob⊆ OBS}, ánh xạ quyền hạn tới đối tượng, một tập các đối tượng liên kết với quyền p. SESSIONS, tập các phiên. user_sessions(u: USERS) → 2SESSIONS, ánh xạ của người dùng u tới một tập các phiên. session_roles(s: SESSIONS) → 2ROLES, ánh xạ của phiên s trên một tập các vai trò: session_roles(si) ⊆ {r ∈ ROLES | (session_users(si), r)∈ UA}. avail_session_perms(s: SESSIONS)→2PRMS, các quyền hạn có thể đối với một người dùng trong một phiên. 1.2.2 RBAC phân cấp RBAC phân cấp (Hình 1.2) thêm khái niệm về phân cấp vai trò vào RBAC cơ sở.Đó là những vai trò có quyền thừa kế từ các vai trò khác.Ví dụ, nếu vai trò r2 được thừa kế từ r1, và r1 có quyền thiết lập p1 khi đó r2 cũng sẽ có quyền thiết lập p1. 12 (RH) Role Hierarchy (UA) User Assignment USERS ROLES (PA) Permission Assignment OPS OBS Us Ro le PRMS on ssi Se Se ssi on - er SESSIONS Hình 1.2: Mô hình RBAC[4] Điểm mấu chốt của mô hình này là giữa các vai trò có thể có quan hệ kế thừa, nó cho phép một role con kế thừa tất cả các quền hạn của role cha.Có hai kiểu kế thừa đó là: Mô hình phân cấp vai trò tổng quát (General Role Hierarchies) và Mô hình phân cấp vai trò hạn chế (Limited Role Hierarchies)[4]. Mô hình phân cấp vai trò tổng quáthỗ trợ đa kế thừa (multiple inheritance). Điều này có nghĩa là một role có thể kế thừa từ nhiều role khác Định nghĩa hình thức[4]: 1. RH ROLES × ROLES được gọi là quan hệ kế thừa, viết tắt là , r1 r2 chỉ khi tất cả các quyền của r2 cũng là các quyền của r1 và tất cả người sử dụng của r1 cũng là những người sử dụng của r2. r1 r2authorized_permissions(r2) ⊆authorized_permissions(r1). 2. authorized_users(r: ROLES) → 2USERS, ánh xạ vai trò r lên trên một tập người dùng, authorized_users(r) = {u USERS | r’ r , (u, r’)  UA}. 3. authorized_permissions(r: ROLES) → 2PRMS, ánh xạ vai trò r lên trên một tập các quyền. authorized_permissions(r) = {p PRMS | r’ r, (p, r’)  PA}. Mô hình phân cấp vai trò hạn chế chỉ hỗ trợ kế thừa đơn, nghĩa là mỗi role chỉ có thể kế thừa từ một role khác. Về mặt định nghĩathì mô hình phân cấp vai trò hạn chế tương tự nhưmô hình phân cấp vai trò tổng quát, nhưng có thêm ràng buộc[4]: 13 r, r1, r2 ROLES, r r1∧ r r2⇒ r1 = r2 để đảm bảo mỗi role chỉ có thể kế thừa từ một role khác. 1.2.3 RBAC ràng buộc RBAC cho phép một người sử dụng có thể có nhiều vai trò khác nhau, các vai trò này có thể có các quyền hạn xung đột nhau.Chẳng hạn như trong hệ thống ngân hàng, các giao dịch được thực hiện bởi giao dịch viên, nhưng các giao dịch đó chỉ được thực hiện khi đã được phê duyệt bởi kiểm soát viên. Rõ ràng, trong ví dụ này, giao dịch viên và kiểm soát viên là hai vai trò xung đột nhau và trong thực tế không thể có chuyện một người vừa là giao dịch viên vừa là kiểm soát viên. Vì thế, cần bổ sung thêm các ràng buộc để tránh xung đột[4]. RBAC ràng buộc (Hình 1.3) thêm các quan hệ phân chia trách nhiệm (Separation of Duty - SoD) vào mô hình RBAC cơ sở. SoD được sử dụng để tránh xung đột về quyền hạn khi một người thuộc về các vai trò khác nhau. Mô hình RBAC ràng buộc được chia thành hai loại: Ràng buộc tĩnh (Static Separation of Duty Relations - SSD) vàràng buộc động (Dynamic Separation of Duty Relations - DSD). Ràng buộc tĩnh: SSD ⊆ (2ROLES × N) là một tập các cặp (rs, n) trong SoD tĩnh, vớirs là một tập vai trò, t là một tập con của rs, và n là một số tự nhiên ≥ 2, với đặc tính không có người dùng nào được gán tới n hoặc nhiều hơn vai trò từ tập hợp rs trong mỗi cặp (rs, n)∈ SSD. Một cách hình thức:  assigned_users(r) = Ø ∀(rs, n) ∈ SSD, ∀t ⊆rs : |t | ≥ n ⇒ r t Ràng buộc tĩnh với RBAC phân cấp: Đối với ràng buộc tĩnh trong mô hình RBAC phân cấp thì ta cần ràng buộc trên authorized users thay vì assigned users. Một cách hình thức thì:  authorized_users(r) = Ø ∀(rs, n) ∈ SSD, ∀t ⊆rs : |t | ≥ n ⇒ r t 14 (RH) Role Hierarchy SSD (UA) User Assignment USERS ROLES (PA) Permission Assignment OPS OBS Us Ro le PRMS on ssi Se Se ssi on - er SESSIONS Hình 1.3: Mô hình SSD với RBAC phân cấp[4] Ràng buộc động: SoD động (Hình 1.4) cũng giống SoD tĩnh ở chỗ cả hai đều được sử dụng để giới hạn các quyền có thể được cung cấp đến người dùng. DSD khác SSD ở giới hạn role được thiết lập trên mỗi phiên làm việc, điều này cho phép một người có thể có nhiều role có vai trò xung đột nhau, nhưng trong mỗi phiên làm việc thì các role được kích hoạt (active) là không xung đột. Hay nói cách khác DSD cho phép một người dùng được xác thực cho hai hoặc nhiều vai trò mà chúng xung đột nhau. (UA) User Assignment USERS ROLES (PA) Permission Assignment OPS OBS Us Ro le PRMS on ssi Se Se ssi on - er DSD SESSIONS Hình 1.4 :Mô hình DSD[4] DSD ⊆ (2ROLES× N) là tập của cặp (rs, n) trong DSD, trong đó mỗi rs là một tập các vai trò và n là một số tự nhiên ≥ 2, với đặc tính không có chủ thể nào có thể kích hoạt n hay nhiều vai trò từ tập rs trong mỗi dsd DSD[4]: ∀rs∈ 2ROLES, n ∈ N, (rs, n) ∈ DSD ⇒ n ≥ 2 ∧ |rs| ≥ n, và 15 ∀s ∈ SESSIONS, ∀rs∈2ROLES ,∀role_subset∈ 2ROLES, ∀n ∈ N, (rs, n) ∈ DSD, role_subset⊆rs, role_subset⊆session_roles(s) ⇒ |role_subset| < n 1.2.4 Ưunhược điểm của RBAC 1.2.4.1 Ưu điểmcủa RBAC - - Phù hợp với hầu hết các ứng dụng trong thực tế Mô hình đơn giản, hiệu quả Đơn giản trong việc quản trị quyền truy cập, thay vì quản lý quyền truy cập trên từng user ta sẽ quản lý quyền truy cập trên mỗi nhóm. Việc này giúp giảm công sức, thời gian cũng như giảm rủi ro do nhầm lẫn. Mô hình RBAC phân cấp hỗ trợ sự phân cấp vai trò (Role Hierarchies) với mối quan hệ cha-con, theo đó tất cả quyền hạn của vai trò cha được kế thừa bởi vai trò con. Điều này ngăn cản sự bùng nổ vai trò và tăng khả năng sử dụng lại trong mô hình RBAC. 1.2.4.2 Nhược điểm của RBAC Hầu hết các ứng dụng trong thực tế đều có thể điều khiển truy cập theo vai trò, vì thế RBAC có tính phổ dụng cao. Tuy nhiên, nó cũng có một vài hạn chế: - - Không phù hợp với các ứng dụng có tài nguyên cần bảo vệ là chưa biết trước Không phù hợp khi quy tắc điều khiển truy cập phức tạp, việc điều khiển truy cập không chỉ dựa vào thông tin về vai trò, mà còn phụ thuộc vào các thông tin ngữ cảnh khác. Không phù hợp với các ứng dụng mà một người dùng có thể mang nhiều vai trò mâu thuẫn nhau. Điều này phần nào được giải quyết với mô hình RBAC ràng buộc tĩnh hay động. Tuy nhiên, khi các quy tắc đảm bảo tính loại trừ là phức tạp và chưa biết trước thì RBAC ràng buộc không đáp ứng được hoặc khó cài đặt. 16 1.3 Định danh dựa trên tuyên bố (Claims-based identity) Claims-based identity là một cách phổ biến cho các ứng dụng khi cần thông tin nhận diện về người dùng trong tổ chức của họ hoặc trong tổ chức khác hoặc trên môi trường Internet.Nó cung cấp một cách tiếp cận thống nhất cho các ứng dụng [1]. 1.3.1 Tuyên bố (Claim) Một Claim là một phát biểu (Statement) về một thực thể (con người, tổ chức) được thực hiện bởi chính nó hoặc một người khác. Chủ thể cung cấp claim được gọi là provider hay issuer. Ví dụ: - Bob là một administrator Bob có địa chỉ email là [email protected] 1.3.2 Định danh (Identiy) Identity là một tập thông tin về một người dùng hoặc một thực thể được xác thực. Trong Claim based identity, mỗi Identity là một tập các claim của người dùng. 1.3.3 Principal Principallà một đối tượng đặc biệt nó gắn với ngữ cảnh bảo mật (security context) của người dùng, trong khi Identity là thông tin định danh người dùng. Mỗi thread có chứa một đối tượng Principal (Thread.CurrentPrincipal), thread này sẽ thực thi trong ngữ cảnh bảo mật của đối tượng Principal. Có thể hình dung Principal nhưmột thẻ bài (token) của người dùng trong ứng dụng. 1.4 RBACTRONG.NET FRAMEWORK .Net Framework hỗ trợ RBAC thông qua hai hình thức: khai báo (Declarative) và lập trình (Imperative) [5]. Ngoài ra, với ứng dụng ASP.NET còn hỗ trợ RBAC theo URL, hay với ASP.NET MVC đưa ra lớp AuthorizeAttribute để điều khiển truy cập trên các action của controller. 17 1.4.1 Kiểm tra vai trò dựa trên khai báo .Net Framework cung cấp lớp PrincipalPermissionAttribute cho phép ta chỉ định chỉ người dùng nào có vai trò nào đó mới có quyền thực thi phương thức bằng cách gắn khai báo ở đầu phương thức. Ví dụ, để đảm bảo rằng chỉ có người sử dụng có vai trò là giao dịch viên mới có thể thực thi phương thức Transfer ta làm như sau: [PrincipalPermission(SecurityAction.Demand, Role = "Teller")] void Transfer() { } Việc khai báo cho phương thức Transfer thuộc tính [PrincipalPermission(SecurityAction.Demand, Role = "Teller")] khiến .Net Framework phải kiểm tra xem người dùng hiện tại (Thread.CurrentPrincipal) có vai trò Teller hay không. Nếu người dùng hiện tại không có vai trò Teller thì một SecurityException sẽ được ném ra, và như vậy phương thức Transfer sẽ không được thực thi. 1.4.2 Kiểm tra vai trò trong mã nguồn Đôi khi ta không thể sử dụng cách thức khai báo như mục 1.4.1, bởi các lý do khác nhau như: ta chỉ muốn kiểm tra quyền truy cho một đoạn chương trình (block) mà thôi, thay vì toàn bộ phương thức, hoặc khi trong phương thức đó có nhiều vai trò cần kiểm tra dựa vào các điều kiện khác nhau. Với tình huống này ta cần đặt đoạn chương trình kiểm tra quyền truy cập vào bên trong code của phương thức. Mỗi Principal đều kế thừa từ IPrincipal, do đó để đảm bảo chỉ những role xác định được quyền truy cập tới một tài nguyên nào đó ta sử dụng phương thức IPrincipal.IsInRole . Ví dụ, để đảm bảo rằng chỉ có người sử dụng có vai trò là giao dịch viên mới có thể thực thi một tác vụ nào đó ta sẽ kiểm tra như sau: if (Thread.CurrentPrincipal.IsInRole("Teller"){ //Thực thi tác vụ nào đó mà chỉ có giao dị ch viên mới được phép } 1.4.3 RBAC với ứng dụng ASP.NET .Net Framework cho phép điều khiển truy cập theo URL thông qua việc thiết lập trong tệpweb.config của ứng dụng. Ví dụ, chỉ có người sử dụng có role là 18
- Xem thêm -

Tài liệu liên quan