Điều khiển truy cập trongtrong ứng dụng chia sẻtệp

Một phần của 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 (Trang 53)

3.2.7.1 Điều khiển truy cập thư mục

Như được đề cập trong phần 3.1, điều khiển truy cập được thiết lập trên thư mục. Trên mỗi thư mục, người dùng có thể thực hiện các thao tác:

- ViewFolder: Hiển thị nội dung thư mục

- CreateFolder: Tạo thư mục

- RemoveFolder: Xoá thư mục

- DownloadFile: Tải xuống một tệp trong thư mục

- UploadFile: Tải lên một tệp vào thư mục

- DeleteFile: Xoá một tệp khỏi thư mục

Tài nguyên cần được bảo vệ trong tình huống này là các thư mục. Tuy nhiên, các thư mục được tạo ra động theo thời gian. Vì thế, định danh của tài nguyên được bảo vệ là chưa biết trước và không cố định. Do vậy, ta không thể dùng phương pháp mô tả (declarative) được, hay nói cách khác ta phải chèn mã điều khiển truy cập vào trước đoạn code truy cập vào thư mục. Ví dụ, để kiểm

tra quyền truy cập ViewFolder trong phương thức GetFolderContent ta chèn

ClaimPermission.Demandvào trước đoạn code lấy nội dung thư mục.

/// <summary>

/// Gets the content of the folder. /// </summary>

/// <param name="folderId">The folder id.</param> /// <returns>List{TệpStorage}.</returns>

public List<FileStorage>GetFolderContent(intfolderId) {

// Check permission before accessing to the folder

ClaimPermission.Demand(folderId.ToString(),"ViewFolder");

// Get content of the folder if has ViewFolder permission

returnDbContext.FileStorage.Where(f

=>f.Parent==folderId).OrderBy(it=>it.IsFile).ToList(); }

3.2.7.2 Điều khiển truy cập người dùng

Với chức năng quản lý người dùng, tài nguyên cần bảo vệ ở đây là thông tin người dùng. Với tài nguyên này, các thao tác gồm:

- List: Hiển thị danh sách người dùng

- Create: Tạo tài khoản người dùng

52

- Details: Xem thông tin chi tiết người dùng

- Delete: Xoá người dùng

Do tài nguyên cần được bảo vệ là tĩnh, nên ta có thể dùng phương pháp declarative cho phương thức truy xuất tài nguyên. Ví dụ, phương thức

ListUserđể lấy về danh sách người dùng, ta có thể khai báo như sau:

/// <summary>

/// Lists the user. /// </summary>

/// <returns>List{ListUserViewModel}.</returns>

[ClaimPermission(Resource="User", Operation="List")]

public List<ListUserViewModel>ListUser() {

}

3.2.7.3 Ẩn, hiện chức năng trên giao diện người dùng theo vai trò

Để tránh người dùng thực hiện các chức năng không được phép, ta nên ẩn các chức năng mà họ không có quyền truy xuất trên giao diện người dùng. Ví dụ, để ẩn chức năng tạo thư mục ta làm như sau:

