Biểu đồ use case

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu về điều khiển truy cập sử dụng mô hình RBAC mở rộng (Trang 45)

3.2.3 Lựa chọn nền tảng, công nghệ

Theo các yêu cầu bài toán, chúng tôi lựa chọn công nghệ sau:

- Sử dụng nền web, triển khai theo mô hình MVC trên ASP.NET MVC

Framework.

- Sử dụng database để lưu tổ chức thư mục, tệp tin.

- Sử dụng hệ thống file trên đĩa cứng để lưu các file được upload.

- Sử dụng module Authentication để thực hiện phần xác thực người dùng

- Sử dụng module Authorization để điều khiển truy cập trên thư mục

- Sử dụng Entity Framework để truy cập database

3.2.4 Kiến trúc ứng dụng

- Model: Định nghĩa các lớp trong domain model

- DbContext: Định nghĩa các domain context để truy cập database

- Repository: Định nghĩa các repository, để trừu tượng hóa các thao tác với

database

- Web: là thành phần web được xây dựng theo mô hình MVC

DbContext Repository Web M o d el Entity Framework Net Framework Authentication Authorization ClaimMemebership V ie w M o d el Hình 3.2: Kiến trúc ứng dụng chia sẻ tệp

3.2.5 Biểu đồ lớp

Hình 3.3: Biểu đồ lớp

Lớp Ý nghĩa

FileStorage Biểu diễn thông tin một tệp hoặc thư

mục được lưu trong CSDL

User Biểu diễn cho một người dùng trong hệ

thống

Role Biểu diễn cho một vai trò

ClaimTypeDef Định nghĩ các claim type được sử dụng

trong hệ thống

Claim Biểu diễn thông tin của một claim gắn

Bảng 3.1: Ý nghĩa các lớp trong ứng dụng chia sẻ tệp

3.2.6 Biểu đồ trình tự

Để thấy được tương tác bên trong hệ thống của mỗi chức năng ta xét các biểu đồ trình tự.Các biểu đồ này cũng cho thấy việc điều khiển truy cập trong mỗi chức năng được diễn ra ở đâu trong một dãy các bước thực hiện.

3.2.6.1 Hiển thị nội dung thư mục

Hình 3.4: Biểu đồ trình tự Hiển thị nội dung thư mục

Hình 3.5: Biểu đồ trình tự Tạo thư mục

3.2.6.3 Upload file

Hình 3.6: Biểu đồ trình tự Upload file

Hình 3.7: Biểu đồ trình tự Download file

3.2.6.5 Xóa thư mục, tệp

Hình 3.8: Biểu đồ trình tự Xóa thư mục, tệp

3.2.6.6 Hiển thị danh sách người dùng

3.2.6.7 Tạo người dùng

3.2.6.8 Cập nhật thông tin người dùng

Hình 3.11: Biểu đồ trình tự Cập nhật thông tin người dùng

3.2.6.9 Xóa người dùng

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

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

- 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> </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>

</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>

<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>

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>

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à

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ể

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu về điều khiển truy cập sử dụng mô hình RBAC mở rộng (Trang 45)

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

(61 trang)