3.4.1.1. Administrative commands cho core RBAC AddUser
Tạo ra một người sử dụng mới. Câu lệnh này chỉ có hiệu lực khi mà người sử dụng này chưa là thành viên của tập hợp USERS dataset(chưa có tài khoản trong hệ thống). Sau khi thêm mới người sử dụng USERS dataset sẽ được cập nhật.
DeleteUser
Xóa bỏ một người sử dụng đang tồn tại trong cơ sở dữ liệu RBAC. Câu lệnh chỉ có hiệu lực khi người sử dụng đang là thành viên của USERS dataset. Sau khi xóa
thành công USERS, UA dataset và phương thức assigned_users sẽ được cập nhật.
AddRole
Tạo ra một vai trò mới. Lệnh này chỉ thực sự có hiệu lực nếu và chỉ nếu vai trò này chưa là một thành viên của ROLES dataset.
Hình thức hóa chức năng này như sau:
DeleteRole
Xóa bỏ một vai trò đang tồn tại trong cơ sở dữ liệu RBAC. Câu lệnh này chỉ có tác dụng nếu và chỉ nếu vai trò cần xóa này đang là một thành viên của ROLES dataset.
AssignUser
Gán một người sủ dụng vào một vai trò. Câu lệnh chỉ có tác dụng nếu và chỉ nếu người sử dụng đang là một thành viên của USERS dataset và vai trò mà người sử dụng được gán vào phải đang là thành viên của ROLES dataset.
Hình thức hóa chức năng này như sau:
DeassignUser
Loại bỏ một người sử dụng khỏi một vai trò. Câu lệnh này chỉ có tác dụng nếu và chỉ nếu người sử dụng đang là một thành viên của USERS dataset, vai trò mà người sử dụng sẽ bị loại ra đang là thành viên của ROLES dataset và người sử dụng đã được gán vào vai trò này từ trước đó.
GrantPermission
Cấp cho vai trò một số quyền để có thể thao tác trên các đối tượng. Lệnh này chỉ có tác dụng nếu như vai trò này đang là thành viên của ROLES dataset.
Hình thức hóa chức năng này như sau:
RevokePermission
Gỡ bỏ các quyền đã cấp cho một vai trò. Lệnh này chỉ có tác dụng nếu như vai trò này đang là thành viên của ROLES dataset.
Hình thức hóa chức năng này như sau:
3.4.1.2. Các chức năng hỗ trợ hệ thống cho core RBAC CreateSession(user, session)
Tạo ra một session – hay phiên làm việc mới. hàm này sẽ được gọi khi người dùng lần đầu tiên đăng nhập vào hệ thống đồng thời sẽ kích hoạt tất cả vai trò mà đang quản lý người sử dụng này. Qúa trình tạo ra một session này chỉ có tác dụng nếu và chỉ nếu:
Người sử dụng là thành viên của USERS dataset
Tập hợp các vai trò được kích hoạt là một tập con của tập tất cả các vai trò được gán tới người sử dụng
DeleteSession(user, session)
Xóa bỏ một session gắn với một người sử dụng. Hàm này chỉ có tác dụng nếu và chỉ nếu session identifier là một thành viên của SESSION dataset, người sử dụng là một thành viên của USERS dataset và session này được nắm giữa bởi người sử dụng hiện tại.
Hình thức hóa chức năng này như sau:
AddActiveRole
Hàm này sẽ thêm mới một vai trò giống như một vai trò được kích hoạt trong một session.mà một người sử dụng đang ánh xạ đến. hàm này chỉ có tác dụng nếu và chỉ nếu:
Người sử dụng là thành viên của USERS dataset
Vai trò là thành viên của ROLES dataset
Session identifier là thành viên của SESSION dataset
Vai trò này đã được gán cho người sử dụng hiện tại từ trước
Session đang được nắm giữ bởi người sử dụng
DropActiveRole
Xóa một vai trò ra khỏi tập hợp các vai trò đang được kích hoạt trong một session đang ánh xạ đến một người sử dụng. hàm này trái ngược lại với hàm AddActiveRole.
Hình thức hóa chức năng này như sau:
CheckAccess
Hàm này trả về một giá trị Boolean để kiểm tra xem chủ thể của một session có được phép thực hiện một hành động nào đó (operaion) lên một đối tượng nào đó hay không. Hàm này chỉ có tác dụng nếu và chỉ nếu:
Session indentifier là thành viênc của SESSION dataset.
Đối tượng là một thành viên của OBJ dataset
Operation là một thành viên của OPS dataset
Quyền này đã được cấp cho một trong các vai trò đã được kích hoạt của
session này
3.4.1.3. Các chức năng review cho Core RBAC AssignedUsers
Hàm này trả về một tập hợp người sử dụng đã được gán tới một vai trò nào đó. Hàm này chỉ có tác dụng nếu và chỉ nếu vai trò là một thành viên của ROLES dataset.
Hình thức hóa chức năng này như sau:
AssignedRoles
Hàm này trả về một tập hợp các vai trò đã được gán tới một người sử dụng nào đó. Hàm này chỉ có tác dụng nếu và chỉ nếu người sử dụng là thành viên của USERS dataset.
Hình thức hóa chức năng này như sau:
3.4.1.4. Các chức năng review cao cấp cho Core RBAC RolePermissions
Hàm này trả về một tập hợp các quyền (op, obj) được cấp cho một vai trò. Hàm này chỉ có tác dụng nếu và chỉ nếu vai trò là thành viên của ROLES dataset.
UserPermissions
Hàm này trả về các quyền mà một người sử dụng được cấp thông qua vai trò của anh ta/cô ta được gán. Hàm này chỉ có tác dụng nếu và chỉ nếu người sử dụng là một thành viênc của USERS dataset.
Hình thức hóa chức năng này như sau:
SessionRoles
Hàm này trả về các quyền một session nào đó. Các quyền này được cấp cho các vai trò đang được kích hoạt bởi session. Hàm này chỉ có tác dụng nếu và chỉ nếu session indentifier là một thành viên của SESSION dataset.
Hình thức hóa chức năng này như sau:
RoleOperationsOnObject
Hàm này trả về một tập hợp các hành động mà một vai trò được phép thực hiện trên một tập hợp đối tượng nào đó. Hàm này chỉ có tác dụng nếu và chỉ nếu vai trò là một thành viên của ROLES dataset, đối tượng là một thành viên của OBJ dataset.
UserOperationsOnObject
Hàm này trả về một tập hợp các quyền mà một người sử dụng có thể được phép thực thi trên một tập hợp đối tượng nào đó. Hàm này chỉ có tác dụng nếu và chỉ nếu người sử dụng là thành viên của USERS dataset, đối tượng là thành viên của OBJ dataset.
Hình thức hóa chức năng này như sau:
3.4.2. Role hierarchy
3.4.2.1. Administrative commands cho role hierarchy tổng quát AddInheritance
câu lệnh này khởi tạo một quan hệ kế thừa trực tiếp giữa các vai trò r_asc và
r_desc. Câu lệnh này chỉ có tác dụng nếu và chỉ nếu r_asc và r_desc là thành viên của
ROLE data set, r_desc chưa kếu thừa r_asc . schema dưới đây sử dụng các ký hiệu:
DeleteInheritance
Câu lệnh này xóa bỏ một mối quan hệ kế thừa giữa r_asc và r_desc. Lệnh này chỉ có tác dụng nếu và chỉ nếu r_asc và r_desc là thành viên của ROLE dataset và r_desc đang kế thừa r_asc.
Hình thức hóa chức năng này như sau:
AddAscendant
Câu lệnh này tạo ra một vai trò mới có tên r_asc, và thêm nó vào trong role hieararchy giống như nó là đối tượng cơ sở của r_desc. Câu lệnh này chỉ có tác dụng nếu và chỉ nếu r_asc chưa là một thành viên của ROLE dataset, r_desc là thành viên của ROLE data set.
Hình thức hóa chức năng này như sau:
AddDescendant
Câu lệnh này thực hiện việc tạo ra một vai trò mới có tên r_desc và thêm nó vào role hierarchy giống như nó không phải là đối tượng kế thừa của r_asc. Câu lệnh này chỉ có tác dụng nếu và chỉ nếu r_desc chưa phải là thành viên của ROLE data set.
Hình thức hóa chức năng này như sau:
3.4.2.2. Các chức năng hệ thống cho role hierarchy CreateSession(user, session)
Câu lệnh này khởi tạo ra một phiên làm việc mới cho một người sử dụng đồng thời điều chỉnh các vai trò được kích hoạt. câu lệnh này chỉ có tác dụng nếu và chỉ nếu:
Người sử dụng là một thành viên của USER data set
Vai trò được kích hoạt là thành viên của tập các vai trò được phép xác thực cho người sử dụng này. Chú ý rằng khi một vai trò được kích hoạt cho một phiên làm việc thì các vai trò kế thừa nó cũng như các vai trò nó kế thừa sẽ không được phép kích hoạt cho session này.
Hình thức hóa chức năng này như sau:
AddActiveRole
Câu lệnh kích hoạt một vai trò mới cho một phiên làm việc của một người sử dụng. câu lệnh này chỉ có tác dụng nếu và chỉ nếu:
Người sử dụng là thành viên của USER data set
Vai trò được kích hoạt mới là thành viên của ROLE data set
Phiên làm việc hiện tại là thành viên của SESSION data set
Người sử dụng được xác thực cho vai trò đó, và
Session được nắm giữ bởi người sử dụng này
3.4.2.3. Các chức năng review cho role hierarchy tổng quát AuthorizedUsers
Câu lệnh này trả lại một tập hợp những người sử dụng được xác thực cho một vai trò hiện tại. Những người sử dụng này được gán tới một vai trò mà vai trò này lại kế thừa vai trò hiện tại. Câu lệnh này chỉ có tác dụng nếu và chỉ nếu vai trò hiện tại là thành viên của ROLE data set.
Hình thức hóa chức năng này như sau:
AuthorizedRoles
Câu lệnh này trả lại một tập hợp các vai trò được xác thực cho một người sử dụng. Câu lệnh này chỉ có tác dụng nếu và chỉ nếu người sử dụng là thành viên của USER data set.
3.4.2.4 – Các chức năng review cao cấp cho role hierarchy RolePermissions
Câu lệnh này trả về một tập hợp tất cả các quyền (op, obj) được gán hoặc được kế thừa bởi một vai trò hiện tại. Câu lệnh này chỉ có tác dụng nếu và chỉ nếu vai trò hiện tại là thành viên của ROLE data set.
Hình thức hóa chức năng này như sau:
UserPermissions
Câu lệnh này trả lại một tập hợp các quyền của một người sử dụng, được lấy thông qua các vai trò được xác thực của anh ta. Câu lệnh này chỉ tồn tại nếu và chỉ nếu người sử dụng là thành viên của USER data set.
Hình thức hóa chức năng này như sau:
RoleOperationsOnObject
Câu lệnh này trả lại một tập hơp các hành động mà một vai trò được phép thực hiện trên một đối tượng hiện tại. Tập hợp này chứa đựng toàn bộ các hành động được gán trực tiếp cho vai trò hay vai trò hiện tại kế thừa từ các vai trò khác. Câu lệnh này chỉ có tác dụng nếu và chỉ nếu vai trò là một thành viên của ROLE data set, đối tượng hiện tại là một thành viên của OBJS data set.
UserOperationsOnObject
Câu lệnh này trả lại một tập hợp các hành động mà một người sử dụng được phép thực hiện trong trên một đối tượng hiện tại. Tập hợp này chứa đựng tất cả các hành động của người sử dụng thông qua các vai trò được xác thực của anh ta. Câu lệnh này chỉ có tác dụng nếu và chỉ nếu người sử dụng là thành viên của USER data set. Đối tượng hiện tại là thành viên của OBJS data set.
CHƯƠNG 4. PHÂN TÍCH VÀ THIẾT KẾ CÔNG CỤ HỖ TRỢ
Trong chương này chúng tôi sẽ tập trung vào việc thiết kế một ứng dụng minh họa việc triển khai mô hình RBAC vào cài đặt thực tế để quản lý và điều khiển truy cập. Ứng dụng này sẽ tập trung vào việc mô tả và cài đặt những chức năng cơ bản nhất mà một hệ thống RBAC phải có. Các chức năng này bao gồm : chức năng quản lý các vai trò, quản lý người sử dụng, quản lý các đối tượng và quyền thực thi trên các đối tượng này, quản lý các đặc quyền của các vai trò.
Việc cài đặt mô hình RBAC sao cho đảm bảo được mọi yêu cầu như: xử lý các ràng buộc, các xung đột quyền lợi, kiểm tra hiệu năng… mà lý thuyết đã chỉ ra là một việc không hề đơn giản, đòi hỏi nhiều thời gian và công sức cũng như kinh nghiệm. Trong khuân khổ của khóa luận này, chúng tôi sẽ tạm thời không xử lý đến những vấn đề đó. Mục đích chính của việc cài đặt này là làm sáng tỏ hơn các khái niệm vai trò (role), các quyền (permission), hay các phiên làm việc (session).
Mặt khác chúng ta biết rằng mô hình RBAC được đưa ra để áp dụng cho những ứng dụng đa người dùng (multi user), chính vì lý do đó chúng tôi quyết định triển khai ứng dụng trên nền web – một kiểu ứng dụng đa người dùng phổ biến nhất hiện nay. Việc triển khai RBAC trên nền web cũng là một việc hết sức thiết thực bởi thế giới công nghệ đang chuyển mình nhanh chóng sang nền web, các ứng dụng chỉ chạy trên desktop đã dần trở nên lỗi thời và bộc lộ nhiều bất cập.
Một điểm nữa là theo truyền thống, các ứng dụng web thường chia làm hai phần riêng biệt: phần dành cho người quản trị (back-end) và phần dành cho người sử dụng bình thường. Tuy nhiên như đã thảo luận ở trên, ứng dụng của chúng ta áp dụng mô hình RBAC vào để quản lý và điều khiển truy cập. Với lý do đó chúng tôi chỉ xây dựng phần dành cho người quản trị, bởi đây là khu vực mà người quản trị bảo mật sẽ làm việc, điều khiển, cấp quyền truy cập cho các vai trò tới các tài nguyên của hệ thống, quản lý và theo dõi từng người dùng.
4.1.Mô hình use case