if(ClaimPermission.CheckAccess(Model.CurrentFolderId.ToString(),"CreateFo

lder")) {

@Html.ActionLink("Create Folder","CreateFolder",new{parentDirId=

@Model.CurrentFolderId})

}

3.2.7.4 Tệp mô tả điều khiển truy cập trong hệ thống chia sẻ tệp

<?xmlversion="1.0"encoding="utf-8" ?> <AccessControl>

<Rules>

<RuleId="HCMRule"Description="Cac nhan thuoc chi nhanh HCM"> <ConditionsOperator="Equal">

<Parameter>

<ClaimItemClaimType="http://application/claims/authorization/branch"/> </Parameter>

<Parameter>

<ConstantValue="HCM"/> </Parameter>

</Conditions>

<Action>Allow</Action> </Rule>

<RuleId="HNRule"Description="Cac nhan thuoc chi nhanh HN"> <ConditionsOperator="Equal">

<Parameter>

<ClaimItemClaimType="http://application/claims/authorization/branch"/> </Parameter>

<Parameter>

53

</Parameter> </Conditions>

<Action>Allow</Action> </Rule>

</Rules> <Resources>

<ResourceName="1">

<OperationName="ViewFolder"> <RoleName="Admin"></Role>

<RoleName="Manager, Teller, AO"RuleId="HCMRule"></Role> </Operation>

<OperationName="CreateFolder"> <RoleName="Admin"></Role> </Operation>

<OperationName="RemoveFolder"> <RoleName="Admin"></Role> </Operation>

<OperationName="DownloadFile"> <RoleName="Admin"></Role>

<RoleName="Manager"RuleId="HCMRule"></Role> </Operation>

<OperationName="UploadFile"> <RoleName="Admin"></Role> </Operation>

<OperationName="DeleteFile"> <RoleName="Admin"></Role> </Operation>

</Resource>

<ResourceName="3">

<OperationName="ViewFolder"> <RoleName="Admin"></Role>

<RoleName="Manager"RuleId="HCMRule"></Role> <RoleName="Teller"RuleId="HCMRule"></Role> </Operation>

<OperationName="CreateFolder"> <RoleName="Admin"></Role> </Operation>

<OperationName="RemoveFolder"> <RoleName="Admin"></Role> </Operation>

<OperationName="DownloadFile"> <RoleName="Admin"></Role>

<RoleName="Manager, Teller"RuleId="HCMRule"></Role> </Operation>

<OperationName="UploadFile"> <RoleName="Admin"></Role> </Operation>

<OperationName="DeleteFile"> <RoleName="Admin"></Role> </Operation>

</Resource>

<ResourceName="5">

<OperationName="ViewFolder"> <RoleName="Admin"></Role>

<RoleName="Manager"RuleId="HCMRule"></Role> <RoleName="AO"RuleId="HCMRule"></Role> </Operation>

<OperationName="CreateFolder"> <RoleName="Admin"></Role>

54

</Operation>

<OperationName="RemoveFolder"> <RoleName="Admin"></Role> </Operation>

<OperationName="DownloadFile"> <RoleName="Admin"></Role>

<RoleName="Manager"RuleId="HCMRule"></Role> <RoleName="AO"RuleId="HCMRule"></Role> </Operation>

<OperationName="UploadFile"> <RoleName="Admin"></Role> </Operation>

<OperationName="DeleteFile"> <RoleName="Admin"></Role> </Operation>

</Resource>

<ResourceName="6">

<OperationName="ViewFolder"> <RoleName="Admin"></Role>

<RoleName="Manager, Teller, AO"RuleId="HNRule"></Role> </Operation>

<OperationName="CreateFolder"> <RoleName="Admin"></Role> </Operation>

<OperationName="RemoveFolder"> <RoleName="Admin"></Role> </Operation>

<OperationName="DownloadFile"> <RoleName="Admin"></Role>

<RoleName="Manager"RuleId="HNRule"></Role> </Operation>

<OperationName="UploadFile"> <RoleName="Admin"></Role> </Operation>

<OperationName="DeleteFile"> <RoleName="Admin"></Role> </Operation>

</Resource>

<ResourceName="7">

<OperationName="ViewFolder"> <RoleName="Admin"></Role>

<RoleName="Manager"RuleId="HNRule"></Role> <RoleName="Teller"RuleId="HNRule"></Role> </Operation>

<OperationName="CreateFolder"> <RoleName="Admin"></Role> </Operation>

<OperationName="RemoveFolder"> <RoleName="Admin"></Role> </Operation>

<OperationName="DownloadFile"> <RoleName="Admin"></Role>

<RoleName="Manager"RuleId="HNRule"></Role> <RoleName="Teller"RuleId="HNRule"></Role> </Operation>

<OperationName="UploadFile"> <RoleName="Admin"></Role> </Operation>

55

<RoleName="Admin"></Role> </Operation>

</Resource>

<ResourceName="8">

<OperationName="ViewFolder"> <RoleName="Admin"></Role>

<RoleName="Manager"RuleId="HNRule"></Role> <RoleName="AO"RuleId="HNRule"></Role> </Operation>

<OperationName="CreateFolder"> <RoleName="Admin"></Role> </Operation>

<OperationName="RemoveFolder"> <RoleName="Admin"></Role> </Operation>

<OperationName="DownloadFile"> <RoleName="Admin"></Role>

<RoleName="Manager"RuleId="HNRule"></Role> <RoleName="AO"RuleId="HNRule"></Role> </Operation>

<OperationName="UploadFile"> <RoleName="Admin"></Role> </Operation>

<OperationName="DeleteFile"> <RoleName="Admin"></Role> </Operation>

</Resource>

<ResourceName="User"> <OperationName="List"> <RoleName="Admin"></Role> </Operation>

<OperationName="Create"> <RoleName="Admin"></Role> </Operation>

<OperationName="Update"> <RoleName="Admin"></Role> </Operation>

<OperationName="Delete"> <RoleName="Admin"></Role> </Operation>

<OperationName="Details"> <RoleName="Admin"></Role> </Operation>

</Resource> </Resources> </AccessControl>

Giả thiết rằng ta có hai chi nhánh là Hà Nội và Tp. Hồ Chí Minh, vì thế ta sẽ tạo ra hai luật:

<Rule Id="HCMRule" Description="Cac nhan thuoc chi nhanh HCM">…</Rule> <Rule Id="HN" Description="Cac nhan thuoc chi nhanh HN">…</Rule>

56

Hai luật này sẽ được gắn với các thư mục tương ứng của mỗi chi nhánh. Ví dụ như:

<Operation Name="DownloadFile"> <Role Name="Admin"></Role>

<Role Name="Manager, Teller "RuleId="HCMRule"></Role> </Operation>

57

KẾT LUẬN

Có nhiều phương pháp điều khiển truy cập khác nhau, RBAC là một phương pháp đơn giản, nhưng khá hiệu quả, vì thế nó được sử dụng rộng rãi.Các mô hình RBAC phân cấp, RBAC ràng buộc cho phép sử dụng RBAC cho một lớp rộng hơn các bài toán. RBAC sử dụng thông tin vai trò của người dùng để điều khiển truy cập, cách tiếp cận này có thể áp dụng cho hầu hết các bài toán thực tế, song nó chưa linh hoạt, đặc biệt là khi quyết định truy cập hay từ chối dựa vào các thông tin ngữ cảnh của người dùng. Vì thế, việc ra quyết định cho phép, hay từ chối truy cập ngoài việc sử dụng thông tin vai trò còn phải sử dụng các thông tin ngữ cảnh khác của người dùng. Do đó, luận văn này đề xuất phương pháp mở rộng RBAC theo ngữ cảnh bằng cách sử dụng luật. Sau thời gian tìm hiểu, nghiên cứu, chúng tôi đã đạt được một số kết quả như sau:

Thứ nhất, tìm hiểu các phương pháp điều khiển truy cập MAC, DAC, RBAC, Rule based access control, các mô hình tham chiếu 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.Phân tích các ưu, nhược điểm của RBAC.

Thứ hai, tìm hiểu về Claims-based indenty và điều khiển truy cập RBAC trong .Net Framework, các cách sử dụng RBAC khác nhau được hỗ trợ trong .Net Framework. Phân tích các hạn chế của RBAC được hỗ trợ trong .Net Framework.

Thứ ba, đề xuất đặc tả điều khiển truy cập theovai trò, theo luật và kết hợp giữa vai trò và luật. Các đặc tả này là độc lập với code, vì thế nó có thể được lưu trong file hoặc database.Hơn nữa, các đặc tả này hướng đến đối tượng được bảo vệ hơn là các phương thức.

Thứ tư, triển khai RBAC mở rộng với luật. Chúng tôi đã xây dựng một framework bao gồm các dịch vụ xác thực người dùng và điều khiển truy cập theo vai trò được mở rộng với luật. Framework này có thể được sử dụng cho các ứng dụng có sử dụng điều khiển truy cập theo vai trò, đặc biệt là các ứng dụng điều khiển truy cập theo vai trò kèm theo các điều kiện. Theo đó, các ứng dụng sẽ không cần phải tự xây dựng các quy tắc điều khiển truy cập bằng chương trình, 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. Hay nói cách

58

khác các quy tác điều khiển truy cập được mô tả trong tệp xml, và có thể được thay đổi dễ dàng sau khi ứng dụng đã được xây dựng mà không cần thay đổi chương trình nguồn. Ngoài ra framework sử dụng cơ chế giám sát sự thay đổi của tệp tin chứa quy tắc điều khiển truy cập để nạp lại các quy tắc mới nhất, do đó ta có thể thay đổi các quy tắc điều khiển truy cập trong khi ứng dụng đang thực thi mà không cần phải khởi động lại ứng dụng.

Thứ năm, triển khai ứng dụng chia sẻ tệp trong ngân hàng, sử dụng điều khiển truy cập RBAC mở rộng. Điều khiển truy cập trong bài toán chia sẻ file dựa vào hai yếu tố là vai trò và chi nhánh của người dùng vì thế RBAC không thể giải quyết được bài toán này.RBAC mở rộng với luậtlà một giải pháp phù hợp cho bài toán này.

Đề tài đã đặt được kết quả nhất định, song còn các mặt hạn chế như: Thông tin điều khiển truy cập được lưu vào tệp xml, chưa hỗ trợ lưu thông tin điều khiển truy cập với database.Thêm vào đó, quản trị viên gặp khó khăn khi làm việc trực tiếp với tệp xml, đặc biệt là với luật.Hướng nghiên cứu tiếp theo nhằm giải quyết các hạn chế trên.Cụ thể là cho phép lưu thông tin điều khiển truy cập trên nhiều nguồn khác nhau, như database và xây dựng công cụ trực quan giúp quản trị viên làm việc dễ dàng hơn với file xml đặc biệt là có thể kiểm tra tính hợp lệ của luật.

59

TÀI LIỆU THAM KHẢO

[1]. Dominick Baier (2010), “A Guide to Claims-based Identity”. Microsoft

Publishing.

[2]. Rick G. Garibay (2012), “Microsoft Windows Identity Foundation

Cookbook”. Packt Publishing.

[3]. Vittorio Bertocci (2010). “Programming Windows Identity Foundation”.

Microsoft Publishing.

[4]. Ninghui Li (2004), “A Critique of the ANSI Standard on Role Based

Access Control”, CERIAS and Department of Computer Science Purdue University.

[5]. Jason Bock (2002), “.NET Security”. ApressPublishing.

[6]. Neil Smyth (2009),“Security+ Essentials”. Payload MediaPublishing.

[7]. Jeffrey Palermo (2012). “ASP.NET MVC 4 in Action”. Manning

Publications.

[8]. DOD (1985), Trusted Computer System Evaluation Criteria (TCSEC).

Department of DefenseStandard 5200.28-STD (OrangeBook).

[9]. David F. Ferraioloand R. Kuhn (1992), “Role-Based Access Control”, In

Proceedings of 15th NIST-NCSC National Computer Security Conference, pp. 554-563.

[10].David F. Ferraiolo, Ravi Sandhu, SerbanGavrila, D. Richard Kuhn, and

RamaswamyChandramouli (2001), “Proposed NIST Standard for Role-

Based Access Control”, ACM Transactions on Information and System

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

[11].U. Lindqvistand E. Jonsson (1998), “A Map of Security Risks

Associated with Using COTS”, Computer, vol. 31, no. 6, pp. 60–66.

IEEE Computer Society.

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

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

[13].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.

[14].Jonathan D. Moffett. Control principles and role hierarchies. In

Proceedings of the Third ACM Workshop on Role-Based Access Control (RBAC 1998), October 1998

[15].Trent Jaeger and Jonathon E. Tidswell. Practical safety in flexible access

control models. ACM Transactions on Information and System Security, 4(2):158–190, May 2001

Một phần của 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 (Trang 53)

Tải bản đầy đủ (PDF)

(61 trang)